- 深入理解MySQL主從原理
- 高鵬
- 420字
- 2021-04-16 16:29:22
1.4.3 搭建GTID AUTO_POSITION MODE的主從
在這一部分中,獲取gtid-purged變量是需要注意的地方,也是筆者在線上遇到的一個“坑”,這個“坑”還比較普遍。簡單來說,就是在MySQL 5.7的某些版本中,導入數據會覆蓋原本命令set gtid_purged的設置,而gtid_executed表并不是實時更新的,因此在從庫重啟后可能導致數據重復拉取,進而導致主從同步報錯。
注意,主備庫必須開啟GTID并設置好server_id:

同時,主從庫都開啟 binary log。如果不設置級聯從庫,那么從庫不需要開啟參數log_slave_updates。
(1)建立復制用戶并且授權。

(2)導出數據。

(3)從庫導入數據。
使用命令mysql-e "source xxx.sql" 導入數據。
(4)從庫執(zhí)行reset master命令。
這一步主要防止gtid_executed表在導入數據的過程中被覆蓋,我們在MySQL 5.7的某些版本中遇到過這種情況。一旦從庫再次重啟,讀取 gtid_executed 表就會得到錯誤的 gtid_executed變量,進而導致從庫啟動失敗。因此最好重新設置gtid_purged變量。

(5)提取gtid_purged變量,并且執(zhí)行。
使用head-n 40命令可以快速得到gtid_purged變量,例如:

執(zhí)行

即可,完成本步驟后,mysql.gtid_executed表會重構,這個我們在1.2節(jié)的通用修改時機中已經討論過了。
(6)使用MASTER_AUTO_POSITION建立同步。


(7)啟動slave。

推薦閱讀
- C# 7 and .NET Core Cookbook
- Boost程序庫完全開發(fā)指南:深入C++”準”標準庫(第5版)
- Python快樂編程:人工智能深度學習基礎
- Apache Spark 2.x Machine Learning Cookbook
- MATLAB實用教程
- 云計算通俗講義(第3版)
- TypeScript實戰(zhàn)指南
- SSM輕量級框架應用實戰(zhàn)
- 青少年學Python(第1冊)
- Python機器學習算法: 原理、實現與案例
- 好好學Java:從零基礎到項目實戰(zhàn)
- 21天學通C++(第5版)
- Orchestrating Docker
- C++程序設計
- Simulation for Data Science with R