MySQL5.7 主从复制GTID复制配置搭建过程

目录

一、master01主库和node01从库的my.cnf的配置信息

1. master01主库my.cnf配置

2. node01从库的my.cnf配置

二、主节点上创建复制账号并创建权限

三、在从库上执行MySQL配置主从复制账号

3.1:在从节点执行:start slave 命令,启动功能。

3.2:查看主从复制状态命令

 3.3:你在主库上创建数据库demo,并在里面创建表添加数据,这时候过几秒后刷新从库就会把数据自动同步过来

 3.4: 证明已经开启了GTID复制模式

四、生产如何从传统的复制模式切换到GTID复制模式

4.1:  show slave status \G; 查看传统复制的状态情况

4.2: 在主从服务器上都设置GLOBAL.ENFORCE_GTID_CONSISTENCY

 4.2: 在主从服务器上设置GLOBAL.ENFORCE_GTID_CONSISTENCY,确保所有事务都不能违反GTID的一致性。

4.3: 主从服务器配置新事务是匿名的

4.4: 主从服务器配置新事务是匿名的

4.5:在所有从库查询状态为0才能继续下一步。

4.6:确认没有匿名事件,就可以在主从的服务器上开启GTID_MODE

4.7: 查看GTID参数设置的目前状态

 4.8:把传统复制停掉,执行 stop slave, 再执行change master to master_auto_position=1,然后start slave,开启主从复制。

4.9: 在主库上添加数据,然后查看主从复制状态。

4.10:证明已经开启了GTID复制的方式。

4.11:修改my.cnf的配置文件,重启数据库服务,避免数据库重启后失效。


前言

      如果使用了GTID,启动一个新的复制从库或者切换到一个新库,就不必依赖log文件和position值。只需要知道master的IP,端口,账号密码即可,因为同步复制是自动的,MySQL通过内部机制GTID自动找点同步。


一、master01主库和node01从库的my.cnf的配置信息

提示:master01主库,node01从库

1. master01主库my.cnf配置

[mysqld]

port=33306
datadir=/datah/data/mysqldata/mysql
socket=/var/lib/mysql/mysql.sock

symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

character-set-server=utf8
collation-server=utf8_general_ci
lower_case_table_names=1
init_connect='SET NAMES utf8'
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_connections=5000
wait_timeout=20000
max_user_connections=5000
max_allowed_packet=128M
thread_stack=262144

#skip-grant-tables


#主库 GTID 复制配置
################ settings start ###################
server-id=100                 #主库server-id
log-bin=on                      #开启binlog日志
binlog_format=row         #row模式,保证后期不会出现数据不一致的情况

gtid_mode=on                #开启GTID复制模式
enforce_gtid_consistency=on

################ settings end ###################
 

2. node01从库的my.cnf配置


[mysqld]
 
port=33306
datadir=/datah/data/mysqldata/mysql
socket=/var/lib/mysql/mysql.sock
 
symbolic-links=0
 
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
 
character-set-server=utf8
collation-server=utf8_general_ci
lower_case_table_names=1
init_connect='SET NAMES utf8'
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_connections=5000
wait_timeout=20000
max_user_connections=5000
max_allowed_packet=128M
thread_stack=262144
 
#skip-grant-tables
#从库开启 GTID 复制配置
################### settings start ###########################
server-id=101                 #主库server-id
log-bin=on                    #开启binlog日志
binlog_format=row             #row模式,保证后期不会出现数据不一致的情况
gtid_mode=on
enforce_gtid_consistency=on
#从库建议开启
log_slave-updates=1

################### settings end #############################
 

二、主节点上创建复制账号并创建权限

grant replication slave on *.* to 'mysync'@'%' identified by 'Abc123456';

flush privileges;

三、在从库上执行MySQL配置主从复制账号

提示:新搭建的环境,就可以直接在从库上执行 change master to 语句(master_auto_position=1)了,不在使用binlog文件和position号,让主从复制的搭建变得简单。

  1. master_log_file='mysql-bin.000001',

  2. master_log_pos=37611

change master to master_host='172.16.25.205',
master_user='mysync',
master_password='Abc123456',
master_port=33306,
master_auto_position=1;

flush privileges;

3.1:在从节点执行:start slave 命令,启动功能。

mysql> start slave;
Query OK, 0 rows affected (0.02 sec)

3.2:查看主从复制状态命令

mysql> show slave status \G;

 3.3:你在主库上创建数据库demo,并在里面创建表添加数据,这时候过几秒后刷新从库就会把数据自动同步过来

 

 3.4: 证明已经开启了GTID复制模式

mysql> show slave status \G;

四、生产如何从传统的复制模式切换到GTID复制模式

提示:在生产环境中,MySQL5.7版本支持在线从复制模式切换到GTID模式。需要注意的是gtid_mode虽然支持动态修改,但是不支持跳跃式修改;既它的几个值的修改是有序的:从OFF←→  OFF_PERMISSIVE ←→  ON_PERMISSIVE ←→  ON,不能跳跃式执行。

4.1:  show slave status \G; 查看传统复制的状态情况

4.2: 在主从服务器上都设置GLOBAL.ENFORCE_GTID_CONSISTENCY

备注:设置之后要确认错误日志中没有任何警告,如果有,就需要调整不兼容的语句才能往下继续执行,如果出现GTID不兼容的语句语法,在错误日志里面会记录,需要调整应用程序中的SQL避免不兼容的写法,直到完全没有产生不兼容的语句。

set @@GLOBAL.ENFORCE_GTID_CONSISTENCY=WARN;

flush privileges;

 4.2: 在主从服务器上设置GLOBAL.ENFORCE_GTID_CONSISTENCY,确保所有事务都不能违反GTID的一致性。

set @@GLOBAL.ENFORCE_GTID_CONSISTENCY=ON;

flush privileges;

4.3: 主从服务器配置新事务是匿名的

set @@GLOBAL.GTID_MODE=OFF_PERMISSIVE;

4.4: 主从服务器配置新事务是匿名的

set @@GLOBAL.GTID_MODE=ON_PERMISSIVE;

4.5:在所有从库查询状态为0才能继续下一步。

show status like 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';

4.6:确认没有匿名事件,就可以在主从的服务器上开启GTID_MODE

 set @@global.gtid_mode=on;

4.7: 查看GTID参数设置的目前状态

show variables like '%gtid%';

 4.8:把传统复制停掉,执行 stop slave, 再执行change master to master_auto_position=1,然后start slave,开启主从复制。

stop slave;

change master to master_auto_position=1;

start slave;

4.9: 在主库上添加数据,然后查看主从复制状态。

show slave status \G;

4.10:证明已经开启了GTID复制的方式。

 

4.11:修改my.cnf的配置文件,重启数据库服务,避免数据库重启后失效。

#开启GTID复制功能
gtid_mode=on
enforce_gtid_consistency=1

systemctl restart mysqld 

温馨提示:如果小编分享的对你有所帮助的话,麻烦点个赞,鼓励一下,小编也不容易。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

求知若渴,虚心若愚。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值