談談Mysql資料庫主從同步延遲分析及解決方案

來源:互聯網
上載者:User

標籤:nod   解決   監控   修改   預設   sql   seconds   show   日誌   

一、MySQL的資料庫主從複製原理

MySQL主從複製實際上基於二進位日誌,原理可以用一張圖來表示:

分為四步走:

1. 主庫對所有DDL和DML產生的日誌寫進binlog;

2. 主庫產生一個 log dump 線程,用來給從庫I/O線程讀取binlog;

3. 從庫的I/O Thread去請求主庫的binlog,並將得到的binlog日誌寫到relay log檔案中;

4. 從庫的SQL Thread會讀取relay log檔案中的日誌解析成具體操作,將主庫的DDL和DML操作事件重放。

關於DDL和DML

SQL語言共分為四大類:查詢語言DQL,控制語言DCL,操縱語言DML,定義語言DDL。

DQL:可以簡單理解為SELECT語句;

DCL:GRANT、ROLLBACK和COMMIT一類語句;

DML:可以理解為CREATE一類的語句;

DDL:INSERT、UPDATE和DELETE語句都是;

二、主從複製存在的問題

1. 主庫宕機後,資料可能丟失;

2. 主從同步延遲。

三、MySQL資料庫主從同步延遲產生原因

原因分析

MySQL的主從複製都是單線程的操作,主庫對所有DDL和DML產生的日誌寫進binlog,由於binlog是順序寫,所以效率很高。Slave的SQL Thread線程將主庫的DDL和DML操作事件在slave中重放。DML和DDL的IO操作是隨即的,不是順序的,成本高很多。另一方面,由於SQL Thread也是單線程的,當主庫的並發較高時,產生的DML數量超過slave的SQL Thread所能處理的速度,或者當slave中有大型query語句產生了鎖等待那麼延時就產生了。

常見原因:Master負載過高、Slave負載過高、網路延遲、機器效能太低、MySQL配置不合理。

四、主從延時排查方法

通過監控 show slave status 命令輸出的Seconds_Behind_Master參數的值來判斷:

NULL,表示io_thread或是sql_thread有任何一個發生故障;

0,該值為零,表示主從複製良好;

正值,表示主從已經出現延時,數字越大表示從庫延遲越嚴重。

五、解決方案

解決資料丟失的問題:

1. 半同步複製

從MySQL5.5開始,MySQL已經支援半同步複製了,半同步複製介於非同步複製和同步複製之間,主庫在執行完事務後不立刻返回結果給用戶端,需要等待至少一個從庫接收到並寫到relay log中才返回結果給用戶端。相對於非同步複製,半同步複製提高了資料的安全性,同時它也造成了一個TCP/IP往返耗時的延遲。

2. 主庫配置sync_binlog=1,innodb_flush_log_at_trx_commit=1

sync_binlog的預設值是0,MySQL不會將binlog同步到磁碟,其值表示每寫多少binlog同步一次磁碟。

innodb_flush_log_at_trx_commit為1表示每一次事務提交或事務外的指令都需要把日誌flush到磁碟。

注意:將以上兩個值同時設定為1時,寫入效能會受到一定限制,只有對資料安全性要求很高的情境才建議使用,比如涉及到錢的訂單支付業務,而且系統I/O能力必須可以支撐!

解決從庫複寫延遲的問題:

1. 最佳化網路

2. 升級Slave硬體設定

3. Slave調整參數,關閉binlog,修改innodb_flush_log_at_trx_commit參數值

4. 升級MySQL版本到5.7,使用並行複製

更多最佳化方案措施歡迎廣大博友補充並糾正啦...

談談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.