MySQL主从复制与读写分离实验

实验一、MySQL主从服务器搭建

实验前准备
Master服务器:192.168.188.14   mysql5.7
Slave服务器1:192.168.188.15   mysql5.7
Slave服务器2:192.168.188.16   mysql5.7
关闭虚拟机防火墙
systemctl stop firewalld
setenforce 0

  1. 主服务器准备
    1. 安装相关软件
      yum -y install ntp
    2. 修改ntp配置
      vim /etc/ntp.conf
      在末尾添加以下内容:
      server 127.127.1.0
      fudge 127.127.1.0 stratum 8


      启动服务
      service ntpd start
  2. 从服务器准备
    1. 安装相关软件
      yum -y install ntp ntpdate -y
    2. 进行时间同步
      /usr/sbin/ntpdate 192.168.188.14
      设置定时任务,每30分钟同步一次时间
      crontab -e
      */30 * * * * /usr/sbin/ntpdate 192.168.188.14
  3. 主服务器的mysql配置
    1. 修改mysql配置文件
      vim /etc/my.cnf
      添加以下内容:
      server-id = 11
      log-bin=master-bin
      binlog_format = MIXED
      log-slave-updates=true

      重启mysql服务
      systemctl restart mysqld
    2. 给myslave用户赋权,从节点可以通过myslave用户获取需要复制的数据
      mysql -uroot -p
       
      grant replication slave on *.* to 'myslave'@'192.168.188.%' identified by ‘123456’;
      flush privileges;

      查看节点状态
      show master status;
      File显示日志名,Position显示偏移量

  4. 从服务器的mysql配置
    1. 修改mysql配置文件
      vim /etc/my.cnf
      server-id = 22   # 服务器id,各不相同
      relay-log=relay-log-bin  # 开启中继日志
      relay-log-index=slave-relay-bin.index   # 定义中继日志的位置和名称
      relay_log_recovery = 1  # slave宕机后,如果relay-log损坏,会放弃所有还未执行的relay-log,重新从master上获取

      另一台从服务器的配置,只有id改了

      重启mysql服务
      systemctl restart mysqld
    2. 进入数据库配置同步
      mysql -uroot -p
      change master to
      master_host='192.168.188.14',
      master_user='myslave',master_password='123456',
      master_log_file='master-bin.000001',
      master_log_pos=604;

    3. 启动slave节点
      start slave;
      查看状态,如果能看到Slave_IO_Running: Yes和Slave_SQL_Running: Yes,说明没问题
      show slave status\G
  5. 验证
    1. 在主MySQL服务器上创建一个数据库
      create database db_test;
      在从服务器上能看到就说明没问题
      show databases;

实验一点五、MySQL读写分离实验

实验前准备
该实验建立在实验一基础上,使用Amoeba对数据库的操作进行读写分离,读操作将会分发到两个从MySQL服务器上,写操作则会分发到主MySQL服务器上
Master服务器:192.168.188.14     mysql5.7
Slave服务器1:192.168.188.15     mysql5.7
Slave服务器2:192.168.188.16     mysql5.7
Amoeba服务器:192.168.188.13    jdk1.6、Amoeba(jdk不建议版本太高)
客户端:192.168.188.12

  1. 安装Java环境
    1. cd /opt/
      cp jdk-6u14-linux-x64.bin /usr/local/
      cd /usr/local/
      我用的是编译好的文件,所以直接赋权执行
      chmod +x jdk-6u14-linux-x64
      ./jdk-6u14-linux-x64.bin
    2. 优化Java环境
      mv jdk1.6.0_14/ /usr/local/jdk1.6
      vim /etc/profile
      在最后添加路径
      export JAVA_HOME=/usr/local/jdk1.6
      export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
      export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin/:$PATH:$HOME/bin
      export AMOEBA_HOME=/usr/local/amoeba
      export PATH=$PATH:$AMOEBA_HOME/bin

      source /etc/profile
      看一下Java版本,三个java说明没问题
      java -version
  2. 安装amoeba
    1. mkdir /usr/local/amoeba
      tar zxvf /opt/amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/
      chmod -R 755 /usr/local/amoeba/
      /usr/local/amoeba/bin/amoeba
      如果显示amoeba start|stop 说明没问题
  3. 配置amoeba读写分离
    1. 首先需要在三台服务器的MySQL上开放权限给amoeba
      grant all on *.* to 'amo'@'192.168.188.%' identified by '123456';
    2. 修改amoeba配置文件
      cd /usr/local/amoeba/conf/
      做个备份
      cp amoeba.xml amoeba.xml.bak
      修改配置文件
      vim amoeba.xml
      主要需要修改以下内容

    3. 修改数据库配置文件
      先备份
      cp dbServers.xml dbServers.xml.bak
      修改文件
      vim dbServers.xml
      主要改以下内容


      后台运行
      /usr/local/amoeba/bin/amoeba start&
      ctrl+c返回
      查看一下端口是否正常使用,主要是8066是否开启
      netstat -anpt | grep java
  4. 测试读写分离
    1. 客户端上安装mariadb
      yum -y install mariadb-server mariadb
      启动
      systemctl start mariadb
      通过amoeba代理服务器访问mysql
      mysql -uamoeba -p123456 -h192.168.188.13 -P8066(端口号前面是大写P!千万别写错)
    2. 在主服务器上新建表
      use db_test;
      create table test (id int(10),name varchar(10),address varchar(20));
      两台从服务器上先关闭同步
      stop slave;
      在从服务器1上往新表中插入数据
      use db_test;
      insert into test values('1','zhangsan','this_is_slave1');
      在从服务器2上往新表中插入数据
      use db_test;
      insert into test values('2','lisi','this_is_slave2');
      在主服务器上往新表中插入数据
      use db_test;
      insert into test values('3','wangwu','this_is_master');
    3. 在客户端上查询新表
      use db_test;
      select * from test;
      为什么是这样的结果?首先因为我们关闭了同步,所以主服务器写入的数据无法同步到从服务器,同时因为我们设定从服务器用来读,所以当我们查询时就会去找两台从服务器,所以就能看到这两台服务器上的数据,而且是独立分开的,因为我们是直接往从服务器上插入数据,从服务器上的数据本身就无法同步,在工作中是因为他们同时复制主服务器的数据才能保持一致。
    4. 如果我们在上一步基础上,在客户端上往数据库插入新数据
      use db_test;
      insert into test values('4','qianqi','this_is_client');
      在主服务器上查询的结果如下

      两台从服务器上查询结果如下


      设定上主服务器用来写,所以我们在客户端上写入的数据会直接保存在主服务器上,因为没开同步的原因,从服务器无法复制主服务器上的数据,所以从服务器上的数据没变。
      那么我们在从服务器上打开同步
      start slave;
      再查询,立马就有了主服务器上的数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/219052.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Selenium自动化(上)

