【MySQL(二十二)】一主一從換主
一主一從架構切主的兩種方案
可靠性優先:
先等seconds_behind_master小於一個閾值;
設定Master為只讀;
等待Slave完全同步了Master的資料;
設定Slave可寫;
切寫的流量到Slave;
這中間,當設定Master為只讀時,整個系統不可寫,所以又不可用的時間。這也是為什麼一開始就最好等seconds_behind_master很小時在做這個事情,不然主從延遲很大,不可用的視窗期就很久。
可用性優先:
不等Slave完全同步,直接設定Slave可寫,並且切流量。
這個方案系統幾乎沒有不可用的視窗期,但是因為Slave同時接收了業務寫請求以及之前Master未同步過來的資料,就會造成資料不一致。
簡單的理解就是執行順序可能有問題。比如a操作先在Master上執行,然後b操作發生在切主以後,也就是在Slave上執行,並且由於主從延遲,之前的a操作還沒有同步到Slave,那麼就會出現對於Slave而言,b先執行,a後執行,但是對於Master而言,a先執行,b後執行的不一致問題。
比如a和b都是插入有自增主鍵的表的操作,那麼如果是row模式,可能發生主鍵衝突,如果是statement模式,可能發生資料不一致;其實衝突還是比較好的,起碼可以暴露問題。如果資料不一致,後面修復資料可能相當難。
這兩種方案用哪個,取決於具體的場景,對一致性有要求的,必須可靠性優先;如果沒有要求,比如離線日誌類的,可用性優先也無妨。
其實從這裡我們也可以理解到,雙活架構的難點,如果同時有多個Master節點,在接受寫請求和binlog時,類似上面的情況,就可能會發生資料不一致問題。
相關文章
- MySQL 主從配置-之-一主一從MySql
- mysql主從複製(一):一主多從MySql
- 【mysql】mysql的資料庫主從(一主一從)MySql資料庫
- MySQL(14)---Docker搭建MySQL主從複製(一主一從)MySqlDocker
- MYSQL資料庫主從同步(一主一從)MySql資料庫主從同步
- MySQL主從同步(一主一從、一主多從、主從從)等結構的概述與配置MySql主從同步
- 一個月後,我們又從 MySQL 雙主切換成了主 - 從!MySql
- MySQL主從切換MySql
- Mysql實現主從複製(一主雙從)MySql
- mysql主從複製+主備切換MySql
- MySQL叢集之 主從複製 主主複製 一主多從 多主一叢 實現方式MySql
- 手工切換MySQL主從MySql
- mysql主從搭建切換MySql
- mysql之 mysql 5.6不停機主從搭建(一主一從基於GTID複製)MySql
- mysql for linux主從切換MySqlLinux
- Linux實現MySql資料庫的主從複製(一主一從)LinuxMySql資料庫
- mysql之 mysql 5.6不停機主從搭建(一主一從基於日誌點複製)MySql
- 記一次 MySQL 主從搭建MySql
- Mysql主從同步實戰(一)【知其然】MySql主從同步
- MySql雙主一從服務搭建MySql
- MySQL多主一從的實現MySql
- 一種MySQL主從同步加速方案MySql主從同步
- MySQL一主一從架構的實現MySql架構
- MySQL 5.7傳統複製到GTID線上切換(一主一從)MySql
- MySQL 配置多主一從 ( 8.0.18 版本 )MySql
- 【Mysql】Mariadb多主一從的搭建MySql
- MySQL主從MySql
- mysql之 mysql 5.6不停機雙主一從搭建(活躍雙主一從基於日誌點複製)MySql
- XtraBackup線上進行MySQL的主從部署一MySql
- MySQL主從複製與主主複製MySql
- Centos7 下配置mysql5.6主從複製例項(一主兩從)CentOSMySql
- MySQL的主從複製與MySQL的主主複製MySql
- mysql主從配置MySql
- mysql 主從配置MySql
- mysql配置主從MySql
- mysql主從同步MySql主從同步
- mysql主從搭建MySql
- 5.6 MySql主從自動切換指令碼MySql指令碼