MySQL基于GTID复制

MySQL 5.6 引入了Gtid 全局事务号
每一条sql语句都有一个事务号
主从同步可以不在指定logfile post点 主从会自动写上补全数据 依赖的就是gtid

基于GTID的主从复制
1、配置主从节点的服务配置文件

1.1、配置master节点:
[mysqld]
binlog-format=ROW
log-bin=master-bin
log-slave-updates=on
gtid-mode=on
enforce-gtid-consistency=on
master-info-repository=TABLE
relay-log-info-repository=TABLE
relay-log-recovery=ON
sync-master-info=1
slave-parallel-workers=2
slave-parallel-type=LOGICAL_CLOCK
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
server-id=1
port=3306
datadir=/mydata/data
socket=/tmp/mysql.sock

1.2、配置slave节点:
[mysqld]
binlog-format=ROW
log-slave-updates=on
gtid-mode=on
enforce-gtid-consistency=on
master-info-repository=TABLE
relay-log-info-repository=TABLE
relay-log-recovery=ON
sync-master-info=1
slave-parallel-workers=2
slave-parallel-type=LOGICAL_CLOCK
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
server-id=11
port=3306
log-bin=mysql-bin.log
datadir=/mydata/data
socket=/tmp/mysql.sock

配置注释
开启GTID必须启用下面三个参数,任意一个参数不开启则都会报错,最重要的三个参数
log-slave-updates=on
gtid-mode=on
enforce-gtid-consistency=on

master-info-repository和relay-log-info-repository:启用此两项,可用于实现在崩溃时保证二进制及从服务器安全的功能
relay-log-recovery: 开启relay-log恢复
sync-master-info:启用可确保无信息丢失
slave-parallel-workers:开启基于库的多线程复制.默认是0,不开启,最大并发数为1024个线程 尽量等于cpu核数或数据库数量 *****
slave-parallel-type: 逻辑时钟,可以支持事物级别的SQL并发,clock级别才是真正的事物级别并发 默认级别:database *****
binlog-checksum、master-verify-checksum和slave-sql-verify-checksum:启用复制有关的所有校验功能
binlog-rows-query-log-events:启用只可用于在二进制日志记录事件相关的信息,可降低故障排除的复杂度
log-bin:启用二进制日志,这是保证复制功能的基本前提
server-id:同一个复制拓扑中的所有服务器的id号必须惟一

其他配置与以前主从同步方法一样 配制方法MySQL5.5主从配置
只有在change master 这有一点点不同 master_auto_position=1
mysql> change master to master_host=‘192.168.56.5’,master_user=‘rep’,master_password=‘rep’,master_port=3306,master_auto_position=1;
当使用 MASTER_AUTO_POSITION 参数的时候,MASTER_LOG_FILE,MASTER_LOG_POS参数不能使用。

需要注意的地方
1 备份注意的一点是:在备份开启GTID的实例里,需要指定 --set-gtid-purged参数,否则会报warning
mysqldump -uroot -p -B -F -R --triggers --single-transaction --set-gtid-purged=OFF -E --master-data=1> /tmp/all.sql

在构建主从时,使用AUTO/ON
–set-gtid-purged=AUTO/ON

仅是做普通的本机备份恢复时,可以添加(平时备份时可用)
–set-gtid-purged=OFF
binlog日志中会多出几条语句
SET @@GLOBAL.GTID_PURGED=‘aa648280-a6a6-11e9-949f-000c294a1b3b:1-11’;

2 在从库开启同步时
要是出现:
ERROR 1840 (HY000): @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.
则需要执行:
reset master;
start slave; 就会成功开启

你可能感兴趣的:(MySQL)