MySQL 5.7增強版Semisync Replication效能最佳化_Mysql

來源:互聯網
上載者:User

一 前言

前文 介紹了5.5/5.6 版本的MySQL semi sync 基礎原理和配置,隨著MySQL 5.7 的發布,新版本的MySQL修複了semi sync 的一些bug 並且增強了功能。

支援發送binlog和接受ack的非同步化;
支援在事務commit前等待ACK;
在server層判斷備庫是否要求半同步以減少Plugin鎖衝突;
解除binlog dump線程和lock_log的衝突等等。

本文重點分析 第1,2個改進項,因為原來的模式的確會影響系統的tps,新的非同步模式可以提高半同步模式下的系統交易處理能力。

二 最佳化

1、支援發送binlog和接受ack的非同步化

通過前面的介紹,我們知道Semisynchronous Replication模式下,app在主庫上提交一個事務/event,MySQL將每個事務寫入binary並且同步到到slave ,master會等待至少一個slave通知:slave 已經接收到傳過來的events並寫入relay log,才返回給回話層 寫入成功,或者直到傳送記錄發生逾時,系統自動將為非同步複製模式。

整體流程的邏輯圖

5.5 版本semi sync 設計的缺點:

    從原理以及上圖來看,舊版本的semi sync 受限於dump thread ,原因是dump thread 承擔了兩份不同且又十分頻繁的任務:傳送binlog 給slave ,還需要等待slave反饋資訊,而且這兩個任務是串列的,dump thread 必須等待 slave 返回之後才會傳送下一個 events 事務。dump thread 已然成為整個半同步提高效能的瓶頸在高並發業務情境下,這樣的機制會影響資料庫整體的TPS .

為瞭解決上述問題,在5.7.4版本的semi sync 架構中,獨立出一個 ack collector thread ,專門用於接收slave 的反饋資訊。這樣master 上有兩個進程獨立工作,可以同時發送binlog 到slave ,和接收slave的反饋。整體流程的邏輯圖

大體的實現思路是:

備庫IO線程使用TCP協議和主庫互動,讀寫socket可以同時進行,在開啟主庫semisync時,啟動一個後台線程,使用select監聽備庫串連socket;
dump線程不再等待備庫ACK;在ack reciver線程等待ACK時,dump線程還能繼續發送下一組group commit的binlog,進而提升TPS.

2 支援在事務commit前等待ACK;

   新版本的semi sync 增加了rpl_semi_sync_master_wait_point參數 來控制半同步模式下 主庫在返回給會話事務成功之前提交事務的方式。

該參數有兩個值:

AFTER_SYNC (預設值):master 將每個事務寫入binlog ,傳遞到slave,並且重新整理到磁碟。master等待slave 反饋接收到事務並重新整理到磁碟。一旦接到slave反饋,master在主庫提交事務並且返回結果給會話。 在AFTER_SYNC模式下,所有的用戶端在同一時刻查看已經提交的資料。假如發生主庫crash,所有在主庫上已經提交的事務已經同步到slave並記錄到relay log。此時切換到從庫,可以保障最小的資料損失。

AFTER_COMMIT: master 將每個事務寫入binlog ,傳遞到slave 重新整理到磁碟(relay log),然後在主庫提交事務。master在提交事務後等待slave 反饋接收到事務並重新整理到磁碟。一旦接到slave反饋,master將結果反饋給用戶端。
在AFTER_COMMIT模式下,如果slave 沒有應用日誌,此時master crash,系統failover到slave,app將探索資料出現不一致,在master提交而slave 沒有應用。

相關文章

聯繫我們

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