ホームページ >データベース >mysql チュートリアル >Mysql マスターとスレーブの 3 つのレプリケーション モードとは何ですか?
MySQL 非同期レプリケーションは、マスター/スレーブ レプリケーション プロセス中のデフォルトのレプリケーション モードです。レプリケーションには、マスター I/O スレッド、スレーブ I/O スレッド、およびスレーブ SQL スレッドを含む 3 つのスレッドが関係します。非同期レプリケーションであるため、マスター トランザクションの送信をスレーブが確認する必要はありません。つまり、マスター I/O スレッドがトランザクションを送信した後、スレーブからの応答確認を待つ必要がありません。 /O スレッド。マスターは、ビンログがリレー ログに書き込まれることを保証しません。ログ内。スレーブ I/O がビンログをリレー ログに書き込んだ後、それはスレーブ SQL スレッドによって非同期的に実行され、スレーブ mysql に適用されます。 . スレーブ I/O はスレーブ SQL からの応答確認を必要とせず、リレー ログが完全に書き込まれることを保証しません。
従来の非同期レプリケーションの欠点を補うために、MySQL はバージョン 5.5 で準同期レプリケーションを導入しました。従来の非同期レプリケーションよりも改善されました。マスター トランザクションがコミットされる前に、binlog ログがスレーブのリレー ログに書き込まれていることを確認する必要があります。スレーブからマスターへの応答を受信した後でのみ、トランザクションをコミットできます。それにもかかわらず、リレー ログの後半は非同期で実行するために SQL スレッドに渡されます。
##グループ レプリケーション従来の非同期レプリケーションと半同期レプリケーションの欠点に基づいて、データの一貫性が保証されず、MySQL は 5.7 で正式にバージョン 17 で正式に導入されました。グループ レプリケーション (MySQL グループ レプリケーション、MGR と呼ばれます) を起動します。 レプリケーション グループは複数のノードで構成されています。トランザクションの送信は、送信する前にグループ内の過半数のノード (N / 2 1) によって解決および承認される必要があります。上図に示すように、レプリケーション グループは 3 つのノードで構成されます。コンセンサス層は整合性プロトコル層です。トランザクションの送信プロセス中にグループ間通信が発生します。2 つのノードがトランザクションを解決 (認証) した場合にのみ、トランザクションは実行できます。最終的には解決されます。送信して応答してください。 グループ レプリケーションを導入する主な目的は、従来の非同期レプリケーションまたは半同期レプリケーションによって引き起こされるデータの不整合の問題を解決することです。グループ レプリケーションは、分散整合性プロトコル (Paxos プロトコルのバリアント) に依存して、分散データの究極の整合性を実現し、真のデータ高可用性ソリューションを提供します (本当に高可用性であるかどうかはまだ議論されていません)。これが提供するマルチ書き込みソリューションは、マルチアクティブ ソリューションを実現するという希望をもたらします。 MGR 環境では、2/n 1 アルゴリズムを実装するには、サーバーの数が 3 つ以上の奇数である必要があります。 レプリケーション グループは複数のノード (データベース インスタンス) で構成されます。グループ内の各ノードはデータの独自のコピーを維持し (何も共有しない)、アトミック メッセージとグローバル順序付けを実装します。メッセージを使用して、グループ内のインスタンス データの一貫性を実現します。 MGR のソリューションには次の機能が追加されましたデータ整合性保証:クラスター内のほとんどのノードがログを受信できるようにします
ノード書き込みサポート: マルチ書き込みモードでは、クラスター内のすべてのノードに書き込むことができます (ただし、高いデータ一貫性を確保するために 1 から高までの同時実行シナリオを考慮すると、運用環境ではマルチマスター書き込みは選択されず、単一マスター クラスターを使用します)
#フォールト トレランス:システムに障害が発生した場合 (スプリット ブレインを含む)、システムが引き続き利用可能であることを保証し、二重書き込みがシステムに影響を与えないようにします。MGR ソリューションの現在の影響
以上がMysql マスターとスレーブの 3 つのレプリケーション モードとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。