一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - MySQL 5.7增強版Semisync Replication性能優化

MySQL 5.7增強版Semisync Replication性能優化

2020-05-10 17:06服務器之家 Mysql

這篇文章主要介紹了MySQL 5.7增強版Semisync Replication性能優化,本文著重講解支持發送binlog和接受ack的異步化、支持在事務commit前等待ACK兩項內容,需要的朋友可以參考下

一 前言

前文 介紹了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,才返回給回話層 寫入成功,或者直到傳送日志發生超時,系統自動將為異步復制模式。

整體流程的邏輯圖

MySQL 5.7增強版Semisync Replication性能優化

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的反饋。整體流程的邏輯圖

MySQL 5.7增強版Semisync Replication性能優化

大體的實現思路是:

備庫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 沒有應用。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩毛片高清在线看 | 奇米狠狠色 | 欧美牛逼aa | 欧美夜夜精品一级爽 | 四虎在线最新永久免费 | 欧美一级特黄特色大片免费 | 欧美胖逼| 成人在线一区二区三区 | 99视频在线观看视频一区 | 国产va免费精品高清在线 | 亚洲第一色区 | 女张腿男人桶羞羞漫画 | 国产免费福利片 | 2023毛片| 波多野结衣伦理在线观看 | 久久久久久久电影 | 恩爱夫妇交换小说 | 极品美女aⅴ高清在线观看 极品ts赵恩静和直男激战啪啪 | 国产精品www视频免费看 | 乌克兰粉嫩摘花第一次 | 欧美人妖另类性hd | 无遮18禁在线永久免费观看挡 | 色综合色狠狠天天综合色hd | 成人aqq| 久久精品午夜一区二区福利 | 国产欧美精品 | 亚洲日韩欧美一区二区在线 | 小黄文污到你湿 | 吉泽明步高清无码中文 | 忘忧草研究院一二三 | 五月九九 | 日韩一二三 | 亚洲 日本 中文字幕 制服 | 亚洲欧美日韩中文字幕网址 | 深夜福利一区 | 国产日本免费 | 黄瓜污视频 | 91麻豆精品激情在线观看最新 | 精品视频在线播放 | 亚洲欧美在线观看首页 | 日韩性公交车上xxhd免费 |