![深入理解MySQL主从原理](https://wfqqreader-1252317822.image.myqcloud.com/cover/513/37423513/b_37423513.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.4.3 搭建GTID AUTO_POSITION MODE的主从
在这一部分中,获取gtid-purged变量是需要注意的地方,也是笔者在线上遇到的一个“坑”,这个“坑”还比较普遍。简单来说,就是在MySQL 5.7的某些版本中,导入数据会覆盖原本命令set gtid_purged的设置,而gtid_executed表并不是实时更新的,因此在从库重启后可能导致数据重复拉取,进而导致主从同步报错。
注意,主备库必须开启GTID并设置好server_id:
![](https://epubservercos.yuewen.com/A01218/19823444008569806/epubprivate/OEBPS/Images/txt001_30.jpg?sign=1739340355-gii2hC0JGR9skpbWcmWyvlJCXmMeECR4-0-1ad6b0ca86c3cd58e2102bcdfb599a3b)
同时,主从库都开启 binary log。如果不设置级联从库,那么从库不需要开启参数log_slave_updates。
(1)建立复制用户并且授权。
![](https://epubservercos.yuewen.com/A01218/19823444008569806/epubprivate/OEBPS/Images/txt001_31.jpg?sign=1739340355-zzsuczXhJ17fSQt1Fdalqi8C5ly74qwZ-0-ddfdbbed068387cae034bd1286e55a6a)
(2)导出数据。
![](https://epubservercos.yuewen.com/A01218/19823444008569806/epubprivate/OEBPS/Images/txt001_32.jpg?sign=1739340355-6kBAvmo9MztFi8tQyLO3PVe3JmiFBj8z-0-2e64bbdff71f763430ef0f068176b0e5)
(3)从库导入数据。
使用命令mysql-e "source xxx.sql" 导入数据。
(4)从库执行reset master命令。
这一步主要防止gtid_executed表在导入数据的过程中被覆盖,我们在MySQL 5.7的某些版本中遇到过这种情况。一旦从库再次重启,读取 gtid_executed 表就会得到错误的 gtid_executed变量,进而导致从库启动失败。因此最好重新设置gtid_purged变量。
![](https://epubservercos.yuewen.com/A01218/19823444008569806/epubprivate/OEBPS/Images/txt001_33.jpg?sign=1739340355-ppvoAY5BBs48b3L9xDJT3x4JouvDrTGI-0-1b2a9746fc9bd6f9a844757a69e3a252)
(5)提取gtid_purged变量,并且执行。
使用head-n 40命令可以快速得到gtid_purged变量,例如:
![](https://epubservercos.yuewen.com/A01218/19823444008569806/epubprivate/OEBPS/Images/txt001_34.jpg?sign=1739340355-ibDiyRKBX7rEUPcl6h1wIq6FPiRC1jO9-0-9b4212c105158237364ecda9c89dcd2c)
执行
![](https://epubservercos.yuewen.com/A01218/19823444008569806/epubprivate/OEBPS/Images/txt001_35.jpg?sign=1739340355-PFubO24QapoPQkscVFCK4SbPOxbtDTsd-0-704eb44a1175c5cb458cbce2e63aefeb)
即可,完成本步骤后,mysql.gtid_executed表会重构,这个我们在1.2节的通用修改时机中已经讨论过了。
(6)使用MASTER_AUTO_POSITION建立同步。
![](https://epubservercos.yuewen.com/A01218/19823444008569806/epubprivate/OEBPS/Images/txt001_36.jpg?sign=1739340355-Yrog5Pc2Al0aXhxg14KLjU45kfeIB1gp-0-f1cfccf0255743a6fec0de1e4b2ca4a0)
![](https://epubservercos.yuewen.com/A01218/19823444008569806/epubprivate/OEBPS/Images/txt001_37.jpg?sign=1739340355-1pZiXspolGK96nN5y6qEHQKGBbbLMnls-0-211793ab0981c0c0aaa5e5f2c40fb92d)
(7)启动slave。
![](https://epubservercos.yuewen.com/A01218/19823444008569806/epubprivate/OEBPS/Images/txt001_38.jpg?sign=1739340355-j2GxUA9LGp3ff2BQvv8b8K0Jy0saGK4T-0-e0aa92ac75ff11687303ee0ca022cd77)