MGR (MySQL グループ レプリケーション) は、バージョン 5.7 で追加された新しい機能であり、MySQL プラグインです。 MGR は、新しい高可用性と高スケーラビリティのソリューションです。クラスター内のどのノードのデータも同じであり、どのノードにも書き込むことができるため、真のマルチマスターが実現します。 主に以下の部分が含まれます。 API レイヤー: MySQL サーバーとのやり取りを完了し、サーバーのステータスを取得し、トランザクション管理を完了する役割を担います。 コンポーネント層: 主に 3 つの特定のコンポーネントが含まれます。Capture はトランザクション実行の関連情報を収集し、Applier はクラスター トランザクションをローカルに適用し、Recovery はノード データのリカバリを担当します。 レプリケーション層: 競合の検証、クラスター トランザクションの受信と適用を担当します。 クラスター通信層: Paxos プロトコルに基づくクラスター通信エンジンと上位層コンポーネントとの相互作用インターフェイス。 MGR グループレプリケーション: 従来の非同期レプリケーションと半同期レプリケーションの欠陥(データの一貫性を保証できない)に基づき、MySQL はバージョン 5.7.17 でグループ レプリケーション(MySQL グループ レプリケーション、略して MGR)を正式にリリースしました。 レプリケーション グループは複数のノードで構成されます。トランザクションの送信は、グループ内のノードの過半数 (N/2 + 1) によって決定され、承認されてからでないと実行できません。上図に示すように、レプリケーション グループは 3 つのノードで構成されています。コンセンサス レイヤーは、一貫性プロトコル レイヤーです。トランザクションの送信プロセス中に、グループ間通信が行われます。トランザクションは、2 つのノードが承認した後にのみ送信および応答できます。 グループ レプリケーションの導入は、主に、従来の非同期レプリケーションや半同期レプリケーションで発生する可能性があるデータの不整合の問題を解決するために行われます。グループ レプリケーションは、分散一貫性プロトコル (Paxos プロトコルのバリアント) に依存して、分散環境でデータの最終的な一貫性を実現し、真に高可用性のデータ ソリューションを提供します (本当に高可用性であるかどうかはまだ議論されていません)。これが提供するマルチ書き込みソリューションは、マルチアクティブソリューションの実現への希望をもたらします。 MGR は分散データベース アーキテクチャを実装し、その基礎となる分散基盤は Paxos プロトコルです。 Paxos は、分散データベース システムにおけるトランザクションの送信順序を保証するために使用されます。 MGR はスレーブ チャネルを使用しますが、リモートで送信された Binlog イベントを実行するためにこのチャネルの実行スレッド (Applier スレッド) のみを使用し、Binlog イベントの送信にはこのチャネルを使用しません。 MGR は、非同期レプリケーションの Binlog イベント転送メカニズムを使用せず、通信に MySQL サービス ポートも使用しません。 MGR は通信用に独立した TCP ポートを作成します。各 MySQL サーバー上のグループ レプリケーション プラグインはこのポートを介して相互に接続され、相互に直接通信できます。 Binlog イベントの送信は、非同期レプリケーションのような単純なポイントツーポイント送信ではありません。 MGR はデータを送信するときに Paxos プロトコルを使用します。 Paxos プロトコルは、データ転送の一貫性とアトミック性を保証します。 MGR は、マルチマスター レプリケーションを実装するためのコア テクノロジである Paxos プロトコルに基づいて、分散ステート マシン レプリケーション メカニズムを構築します。 主な利点は3つあります。 1. スプリット ブレインを回避: MGR ではスプリット ブレインは発生しません (ただし、ネットワーク パーティションが発生する可能性があることに注意してください。MGR の動作は、パラメータ group_replication_unreachable_majority_timeout=0/N の設定に応じて若干異なります)。 2. データ一貫性の保証: MGR は優れた冗長性機能を備えており、Binlog イベントが少なくともメンバーの半分以上に複製されることを保証できます。メンバーの半分以上が同時に障害を起こさない限り、データ損失は発生しません。また、MGR は、Binlog イベントがメンバーの半数以上に送信されない限り、ローカル メンバーがトランザクションの Binlog イベントを Binlog ファイルに書き込んでトランザクションをコミットしないことを保証します。これにより、ダウンしたサーバーに、グループ内のオンライン メンバーに存在しないデータが存在しないことが保証されます。したがって、ダウンしたサーバーを再起動すると、特別な処理を行わずにグループに参加できます。 3. マルチノード書き込みサポート: マルチ書き込みモードでは、クラスター内のすべてのノードに書き込むことができます。 上記は、MySQL MGR の利点の詳細です。MySQL MGR の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: Linux Jenkins 構成スレーブノード実装プロセス図
>>: Linux で AIDE に基づいてファイルシステムの整合性を検出する方法
目次1. データベース設計2. フロントエンドページ3. 完全なデモフロントエンド開発では、カスケー...
目次Jenkinsのインストールインストールポート番号を変更します(デフォルトのポートは8080です...
この記事では、参考までにタイマーを実装するためのVueの具体的なコードを紹介します。具体的な内容は次...
序文最近、小さなプログラムでリアルタイムにチャートを更新するという要件に遭遇しました。最初は wx-...
この記事では、参考までに、Vue の具体的なコードを共有して、簡単なショッピングカートを実装します。...
目次1. プラットフォームバスの紹介1.1. Linuxドライバの分離と階層化1.1.1. Linu...
mysql ストアド プロシージャの概念:特定のタスク (クエリと更新) を実行できる、データベース...
ユーザー名前空間は Linux 3.8 で追加された新しい名前空間で、ユーザー ID やグループ I...
この記事では、Centos7.6 システムと Oracle11g を例に挙げます。 1. まずデータ...
目次序文背景実施計画の考え方js ストレージ機能ソリューション設計やっと要約する序文どの SaaS ...
集計関数データセットに作用し、そのデータセットの値を返します。 count: 統計結果のレコード数。...
1. スタイルシートの先頭にコメント ブロックを追加して、スタイルシートの作成日、作成者、タグ、その...
多くの友人が、Docker でプロジェクトを実行する方法をずっと知りたがっていました。今日は、自分の...
Vueは宮殿グリッド回転抽選(CrossFireのxx転生に似ている)を実装しています。参考までに、...
以下のように表示されます。昨日: UNIX_TIMESTAMP(CAST(SYSDATE() AS ...