国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

簡單談談MySQL的半同步復制

2024-07-24 12:52:22
字體:
供稿:網(wǎng)友

簡介

MySQL通過復制(Replication)實現(xiàn)存儲系統(tǒng)的高可用。目前,MySQL支持的復制方式有:

    異步復制(Asynchronous Replication):原理最簡單,性能最好。但是主備之間數(shù)據(jù)不一致的概率很大。 半同步復制(Semi-synchronous Replication):相比異步復制,半同步復制犧牲了一定的性能,提升了主備之間數(shù)據(jù)的一致性(有一些情況還是會出現(xiàn)主備數(shù)據(jù)不一致)。 組復制(Group Replication):基于Paxos算法實現(xiàn)分布式數(shù)據(jù)復制的強一致性。只要大多數(shù)機器存活就能保證系統(tǒng)可用。相比半同步復制,Group Replication的數(shù)據(jù)一致性和系統(tǒng)可用性更高。

    本文主要討論MySQL半同步復制。

    半同步復制的基本流程

    MySQL半同步復制的實現(xiàn)是建立在MySQL異步復制的基礎上的。MySQL支持兩種略有不同的半同步復制:AFTER_SYNC和AFTER_COMMIT(受rpl_semi_sync_master_wait_wait_point控制)。

    開啟半同步復制時,Master在返回之前會等待Slave的響應或超時。當Slave超時時,半同步復制退化成異步復制。這也是MySQL半同步復制存在的一個問題。本文不討論Salve超時的情形(不討論異步復制)。

    半同步復制AFTER_SYNC模式的基本流程

    AFTER_SYNC模式是MySQL 5.7才支持的半同步復制方式,也是MySQL5.7默認的半同步復制方式:

    Prepare the transaction in the storage engine(s).
    Write the transaction to the binlog, flush the binlog to disk.
    Wait for at least one slave to acknowledge the reception for the binlog events for the transaction.
    Commit the transaction to the storage engine(s).

    半同步復制AFTER_COMMIT模式的基本流程

    MySQL 5.5和5.6的半同步復制只支持AFTER_COMMIT:

    Prepare the transaction in the storage engine(s).
    Write the transaction to the binlog, flush the binlog to disk.
    Commit the transaction to the storage engine(s).
    Wait for at least one slave to acknowledge the reception for the binlog events for the transaction.

    AFTER_SYNC和AFTER_COMMIT兩種方式的小結(jié)

    AFTER_SYNC: 日志復制到Slave之后,Master再commit。
    所有在master上commit的事務都已經(jīng)復制到slave。
    所有已經(jīng)復制到slave的事務在master不一定commit了(比如,master將日志復制到slave之后,在commit之前宕機了)

    AFTER_COMMIT:Master commit之后再將日志復制到Slave。
    所有master上commit的事務不一定復制到slave。(比如,master commit之后,還沒來得及將日志復制到slave就宕機了)
    所有已經(jīng)復制到slave的事務在master上一定commit了。
    很明顯,AFTER_COMMIT在master宕機的情況下,無法保證數(shù)據(jù)的一致性(master commit之后,還沒來得及將日志復制到slave就宕機了)。本文接下來只討論AFTER_SYNC模式。
    MySQL5.7.3開始支持配置半同步復制等待Slave應答的個數(shù):rpl_semi_sync_master_wait_slave_count 。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 武隆县| 绥宁县| 栾川县| 锡林郭勒盟| 吐鲁番市| 巫溪县| 上栗县| 龙门县| 保定市| 静海县| 牙克石市| 郯城县| 汝南县| 蒙城县| 南川市| 吉安市| 本溪市| 丹凤县| 陆丰市| 措美县| 双城市| 城固县| 夏津县| 邛崃市| 祥云县| 麻栗坡县| 北辰区| 油尖旺区| 沭阳县| 衢州市| 卢湾区| 常山县| 玉田县| 南木林县| 和田市| 登封市| 瑞丽市| 阳原县| 白山市| 齐齐哈尔市| 文登市|