Selenium 安装 环境准备 第一种方式 Python 自带的 pip 工具安装。 pip install selenium4.12.0安装完成后,查看安装的 Selenium 版本号。 pip show selenium第二种方式 安装 Selenium 的前提是拥有 Python 开发环境(推荐使用 PyCharm)。…

[LCTF 2018]bestphp‘s revenge

文章目录 前置知识call_user_func()函数session反序列化PHP原生类SoapClient 解题步骤 前置知识 call_user_func()函数 把第一个参数作为回调函数调用 eg:通过函数的方式回调 <?php function barber($type){echo "you wanted a $type haircut, no problem\n";}c…

Android开发经验记录_对多个Path形成的图形进行填充踩坑与怕坑记录

需求&#xff1a; 通过其他同事对二值化后的图像生成的图形轨迹&#xff0c;形成Path&#xff0c;并绘制到Canvas中。 初步实现测试&#xff1a; 1、paint先使用stroke对获取的扫描点连成一个个path看看效果先 canvas.save();Paint paint new Paint();paint.setStrokeWidth(…

git 实用命令杂记

使用解决冲突的方式合并&#xff0c;将避免简单的自动合并 git merge origin/dev --strategyresolve清理本地已经合并到 dev 的分支 git branch --merged | grep -v dev | xargs -n 1 git branch -d分支清理 Git 之删除本地无用分支_dearfulan 的博客 - CSDN 博客_git 删除本…

白日门引擎传奇手游架设教程-GM的成长之路

准备工具 服务器一台&#xff08;Windows系统&#xff09;白日门引擎服务端版本一个 前言&#xff1a; 此次教程使用的是版本是一个决战斗罗的一个版本、服务器使用的是驰网科技的游戏高频系列服务器。 教程开始 在我们拿到版本之后、我们需要先把版本解压到服务器D盘的根目录…

四六级高频词组7

目录 词组 其他文章链接&#xff1a; 词组 251. &#xff08;be&#xff09; equivalent to&#xff08;equal in value&#xff0c; amount&#xff0c; meaning&#xff09; 相等于&#xff0c; 相当于 252. in essence &#xff08;in itsones nature&#xff09; 本质上…

处理获取当前日期---------------年月日//时分秒

当前时间&#xff0c;先分组匹配&#xff0c;以数组下标索引匹配定义的汉字进行替换 处理日期方法 /* 日期格式化 */ const formatTime function formatTime(time, template) {if (typeof time ! "string") {time new Date().toLocaleString(zh-CN, { hour12: fal…

Java基础语法之继承

为什么要继承 会发现&#xff0c;狗和猫只有叫声不同&#xff0c;因为它们都是动物&#xff0c;会有相同的属性和行为&#xff0c;所以它们可以继承animla类 如何继承 用到extends关键字 这样就会简化好多 注意 1.Animal称为父类/超类/基类&#xff1b;dog&#xff0c;cat称…

