深入mysql主從復(fù)制延遲問題的詳解
面試mysqldba的時(shí)候遇到一個(gè)題:
描述msyql replication 機(jī)制的實(shí)現(xiàn)原理,如何在不停掉mysql主庫的情況下,恢復(fù)數(shù)據(jù)不一致的slave的數(shù)據(jù)庫節(jié)點(diǎn)?
MySQL的復(fù)制(replication)是一個(gè)異步的復(fù)制,從一個(gè)MySQL instace(稱之為Master)復(fù)制到另一個(gè)MySQL instance(稱之Slave)。實(shí)現(xiàn)整個(gè)復(fù)制操作主要由三個(gè)進(jìn)程完成的,其中兩個(gè)進(jìn)程在Slave(Sql進(jìn)程和IO進(jìn)程),另外一個(gè)進(jìn)程在Master(IO進(jìn)程)上。
引用新浪某位大牛的話:mysql復(fù)制就是一句話:基于binlog的單線程異步復(fù)制過程。
MySQL Replication復(fù)制的基本過程如下:
1、Slave上面的IO進(jìn)程連接上Master,并請求從指定日志文件的指定位置(或者從最開始的日志)之后的日志內(nèi)容;
mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name',
-> MASTER_USER='replication_user_name',
-> MASTER_PASSWORD='replication_password',
-> MASTER_LOG_FILE='recorded_log_file_name',
-> MASTER_LOG_POS=recorded_log_position;
2、Master接收到來自Slave的IO進(jìn)程的請求后,通過負(fù)責(zé)復(fù)制的IO進(jìn)程根據(jù)請求信息讀取制定日志指定位置之后的日志信息,返回給Slave的IO進(jìn)程。返回信息中除了日志所包含的信息之外,還包括本次返回的信息已經(jīng)到Master端的bin-log文件的名稱以及bin-log的位置;
3、Slave的IO進(jìn)程接收到信息后,將接收到的日志內(nèi)容依次添加到Slave端的relay-log文件的最末端,并將讀取到的Master端的bin-log的文件名和位置記錄到master-info文件中,以便在下一次讀取的時(shí)候能夠清楚的高速M(fèi)aster“我需要從某個(gè)bin-log的哪個(gè)位置開始往后的日志內(nèi)容,請發(fā)給我”;
4、Slave的Sql進(jìn)程檢測到relay-log中新增加了內(nèi)容后,會馬上解析relay-log的內(nèi)容成為在Master端真實(shí)執(zhí)行時(shí)候的那些可執(zhí)行的內(nèi)容,并在自身執(zhí)行
操作過程:
(1)登陸主服務(wù)器,查看主服務(wù)器的狀態(tài)
mysql>show master status;
找到現(xiàn)階段master的數(shù)據(jù)偏移量的值。
(2)登陸從服務(wù)器,執(zhí)行同步操作。
mysql>stop slave;
mysql > change master to 直接定位到這個(gè)值得位置; 這里也就相當(dāng)于給slave指明了相應(yīng)的位置。
mysql > start slave;
(3)從服務(wù)器上查看狀態(tài)
mysql > show slave status
相關(guān)文章
MySQL鎖等待超時(shí)問題的原因和解決方案(Lock wait timeout exceed
在數(shù)據(jù)庫開發(fā)和管理中,鎖等待超時(shí)是一個(gè)常見而棘手的問題,對于使用 MySQL 的應(yīng)用程序,尤其是采用 InnoDB 存儲引擎的場景,這一問題更是屢見不鮮,本文給大家介紹了MySQL鎖等待超時(shí)問題的原因和解決方案,需要的朋友可以參考下2024-11-11Mysql存儲過程、觸發(fā)器、事件調(diào)度器使用入門指南
存儲過程(Stored Procedure)是一種在數(shù)據(jù)庫中存儲復(fù)雜程序的數(shù)據(jù)庫對象。為了完成特定功能的SQL語句集,經(jīng)過編譯創(chuàng)建并保存在數(shù)據(jù)庫中,本文給大家介紹Mysql存儲過程、觸發(fā)器、事件調(diào)度器使用入門指南,感興趣的朋友一起看看吧2022-01-01mysql實(shí)現(xiàn)connect by start with方式
本文介紹了MySQL中實(shí)現(xiàn)層級查詢的幾種方法,并分享了一種使用變量循環(huán)賦值的方式,通過實(shí)驗(yàn)驗(yàn)證了該方法的有效性2024-12-12mysql查詢過去24小時(shí)內(nèi)每小時(shí)數(shù)據(jù)量的方法(精確到分鐘)
我們經(jīng)常遇到類似這樣的需求,查詢最近N秒、N分鐘、N小時(shí)的數(shù)據(jù)及N天的數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于mysql查詢過去24小時(shí)內(nèi)每小時(shí)數(shù)據(jù)量(精確到分鐘)的相關(guān)資料,需要的朋友可以參考下2023-03-03mysql 8.0.15 安裝圖文教程及數(shù)據(jù)庫基礎(chǔ)
這篇文章主要為大家詳細(xì)介紹了mysql 8.0.15 安裝方法圖文教程,及數(shù)據(jù)庫基礎(chǔ)知識,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03