mysql + gtid半同步主从复制

一、环境说明
mysql主机:server5 172.25.96.5
mysql从机:server6 172.25.96.6;server7 172.25.96.7

二、安装软件包
server5上
创建目录,将解压得到的软件包放在这个目录下,
在这里插入图片描述
进入mysql-5.7.17目录下,安装所需要的软件包

yum install -y mysql-community-client-5.7.17-1.el6.x86_64.rpm mysql-community-common-5.7.17-1.el6.x86_64.rpm mysql-community-libs-5.7.17-1.el6.x86_64.rpm mysql-community-libs-compat-5.7.17-1.el6.x86_64.rpm mysql-community-server-5.7.17-1.el6.x86_64.rpm

在这里插入图片描述
启动服务,并修改数据库的密码
这里在启动服务的时候,有可能特别慢,卡在这里,可以再次ssh连接到这台虚拟机,使用ps ax命令查看进程中是否有mysqld进程,若有mysqld进程,表示mysqld已经启动,直接killall -9 mysqld,在重新开启服务即可。
在这里插入图片描述
在启动服务后,日志会有初始密码的信息。
在这里插入图片描述
修改数据库密码,首先输入我们上面得到的root的密码,然后输入自己的密码,这里注意密码为强加密方式,由大小写字母、数字、字符组成,缺一不可。
在这里插入图片描述
server6上进行同样的操作
在这里插入图片描述
这样server5和server6上mysql配置完成,接下来进行配置主从。
三、主从复制
主服务器server5上

[root@server5 mysql]# vim /etc/my.cnf	

在这里插入图片描述
配置文件中加入上面的内容,重启服务
在这里插入图片描述
进入mysql,创建用户,查看复制起始点
在这里插入图片描述
创建一个数据库并写入数据
在这里插入图片描述
在这里插入图片描述
从服务器server6上
[root@server6 mysql5.7]# vim /etc/my.cnf
在这里插入图片描述
重启服务
在这里插入图片描述
首先测试在主服务器上建立的用户能不能登陆mysql
在这里插入图片描述
接下来进入数据库,设置从数据库,并开启slave
在这里插入图片描述
查看slave状态
在这里插入图片描述
这里看到Slave_IO_Running: Yes和Slave_SQL_Running: Yes表示slave启动正常。
注:
Slave_IO_Running: No 一般是用户不正确或者虚拟机火墙的问题,Slave_SQL_Running: No 一般是数据不同步或者冲突的问题。
状态下面也有错误提示,根据错误提示进行修改即可。
查看从服务器是否复制主服务器的数据
在这里插入图片描述
已经复制了主服务器的数据,在主服务器上再添加数据,测试复制情况
主服务器上
在这里插入图片描述
从服务器上,直接查看已经得到了添加的数据。
在这里插入图片描述
四、gtid方式的主从复制
主服务器server5上
修改配置文件,加入下面内容,重启服务
在这里插入图片描述
在从服务器server6上,首先修改配置文件,和上面server5的修改相同,然后进入mysql,停止slave,重新配置
在这里插入图片描述
再次开启slave,查看状态
在这里插入图片描述
再次进行测试,在主服务器上添加数据,在从服务器上查看,是否复制新添加的数据。
在这里插入图片描述
server6上查看
在这里插入图片描述
复制成功,这样使用gtid方式的主从复制就完成了,接下来配置一主两从。
五、一主两从

server5(master) ---> server6(slave & master) ---> server7(slave)

server7作为另外一台从服务器,数据库的安装过程和上面的安装步骤相同,这里不再说明,主要对他的配置以及如何与server6实现主从复制进行说明。

server7上数据库安装成功
在这里插入图片描述
进行配置,server5还是主服务器,不用改变,配置server6作为server7的主服务器,原先server6作为server5的从服务器的配置不用改变。server7作为server6从服务器。
首先进入server6的数据库,创建用户
在这里插入图片描述
server7上测试用户可以登陆
在这里插入图片描述
修改配置文件
在这里插入图片描述
重启服务
在这里插入图片描述
server7作为从服务器和上面一主一从中的从服务器的配置相同

