环境介绍
Part1:写在最前
截止本文撰写当日,MySQL5.7.16是官网的最新稳定版,本文将用MySQL5.7.16来进行演示。从MySQL5.6开始,支持了GTID复制模式,这种模式其实是把双刃剑,虽然容易搭建主从复制了,但使用不当,就容易出现一些错误,例如error 1236。在MySQL5.6如果开启GTID模式,需要在my.cnf中加入以下几个参数:
①log-bin=mysql-bin
②binlog_format=row
③log_slave_updates=1
④gtid_mode=ON
⑤enforce_gtid_consistency=ON
Warning:警告这里的一些参数不是动态参数,也就是需要重启mysql才能生效。
MySQL5.7开启GTID可以不需要log_slave_updates=1这个参数,其意义是在应用relay-log日志时生成bin-log日志;
Part2:环境
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
MySQL5.6开启GTID需要开启log_slave_updates参数,否则启动报错,而5.7不在需要开启该参数。
实战
Part1:搭建传统复制模式
本文环境HE1为从,HE3为主库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
|
Part2:传统复制模式切换为GTID
①主库从库都需执行以下命令
1 2 3 4 5 6 7 8 |
|
②主库插数从库执行
1 2 3 4 5 6 7 |
|
可以看到gtid_set下面有数了,这说明已经开启了gtid模式
Part3:GTID变更为传统模式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
|
可以看到这里GTID模式已经关了,下面再次开启GTID模式来观察id的变化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
|
——总结——
MySQL5.7开启/关闭GTID,不用重启mysql,这大大提高了GTID的易用性。由于笔者的水平有限,编写时间也很仓促,文中难免会出现一些错误或者不准确的地方,不妥之处恳请读者批评指正。