滴滴一面:MySQL主從複製不一致,主要原因是?

文章很長,且持續更新,建議收藏起來,慢慢讀!瘋狂創客圈總目錄 博客園版 爲您奉上珍貴的學習資源 :

免費贈送 :《尼恩Java面試寶典》 持續更新+ 史上最全 + 面試必備 2000頁+ 面試必備 + 大廠必備 +漲薪必備
免費贈送 :《尼恩技術聖經+高併發系列PDF》 ,幫你 實現技術自由,完成職業升級, 薪酬猛漲!加尼恩免費領
免費贈送 經典圖書:《Java高併發核心編程(卷1)加強版》 面試必備 + 大廠必備 +漲薪必備 加尼恩免費領
免費贈送 經典圖書:《Java高併發核心編程(卷2)加強版》 面試必備 + 大廠必備 +漲薪必備 加尼恩免費領
免費贈送 經典圖書:《Java高併發核心編程(卷3)加強版》 面試必備 + 大廠必備 +漲薪必備 加尼恩免費領

免費贈送 資源寶庫: Java 必備 百度網盤資源大合集 價值>10000元 加尼恩領取


滴滴一面:MySQL主從複製不一致,主要原因是?

說在前面

在40歲老架構師 尼恩的讀者交流羣(50+)中,最近有小夥伴拿到了一線互聯網企業如滴滴、極兔、有贊、希音、百度、網易的面試資格,遇到很多很重要的面試題:

  • 什麼情況下MySQL主從複製會出現不一致?

  • 如何預防及解決MySQL主從複製不一致?

所以,這裏尼恩給大家做一下系統化、體系化的梳理,使得大家可以充分展示一下大家雄厚的 “技術肌肉”,讓面試官愛到 “不能自已、口水直流”

也一併把這個題目以及參考答案,收入咱們的 《尼恩Java面試寶典PDF》V111版本,供後面的小夥伴參考,提升大家的 3高 架構、設計、開發水平。

最新《尼恩 架構筆記》《尼恩高併發三部曲》《尼恩Java面試寶典》的PDF,請關注本公衆號【技術自由圈】獲取,後臺回覆:領電子書

一、什麼原因會造成MySQL主從複製不一致

導致主從不一致的原因主要有:

1、人爲原因導致從庫與主庫數據不一致(從庫寫入)

2、主從複製過程中,主庫異常宕機

3、設置了ignore/do/rewrite等replication等規則

4、binlog非row格式

5、異步複製本身不保證,半同步存在提交讀的問題,增強半同步起來比較完美。 但對於異常重啓(Replication Crash Safe),從庫寫數據(GTID)的防範,還需要策略來保證。

6、從庫中斷很久,binlog應用不連續,監控並及時修復主從

7、從庫啓用了諸如存儲過程,從庫禁用存儲過程等

8、數據庫大小版本/分支版本導致數據不一致?,主從版本統一

9、備份的時候沒有指定參數 例如mysqldump --master-data=2 等

10、主從sql_mode 不一致

11、一主二從環境,二從的server id一致

12、MySQL自增列 主從不一致

13、主從信息保存在文件裏面,文件本身的刷新是非事務的,導致從庫重啓後開始執行點大於實際執行點

14、採用5.6的after_commit方式半同步,主庫當機可能會引起主從不一致,要看binlog是否傳到了從庫

15、啓用增強半同步了(5.7的after_sync方式),但是從庫延遲超時自動切換成異步複製

二、如何預防及解決?

預防和解決的方案有:

1、master:innodb_flush_log_at_trx_commit=1&sync_binlog=1

2、slave:master_info_repository=“TABLE”&relay_log_info_repository=“TABLE”&relay_log_recovery=1

3、設置從庫庫爲只讀模式

4、可以使用5.7增強半同步避免數據丟失等

5、binlog row格式

6、必須引定期的數據校驗機制

7、當使用延遲複製的時候,此時主從數據也是不一致的(計劃內),但在切換中,不要把延遲從提升爲主庫哦~

8、mha在主從切換的過程中,因主庫系統宕機,可能造成主從不一致(mha本身機制導致這個問題)

三、MySQL 5.7的複製架構,在有異步複製、半同步、增強半同步、MGR等的生產中,該如何選擇?

(一)生產環境中

幾種複製場景都有存在的價值。下面分別描述一下:

1.從成熟度上來選擇,推薦:異步複製(GTID+ROW)

2.從數據安全及更高性能上選擇:增強半同步 (在這個結構下也可以把innodb_flush_log_trx_commit調整到非1, 從而獲得更好的性能)

3.對於主從切換控制覺的不好管理,又對數據一致性要求特別高的場景,可以使用MGR

(二)理由

1.異步複製,相對來講非常成熟,對於環境運維也比較容易上手

2.增強半同步複製,可以安全的保證數據傳輸到從庫上,對於單節點的配置上不用要求太嚴格,特別從庫上也可以更寬鬆一點,而且在一致性和性能有較高的提升,但對運維上有一定的要求

3.MGR組複製。相對增強半同步複製,MGR更能確保數據的一致性,事務的提交,必須經過組內大多數節點(n/2+1)決議並通過,才能得以提交。MGR架構對運維難度要更高,不過它也更完美

總的來講,從技術實現上來看:MGR> 增強半同步>異步複製。

說在最後

MySQL 相關面試題,是非常常見的面試題。

以上的內容,如果大家能對答如流,如數家珍,基本上 面試官會被你 震驚到、吸引到。

在面試之前,建議大家系統化的刷一波 5000頁《尼恩Java面試寶典PDF》,並且在刷題過程中,如果有啥問題,大家可以來 找 40歲老架構師尼恩交流。

最終,讓面試官愛到 “不能自已、口水直流”。offer, 也就來了。

技術自由的實現路徑:

實現你的 架構自由:

喫透8圖1模板,人人可以做架構

10Wqps評論中臺,如何架構?B站是這麼做的!!!

阿里二面:千萬級、億級數據,如何性能優化? 教科書級 答案來了

峯值21WQps、億級DAU,小遊戲《羊了個羊》是怎麼架構的?

100億級訂單怎麼調度,來一個大廠的極品方案

2個大廠 100億級 超大流量 紅包 架構方案

… 更多架構文章,正在添加中

實現你的 響應式 自由:

響應式聖經:10W字,實現Spring響應式編程自由

這是老版本 《Flux、Mono、Reactor 實戰(史上最全)

實現你的 spring cloud 自由:

Spring cloud Alibaba 學習聖經》 PDF

分庫分表 Sharding-JDBC 底層原理、核心實戰(史上最全)

一文搞定:SpringBoot、SLF4j、Log4j、Logback、Netty之間混亂關係(史上最全)

實現你的 linux 自由:

Linux命令大全:2W多字,一次實現Linux自由

實現你的 網絡 自由:

TCP協議詳解 (史上最全)

網絡三張表:ARP表, MAC表, 路由表,實現你的網絡自由!!

實現你的 分佈式鎖 自由:

Redis分佈式鎖(圖解 - 秒懂 - 史上最全)

Zookeeper 分佈式鎖 - 圖解 - 秒懂

實現你的 王者組件 自由:

隊列之王: Disruptor 原理、架構、源碼 一文穿透

緩存之王:Caffeine 源碼、架構、原理(史上最全,10W字 超級長文)

緩存之王:Caffeine 的使用(史上最全)

Java Agent 探針、字節碼增強 ByteBuddy(史上最全)

實現你的 面試題 自由:

4800頁《尼恩Java面試寶典 》 40個專題

免費獲取11個技術聖經PDF:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章