linux 下分布式Mysql配置(mysql版本:mysql-5.7.24)——全同步复制

一.分布式MySQL 5.7介绍

 

全同步是主从同步的增强。

因为主从同步虽可以实现一主多从,但它的局限在于只有在主数据库上写的时候从数据库才会做数据备份,而在从数据库做出改变时,主数据库不会记录相应的改变。

然而,全同步出现了,它可以是只要在一个数据库做出改变,所以其它在同组的数据库也会改变,同组的数据库没有等级之分。可以理解为“同组数据库之间数据相等”。
 

二.实验环境(rhel7.3版本)

1.selinux和firewalld状态为disabled

2.各主机信息如下:

主机 ip
server1 172.25.8.1
server2 172.25.8.2
server3 172.25.8.3

 

三.MySQL 5.7数据库的全同步复制的部署

1.配置server1:(因为server1之前做过主从复制,所以要清空环境)

<1>停掉之前的mysql,清空/var/lib/mysql目录下所有的mysql缓存记录

值的注意的是:必须先挂掉mysqld服务,然后再删除数据(这是因为关闭mysqld服务时,会自动保存数据)

<2>获取uuid

<3>编辑配置文件

linux 下分布式Mysql配置(mysql版本:mysql-5.7.24)——全同步复制_第1张图片

#注释:
#binlog_checksum:二进制日志事件校验和。由于对复制事件校验的设计缺陷,目前组复制不能使用它们。因此,需要设置binlog-checksum=NONE
#log_slave_updates:默认值是off。如果不手动设置,那么log-bin只会记录直接在该库上执行SQL语句,由replication机制的SQL线程读取relay-log而执行的SQL语句不会记录到binlog,那么无法实现三级级联的同步。
#binlog_format:二进制日志的格式,有row,statement和mixed几种类型。需要注意的是:当设置隔离级别为READ-COMMITED时必须设置二进制格式为row,现在MySQL官方认为STATEMENT这个已经不再适合继续使用;但mixed类型在事物隔离级别下,可能会倒置主从数据不一致。 
#使用loose-前缀表示server启用时尚未加载复制插件也将继续启动

 

<4>开启mysql,获取初始密码,登陆数据库修改初始密码,安装全同步插件及配置

#获取初始密码

#关闭日志同步

#创建用户

#给用户授予复制的权限

#刷新授权表

#开启日志同步

#安装组复制的插件

#查看插件

#开启组复制

#查看状态显示为ONLINE表示配置成功

linux 下分布式Mysql配置(mysql版本:mysql-5.7.24)——全同步复制_第2张图片

<5>登录数据库,创建数据库,创建表,并往表中插入数据以便后面的测试

linux 下分布式Mysql配置(mysql版本:mysql-5.7.24)——全同步复制_第3张图片

 

2.配置server2:(因为server2之前做过主从复制,所以要清空环境)

 

<1>停掉之前的mysql,清空/var/lib/mysql目录下所有的mysql缓存记录

<2>编辑配置文件

linux 下分布式Mysql配置(mysql版本:mysql-5.7.24)——全同步复制_第4张图片

<3>开启数据库,获取初始密码,登陆数据库,修改密码,安装全同步插件并配置

linux 下分布式Mysql配置(mysql版本:mysql-5.7.24)——全同步复制_第5张图片

#查看状态显示为ONLINE表示配置成功

linux 下分布式Mysql配置(mysql版本:mysql-5.7.24)——全同步复制_第6张图片

 

3.配置server3:

<1>安装数据库

<2>编辑配置文件

linux 下分布式Mysql配置(mysql版本:mysql-5.7.24)——全同步复制_第7张图片

<3>开启mysql,获取初始密码,登陆数据库,修改密码,安装组复制插件并配置

linux 下分布式Mysql配置(mysql版本:mysql-5.7.24)——全同步复制_第8张图片

#查看状态显示为ONLINE表示配置成功

linux 下分布式Mysql配置(mysql版本:mysql-5.7.24)——全同步复制_第9张图片

 

4.测试:

 

1.server1端查看组复制状态(三台状态都是online)

linux 下分布式Mysql配置(mysql版本:mysql-5.7.24)——全同步复制_第10张图片

2.server1上登陆数据库,进入test库,插入信息到t1表中,并查看该表中的数据

linux 下分布式Mysql配置(mysql版本:mysql-5.7.24)——全同步复制_第11张图片

server2登陆数据库,进入test库,查看是否同步(server3上也会同步到,此处以server2为例):

linux 下分布式Mysql配置(mysql版本:mysql-5.7.24)——全同步复制_第12张图片

3.server2上登陆数据库,进入test库,插入信息到t1表中,并查看该表中的数据

linux 下分布式Mysql配置(mysql版本:mysql-5.7.24)——全同步复制_第13张图片

server3登陆数据库,进入test库,查看是否同步(server1上也会同步到,此处以server3为例):

linux 下分布式Mysql配置(mysql版本:mysql-5.7.24)——全同步复制_第14张图片

4.server3上登陆数据库,进入test库,插入信息到t1表中,并查看该表中的数据

linux 下分布式Mysql配置(mysql版本:mysql-5.7.24)——全同步复制_第15张图片

server1登陆数据库,进入test库,查看是否同步(server2上也会同步到,此处以server1为例):

linux 下分布式Mysql配置(mysql版本:mysql-5.7.24)——全同步复制_第16张图片

 

结论:

从上述测试的过程中可知:三个数据库插入的内容,都可以同步。

表明全同步复制搭建成功。

 

值的注意的是:

全同步的设置是临时的,如果重新启动mysqld服务,那么全同步的设置就会失效。需要在主库和从库上重新打开全同步的设置。

server1:

[root@server1 mysql]# mysql -uroot [email protected]
mysql> SET GLOBAL group_replication_bootstrap_group=ON;
mysql> START GROUP_REPLICATION;     #开启组复制
mysql> SET GLOBAL group_replication_bootstrap_group=OFF
 

server2:

[root@server2 mysql]# mysql -uroot [email protected]

mysql> START GROUP_REPLICATION;

 

server3:

[root@server3 mysql]# mysql -uroot [email protected]

mysql> START GROUP_REPLICATION;

 

 

你可能感兴趣的:(笔记)