共计 1662 个字符,预计需要花费 5 分钟才能阅读完成。
MySQL 在 5.6 后多了一个新的功能就是在做主从复制时使用 GTID,和传统的使用 relaylog 中指定 log_pos+log_file 的主从复制相比,在使用 GTID 做主从复制时可以不指定 slave 需求读取 master 中的哪一个 binlog 和偏移量。在传统的 MySQL 主从复制中,一旦指定错误 master 的偏移量后,那么就会造成主从不一致,而在基于 GTID 做的主从复制中就不会发生这样的问题。GTID 实际上是 master 提交了一次事务后而产生的 ID,所以在配置的过程中一般都会开启 enforce_gtid_consistency(强制事务一致)的配置参数以确保 GTID 的安全,但是需要注意的是如果开启了开启 enforce_gtid_consistency,那么在在事务中就不能创建和删除临时表,这一点需要注意,如创建临时表:
create
temporary
table
建议改成
create
table
除此外还会开启 log_slave_updates,这个变量在 master 和 slave 中都会开启,除此之外毋庸置疑的是一定需要开启 binlog,至于其它大体和 log_pos+log_file 的主从复制类似,在此就说以一下不一样的地方,至于其它的以前有说过 log_pos+log_file 的主从复制需要的可以参看: http://www.linuxidc.com/Linux/2017-09/146665.htm,在 master 和 slave 中开启 GTID 的相关变量,当然如果是允许重启的话先配置好二者 my.cnf 是更好的,其中二者的 my.cnf 的 [mysqld] 下都需要添加的是:
log_slave_updates = on
gtid_mode = on
enforce_gtid_consistency = on
在 slave 下建议开启只读:
read_only = on
其处,在配置的过程中最好把 master 的写入关闭,开启只读:
mysql>
set
global
read_only =
ON
;
Query OK, 0
rows
affected (0.00 sec)
在开启相应的变量参数后,在 slave 上做指向和 log_pos+log_file 的主从复制相比只要使用 master_auto_position 即可
change master
to
master_host=
'192.168.168.253'
,master_user=
'test_backup'
,master_password=
'test_backup'
,master_auto_position = 1;
在开启后可以查看 GTID 参数变量:
'%GTID%'
;
当然为了服务高可用,在使用 GTID 时 MySQL 也会开启 log_pos+log_file,只是我们就不需要想以前那样手动指向 log_pos+log_file,因此使用 GTID 的方式做主从复制修复时还和以前不一样:
mysql> change master
to
master_auto_position=0;
Query OK, 0
rows
affected (0.08 sec)
mysql> change master
to
master_host=
'192.168.168.253'
,master_user=
'test_backup'
,master_password=
'test_backup'
,master_log_file=
'mysql-bin.000014'
,master_log_pos=405051906;
Query OK, 0
rows
affected, 2 warnings (0.01 sec)
mysql> start slave;
Query OK, 0
rows
affected (0.01 sec)
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-09/146664.htm