MySQL MGR の利点は何ですか?

MySQL MGR の利点は何ですか?

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 の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • MySQL 8.0.15 で MGR シングル マスターと複数スレーブを構成する方法
  • mysql MGR シングルマスターとマルチマスターモードの切り替えの知識ポイントの詳細な説明
  • mysql 8.0.18 mgr のインストールと切り替え機能
  • MySQL 8.0.18 はクローンプラグインを使用して MGR 実装を再構築します
  • MySQL 5.7 MGR シングルマスター決定マスターノード方式の詳細説明
  • MySQL MGR 構築時の一般的な問題と解決策

<<:  Linux Jenkins 構成スレーブノード実装プロセス図

>>:  Linux で AIDE に基づいてファイルシステムの整合性を検出する方法

推薦する

CSS3 とテーブルタグを使用して円軌道アニメーションを実装するためのサンプルコード

html: 実際には、テーブルタグに従っていくつかの実線の円 div を正六角形に配置し、div コ...

Firefox で Flash を再生するためのオブジェクトとパラメータの書き方

コードをコピーコードは次のとおりです。 <object classid="clsid...

Alibaba Cloud ServerにMySQLデータベースをインストールする方法の詳細な説明

序文学習中に Zookeeper をインストールする必要があったため、仮想マシンに常に問題が発生した...

JS の 3 つの主要な問題、非同期性とシングルスレッドについて簡単に説明します。

目次シングルスレッド非同期シングルスレッドしかし、開発中にネットワーク リクエストやスケジュールされ...

CSS3はアニメーション効果を実現するためにvar()とcalc()関数を使用する。

ナレッジポイントをプレビューします。アニメーションフレーム背景グラデーションvar() と calc...

HTTP サーバーとクライアントのやり取りをシミュレートする Node.js+postman

目次1. NodeがHTTPサーバーを構築する2. HTTPサーバーがリクエストを取得する1. Po...

Vueのインストール方法の紹介

目次1. グローバルに登録されたコンポーネント2. グローバルカスタム指示vue 、新しいプラグイン...

VueのkeepAliveコンポーネントの機能と使い方の詳細な説明

序文面接中、多くの面接官は「keep-alive が何をするのか知っていますか?」と質問する際に V...

HTMLテキスト内のすべてのタグを置き換える方法

(?i) は大文字と小文字を区別しないことを意味します。大文字と小文字をすべて置き換えます。 htm...

MySQL オンラインリカバリ UNDO テーブルスペース 実戦記録

1 MySQL5.6 1.1 関連パラメータMySQL 5.6 では、innodb_undo_dir...

CSS でフローティングにより親要素の高さが崩れる問題を解決するいくつかの方法

以前は、フロートはレイアウトによく使用されていましたが、フローティングレイアウトを使用すると親要素の...

elasticsearchを使用してインデックスデータを定期的に削除する

1. ESを使うこともあるリソースが限られている、またはビジネス上のニーズにより、最新の期間のデータ...

MySQL の低速クエリの最適化: 理論と実践からの制限の利点

多くの場合、クエリの結果は最大で 1 つのデータ レコードになることが予想されます。この場合、制限 ...

nginx ベースのブラウザネゴシエーションキャッシュプロセスの詳細な説明

この記事は主に、nginx に基づいてブラウザネゴシエーションキャッシュを設定する詳細なプロセスを紹...

CentOS 6 は Docker を使用して Redis マスター スレーブ データベース操作例を展開します

この記事では、Docker を使用して Centos6 に Redis マスター/スレーブ データベ...