【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
- Linux實現MySql資料庫的主從複製(一主一從)LinuxMySql資料庫
- MySQL 5.7傳統複製到GTID線上切換(一主一從)MySql
- Mysql主從同步實戰(一)【知其然】MySql主從同步
- MySQL 配置多主一從 ( 8.0.18 版本 )MySql
- 記一次 MySQL 主從搭建MySql
- MySql雙主一從服務搭建MySql
- MySQL一主一從架構的實現MySql架構
- kubernetes使用StatefulSet部署mysql一主多從MySql
- mysql主從同步MySql主從同步
- mysql主從搭建MySql
- mysql主從配置MySql
- MySQL運維15-一主一從讀寫分離MySql運維
- mysql5.7主從複製,主主複製MySql
- Redis主從切換Redis
- CentOS6.5配置MYSQL一主多從詳解CentOSMySql
- MYSQL 主從不一致的原因分析MySql
- MySQL 主從切換延時高問題分析MySql
- mysql主從和主備的區別MySql
- 生產環境中mysql資料庫由主從關係切換為主主關係MySql資料庫
- MYSQL主從搭建5.6.38MySql
- MySQL主從複製MySql
- mysql 5.7主從配置MySql
- Oracle MySQL PG主從OracleMySql
- MySQL主從同步配置MySql主從同步
- docker mysql 主從配置DockerMySql
- 專題《一》mysql優化 ---------主從複製,讀寫MySql優化
- MySQL 5.7 多主一從(多源複製)同步配置MySql
- MySQL主從複製問題解決一例MySql