mysql replication延迟_深入mysql主从复制延迟问题的详解
面試mysqldba的時候遇到一個題:
描述msyql replication 機制的實現(xiàn)原理,如何在不停掉mysql主庫的情況下,恢復(fù)數(shù)據(jù)不一致的slave的數(shù)據(jù)庫節(jié)點?
MySQL的復(fù)制(replication)是一個異步的復(fù)制,從一個MySQL instace(稱之為Master)復(fù)制到另一個MySQL instance(稱之Slave)。實現(xiàn)整個復(fù)制操作主要由三個進程完成的,其中兩個進程在Slave(Sql進程和IO進程),另外一個進程在Master(IO進程)上。
引用新浪某位大牛的話:mysql復(fù)制就是一句話:基于binlog的單線程異步復(fù)制過程。
MySQL Replication復(fù)制的基本過程如下:1、Slave上面的IO進程連接上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進程的請求后,通過負責(zé)復(fù)制的IO進程根據(jù)請求信息讀取制定日志指定位置之后的日志信息,返回給Slave的IO進程。返回信息中除了日志所包含的信息之外,還包括本次返回的信息已經(jīng)到Master端的bin-log文件的名稱以及bin-log的位置;
3、Slave的IO進程接收到信息后,將接收到的日志內(nèi)容依次添加到Slave端的relay-log文件的最末端,并將讀取到的Master端的bin-log的文件名和位置記錄到master-info文件中,以便在下一次讀取的時候能夠清楚的高速Master“我需要從某個bin-log的哪個位置開始往后的日志內(nèi)容,請發(fā)給我”;
4、Slave的Sql進程檢測到relay-log中新增加了內(nèi)容后,會馬上解析relay-log的內(nèi)容成為在Master端真實執(zhí)行時候的那些可執(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 直接定位到這個值得位置; 這里也就相當(dāng)于給slave指明了相應(yīng)的位置。
mysql > start slave;
(3)從服務(wù)器上查看狀態(tài)mysql > show slave status
總結(jié)
以上是生活随笔為你收集整理的mysql replication延迟_深入mysql主从复制延迟问题的详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图解leetcode初级算法python
- 下一篇: uwsgi怎么通过浏览器访问某个脚本_4