mysql 鏈式複製

來源:互聯網
上載者:User

標籤:mysql;鏈式複製;

    最近項目中有用到雙主雙從結構的mysql 配置。按平常預設配置, 測試資料不一致。 查資料鏈式數制需要開啟log-slave-updates 選項 ,即通常情況,從伺服器從主伺服器接收到的更新不記入它的二進位日誌,開戶log-slave-updates選項從伺服器將其SQL線程執行的更新記入到從伺服器自己的二進位日誌。

    我的配置是雙主, 然後每個主還有一台從機,

    令名稱為: M1  M2   S1  S2

    M1,M2 是雙master 配置, S1是M1的從機 ,S2是M2的從機。

    邏輯上, 如果從M2上寫入, M1為從,S1就是M1的從。   M2->M1->S1 ,另一個同理。

    

    根據上面的資訊,配置時M1,M2都要開啟log-slave-updates


參考資料:

--logs-slave-updates
通常情況,從伺服器從主伺服器接收到的更新不記入它的二進位日誌。該選項告訴從伺服器將其SQL線程執行的更新記入到從伺服器自己的二進位日誌。為了使該選項生效,還必須用--logs-bin選項啟動從伺服器以啟用二進位日誌。如果想要應用鏈式複製伺服器,應使用--logs-slave-updates。例如,可能你想要這樣設定:
A -> B -> C
也就是說,A為從伺服器B的主伺服器,B為從伺服器C的主伺服器。為了能工作,B必須既為主伺服器又為從伺服器。你必須用--logs-bin啟動A和B以啟用二進位日誌,並且用--logs-slave-updates選項啟動B。

以上是摘自mysql對於logs-slave-updates啟動選項的描述。
當然logs-slave-upates也可以寫入my.cnf :
//////////////////
log_slave_updates=1
//////////////////
當然在這種機制下可能有的同學會存在這麼個問題:
如果a->b b->a 這樣的雙master架構下,a,b都開啟log_slave_updates選項會不會出現無限迴圈的狀態。
mysql已經考濾到了這個問題,每條bin-log都會記錄執行語句的源server_id.當slave讀到語句的server_id等於本身的ID的時候,不會忽略執行,所以我們不用擔心a,b會不會無限迴圈下去。
基於以上這種情況,mysql的replication叢集將更加靈活,你如果需要可以做成各種各樣的鏈式複製。比如 a->b b->a b中設定log_slave_updates後還可以b->c. 這樣a,c中的資料也是一致的。

在一個master A上記錄開啟log_slave_updates = 1,這樣它機會記錄自己的binlog也會記錄來自master B的binlog(預設不記錄),這樣slave change master to masterA就相當於是masterA和masterB兩個master的slave了

本文出自 “willard_SA” 部落格,請務必保留此出處http://374400.blog.51cto.com/364400/1545053

mysql 鏈式複製

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.