深入mysql主從複寫延遲問題的詳解

來源:互聯網
上載者:User

面試mysqldba的時候遇到一個題:

描述msyql replication 機制的實現原理,如何在不停掉mysql主庫的情況下,恢複資料不一致的slave的資料庫節點?

MySQL的複製(replication)是一個非同步複製,從一個MySQL instace(稱之為Master)複製到另一個MySQL instance(稱之Slave)。實現整個複製操作主要由三個進程完成的,其中兩個進程在Slave(Sql進程和IO進程),另外一個進程在Master(IO進程)上。

引用新浪某位大牛的話:mysql複製就是一句話:基於binlog的單線程非同步複製過程。
MySQL Replication複製的基本過程如下:
1、Slave上面的IO進程串連上Master,並請求從指定記錄檔的指定位置(或者從最開始的日誌)之後的日誌內容;

複製代碼 代碼如下: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進程的請求後,通過負責複製的IO進程根據請求資訊讀取制定日誌指定位置之後的日誌資訊,返回給Slave的IO進程。返回資訊中除了日誌所包含的資訊之外,還包括本次返回的資訊已經到Master端的bin-log檔案的名稱以及bin-log的位置;

3、Slave的IO進程接收到資訊後,將接收到的日誌內容依次添加到Slave端的relay-log檔案的最末端,並將讀取到的Master端的bin-log的檔案名稱和位置記錄到master-info檔案中,以便在下一次讀取的時候能夠清楚的高速Master“我需要從某個bin-log的哪個位置開始往後的日誌內容,請發給我”;

4、Slave的Sql進程檢測到relay-log中新增加了內容後,會馬上解析relay-log的內容成為在Master端真實執行時候的那些可執行檔內容,並在自身執行

操作過程:
(1)登陸主伺服器,查看主伺服器的狀態
mysql>show master status;
找到現階段master的資料位移量的值。

(2)登陸從伺服器,執行同步操作。
mysql>stop slave;
mysql > change master to 直接定位到這個值得位置; 這裡也就相當於給slave指明了相應的位置。
mysql > start slave;

(3)從伺服器上查看狀態
mysql > show slave status

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.