mysql小白系列_10 mysql主從複製原理

來源:互聯網
上載者:User

標籤:擷取資料   ==   markdown   art   檔案名稱   不一致   info   run   inf   

1.如何解決主從複寫延遲的問題?(1)主從複製原理

http://www.cnblogs.com/jenvid/p/8410922.html

  • 1.salve執行slave start,salve服務IO線程會通過授權的使用者串連上master,並請求master從指定的檔案和位置之後發送bin-log日誌內容
  • 2.master伺服器接收到來自slave伺服器的IO線程請求後,master伺服器上的IO線程根據slave伺服器發送的指定bin-log日誌之後的內容,然後返回給slave的IO線程,返回的資訊中出了bin-log日誌內容wait,還有本次返回日誌內容後在master伺服器端新的binlog檔案名稱已經在binlog中的下一個指定更新位
  • 3.slave的IO線程接收到資訊後,將接收到的日誌內容依次添加到salve端的relay-log檔案的最末端,並將讀取到的master端的bin-log的檔案名稱和位置記錄到master-info檔案中,以便下一次讀取的時候能夠清楚的告訴master“我需要從某個bin-log的哪個位置開始往後的日誌內容,請發給我”、
  • 4.slave的SQL線程檢測到relay-log中新增了內容後,會馬上解析relay-log的內容成為master端真實執行時候的那些可執行檔內容,並在自身執行。
(2)產生延遲的原因
  • 1.主從複製是單線程操作,非同步進行
  • 2.master的binlog是順序讀寫,效率高、輸送量高,DDL/DML是並行作業的
  • 3.slave的relay-log實施的時候,DML和DLL是隨機操作且Slave_SQL_Running是單線程的,如果還有lock爭用,成本就更高了
  • 4.master TPS並發高峰時,產生的DDL數量超過slave一個sql線程所能承受的範圍,延遲就產生了
  • 5.max_allowed_packet主從不一致
  • 6.自增ID起始位置不一樣
  • 7.主高從低版本不一致,新特性不相容
(3)解決延遲問題
  • 1.主庫DDL快速執行DDL操作
  • 2.主庫設定雙1sync_binlog=1 innodb_flush_log_at_trx_commit=1
  • 3.從庫上可以設定為雙0
  • 4.slave_net_timeoutslave讀取log資料失敗後,等待多久重建立立串連並擷取資料
  • 5.master-connect-retry重建立立主從串連時,如果串連失敗,重試的等待時間
  • 6.從庫使用更好的硬體
  • 7.專用slave伺服器,專用讀伺服器,專用備份伺服器
  • 8.使用semi_sync外掛程式進行半同步,損失效能
2.如何判斷主從複製是否同步?(1)show slave status\G
             Slave_IO_Running: Yes            Slave_SQL_Running: Yes        Seconds_Behind_Master: 0

Seconds_Behind_Master是通過比較sql_thread執行的event的timestamp和io_thread複製好的 event的timestamp(簡寫為ts)進行比較的差值

(2)如果 Relay_master_Log_File == Master_Log_File
  1. Read_Master_Log_Pos == Exec_Master_Log_Pos,則認為是同步的

  2. 主庫show master status\GPosition與從庫的Read_Master_Log_Pos相等,也是同步的

(3)使用第三方工具

mk-heartbeat,Maatkit

3.以下參數設為1怎麼理解?

set global sql_slave_skip_counter=1;

https://dev.mysql.com/doc/refman/5.6/en/set-global-sql-slave-skip-counter.html

  • (1)從庫需要跳過某個無法執行的命令,在slave stop的狀態下設定global sql_slave_skip_counter=N,跳過接下來的N個事件

一個event group包含多個有序的events
一個insert包含三個event,begin/insert/commit
對於事務性的表,一個event group代表一個事務
對於非事務性的表,一個event group代表一個單獨的SQL語句

  • (2)N=1,會跳過若干個event,直到當前所在事務結束
  • (3)N>1,則每跳過一個event都要N--

http://dinglin.iteye.com/blog/1236330

mysql小白系列_10 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.