MMM切換原理
slave agent收到new master傳送的set_active_master資訊後如何進行切換主庫
原始碼 Agent\Helpers\Actions.pm
set_active_master($new_master)
Try to catch up with the old master as far as possible and change the master to the new host.
(Syncs to the master log if the old master is reachable. Otherwise syncs to the relay log.)
一、獲取同步的binlog和position
先獲取new master的show slave status中的 Master_Log_File、Read_Master_Log_Pos
wait_log=Master_Log_File, wait_pos=Read_Master_Log_Pos
如果old master可以連線,再獲取old master的show master status中的File、Position
wait_log=File, wait_pos=Position # 覆蓋new master的slave資訊,以old master 為準
二、slave追趕old master的同步位置
SELECT MASTER_POS_WAIT('wait_log', wait_pos);
# 停止同步
STOP SLAVE;
三、設定new master資訊
# 此時 new master已經對外提供寫操作。
# (在main執行緒裡new master先接收到啟用的訊息,new master 轉換(包含vip操作)完成後,然後由_distribute_roles將master變動同步到slave上)
# 在new master轉換完成後,如果能執行flush logs,更方便管理
# 獲取new master的binlog資料。
SHOW MASTER STATUS;
# 從配置檔案/etc/mysql-mmm/mmm_common.conf 讀取同步帳戶、密碼
replication_user、replication_password
# 設定新的同步位置
CHANGE MASTER TO MASTER_HOST='$new_peer_host', MASTER_PORT=$new_peer_port
, MASTER_USER='$repl_user', MASTER_PASSWORD='$repl_password'
, MASTER_LOG_FILE='$master_log', MASTER_LOG_POS=$master_pos;
# 開啟同步
START SLAVE;
====== 潛在問題
雙主的binlog必須完全一致,否則切換會出問題
如果new master比slave的同步位置晚,會導致重複執行。只有row模式下才能保證資料一致性
如有錯誤,歡迎指正
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26250550/viewspace-1069277/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 百葉窗式的幻燈片切換效果原理
- 程式切換(上下文切換)
- 詳解 RxJava2 的執行緒切換原理RxJava執行緒
- MySQL高可用方案MHA線上切換的步驟及原理MySql
- H5單頁面手勢滑屏切換原理H5
- Weblogic產品模式切換與JVM切換Web模式JVM
- 【Git】2. Git常用命令詳解、版本切換原理Git
- 切換 PHP 版本PHP
- ubuntu切換源Ubuntu
- Git分支切換Git
- oracle dataguard 切換Oracle
- asm 磁碟切換ASM
- 切換IP地址
- 切換java版本Java
- RxJava2.0(四)執行緒之間切換的內部原理RxJava執行緒
- 詳解 RxJava 的訊息訂閱和執行緒切換原理RxJava執行緒
- GCC 多版本切換GC
- iOS 切換鍵盤iOS
- Redis主從切換Redis
- DG的切換操作
- valet 切換 PHP 版本PHP
- (九)主題切換
- lnmp 切換PHP版本LNMPPHP
- ios 卡片切換效果iOS
- 小程式 tab切換
- ubuntu切換java版本UbuntuJava
- IP地址切換工具
- wordpress語言切換
- git命令-切換分支Git
- mac php版本切換MacPHP
- switchable圖片切換
- 再談特性切換
- MySQL主從切換MySql
- mongodb 切換wiredtigerMongoDB
- PostgreSQL切換日誌SQL
- 多螢幕切換
- jdk 多版本切換JDK
- centos 切換 jdk 版本CentOSJDK