[root@server7 ~]# vim /etc/my.cnf

在这里插入图片描述
在这里插入图片描述
在复制之前server5,server6,serevr7上面的数据要高度一致,所以将server5上的数据库拷贝出来,并复制给server7,首先实现复制之前的数据一致
在这里插入图片描述
在这里插入图片描述
server7上编辑拷贝到的数据库,将数据导入到server7的数据库中

[root@server7 ~]# vim westos.sql 

在这里插入图片描述

在这里插入图片描述
进入数据库,查看信息
在这里插入图片描述
在这里插入图片描述
开启slave
在这里插入图片描述
在这里插入图片描述
现在三台服务器上的数据均一样。
测试,在server5数据库中添加数据
在这里插入图片描述
server6上查看
在这里插入图片描述
server7上查看
在这里插入图片描述
可以看到server6复制server5的成功,server7复制server6的成功,实现了一主两从的复制。
六、mysql的并行复制
只在slave上进行,这里在server6上配置并行复制。
首先查看线程processlist
在这里插入图片描述
修改server6的mysql配置文件,添加如下的内容,原先进行的配置不变,重启服务,实现并行

[root@server6 ~]# vim /etc/my.cnf

在这里插入图片描述
进入mysql,再次查看processlist
在这里插入图片描述
在这里插入图片描述
配置文件参数解释
master_info_repository
开启MTS功能后,务必将参数master_info_repostitory设置为TABLE,这样性能可以有50%~80%的提升。这是因为并行复制开启后对于元master.info这个文件的更新将会大幅提升,资源的竞争也会变大。在之前InnoSQL的版本中,添加了参数来控制刷新master.info这个文件的频率,甚至可以不刷新这个文件。因为刷新这个文件是没有必要的,即根据master-info.log这个文件恢复本身就是不可靠的。将master_info_repository设置为TABLE,来减小这部分的开销。

slave_parallel_worker
若将slave_parallel_workers设置为0,则MySQL 5.7退化为原单线程复制,但将slave_parallel_workers设置为1,则SQL线程功能转化为coordinator线程,但是只有1个worker线程进行回放,也是单线程复制。然而,这两种性能却又有一些的区别,因为多了一次coordinator线程的转发,因此slave_parallel_workers=1的性能反而比0还要差。

七、半同步复制
半同步复制简介
  何为半同步复制模式呢?在此我们先了解异步复制模式,这是MySQL的默认复制选项。异步复制即是master数据库把bin-log日志发送给slave数据库,然后就没有了然后了。在此暴露一个问题,当slave服务器发生故障了,那么肯定会导致主从数据库服务器的数据不一致。
  为了解决上面的问题,MySQL5.5引入一种叫做半同步复制模式。开启这种模式,可以保证slave数据库接收完master数据库发送过来的bin-log日志并写入自己的中继日志中,然后反馈给master数据库,告知已经复制完毕。
开启这种模式后,当出现超时,主数据库将会自动转为异步复制模式,直到至少有一台从服务器接受到主数据库的bin-log,并且反馈给主数据库。这时主数据库才会切换回半同步复制模式。
确保value为YES
在这里插入图片描述
注意:半同步复制模式必须在主服务器和从服务器同时中开启,否则将会默认为异步复制模式。
半同步复制需要安装插件,而插件的位置如下:
在这里插入图片描述
主服务器上需要semisync_master.so,从服务器上要semisync_slave.so
主服务器server5上安装插件
在这里插入图片描述
在这里插入图片描述
从服务器server6上安装插件
在这里插入图片描述
在这里插入图片描述
这样主从服务器之间的的半同步复制就配置完成,接下来进行测试
首先在master上查看以下参数
在这里插入图片描述
在slave上关闭io_thread
在这里插入图片描述
在主数据库中插入数据,会等待10s返回结果。
在这里插入图片描述
这个时候退回到异步复制,slave上没有接受到数据
在这里插入图片描述
再次回到master上查看相关状态
在这里插入图片描述
再次开启slave上的io_thread,查看数据是否同步,发现数据进行了同步
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/oikinkl/article/details/82960249