249:vue+openlayers 经纬度坐标转化为地址信息,点击后在弹窗显示

第249个 点击查看专栏目录 本示例是演示如何在vue+openlayers项目中点击某点,转化经纬度坐标为地址信息,弹窗显示。 通过点击地图,获取到经纬度坐标,然后通过调取mapbox的地址转换API,将经纬度坐标转化为地址信息,通过overlay的方式,在弹窗中展示出来。 直接复制下面的…

sylar高性能服务器-配置(P12-p14)内容记录

文章目录 p12&#xff1a;复杂类型解析一、方法函数二、结果展示 p13&#xff1a;复杂类型解析完善一、方法函数二、结果展示 p14&#xff1a;自定义类型解析一、方法函数二、小结 p12&#xff1a;复杂类型解析 ​ 本节内容主要针对完了配置类中对于复杂类型的转换。之前只实现…

中伟视界:水位识别、智能化巡检、远程监控,提升智慧河道管理效率

随着现代科技的发展&#xff0c;人工智能&#xff08;AI&#xff09;算法在各行各业中的应用越来越广泛。特别是在水利行业中&#xff0c;智慧河道的运营管理已成为了一个重要的课题。本文将探讨如何利用AI算法优化智慧河道的运营效率&#xff0c;以及如何通过水位识别视频分析…

CentOS7 OpenSSL升级到OpenSSH9.5p1

原文链接&#xff1a; CentOS7 OpenSSL升级1.1.1w&#xff1b;OpenSSH 升级 9.5p1 保姆级教程 openssl从3.1.0升级到3.1.1遇到的问题 注意操作时需要联网请参考如下链接 内网服务器联网安装依赖参见我的另一篇文章 一、 前言 OpenSSH 的加密功能需要用到OpenSSL&#xff0c;所…

C语言指针基础题(二)

目录 例题一题目解析及答案 例题二题目解析及答案 例题三题目解析及答案 例题四题目解析及答案 例题五题目解析及答案 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 &#x1f412;&#x1f412;&#x1f412; 个人主页 &#x1f978;&#x1f978;&#x1f…

Unity | 渡鸦避难所-2 | 搭建场景并添加碰撞器

1 规范项目结构 上期中在导入一系列的商店资源包后&#xff0c;Assets 目录已经变的混乱不堪 开发过程中&#xff0c;随着资源不断更新&#xff0c;遵循一定的项目结构和设计规范是非常必要的。这可以增加项目的可读性、维护性、扩展性以及提高团队协作效率 这里先做下简单的…

智能优化算法应用:基于斑点鬣狗算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于斑点鬣狗算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于斑点鬣狗算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.斑点鬣狗算法4.实验参数设定5.算法结果6.…

攻防世界-web-upload

1. 题目描述 打开链接&#xff0c;是这样的一个注册界面 先试着注册一个账号看看&#xff0c;这里简单操作&#xff0c;注册test/test&#xff0c;注册完后进行登录 登录成功后进入到这样一个文件上传界面。当前从界面上得到的信息暂时就是这些了。 2. 思路分析 既然存在上传…

【ret2hbp】一道板子测试题 和 SCTF2023 - sycrpg

前言 ret2hbp 主要是利用在内核版本 v6.2.0 之前&#xff0c;cpu_entry_area mapping 区域没有参与随机化的利用。其主要针对的场景如下&#xff1a; 1&#xff09;存在任意地址读&#xff0c;泄漏内核地址 2&#xff09;存在无数次任意地址写&#xff0c;泄漏内核地址并提权…

HCIA-WLAN V3.0,那些重点要点

一、WLAN各个标准&#xff0c;工作频段&#xff0c;理论速率。 二、OFDM和OFDMA&#xff0c;工作频段&#xff0c;空间流。 三、三种帧类型&#xff1a;管理帧、控制帧、数据帧&#xff0c;CAPWAP报文和端口。 四、帧间间隔&#xff0c;波束成形&#xff0c;信道绑定&#xff0…

接口测试要测试什么?怎么测?

本文主要分为两个部分&#xff1a; 第一部分&#xff1a;主要从问题出发&#xff0c;引入接口测试的相关内容并与前端测试进行简单对比&#xff0c;总结两者之前的区别与联系 第二部分&#xff1a;主要介绍为什么要做接口测试&#xff0c;并简单总结接口持续集成和接口质量评估…

正确看待鸿蒙不兼容Android,这不是趋势?

华为可能明年推出不兼容安卓的鸿蒙版本。11月20日&#xff0c;据澎湃新闻报道&#xff0c;一华为相关人士表示&#xff0c;推出时间还不确定&#xff0c;未来IOS、鸿蒙、安卓将为三个各自独立的系统。 稍早前据证券时报报道&#xff0c;有业内人士亦表示&#xff1a;“华为内部…