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 に基づいてファイルシステムの整合性を検出する方法

推薦する

Linux 上で Docker コンテナを作成、一覧表示、削除する方法の概要

1. Dockerコンテナを起動する以下のコマンドを使用して新しい Docker コンテナを起動しま...

Vue.js ソースコード解析のカスタム手順の詳細な説明

序文コア機能のデフォルトの組み込みディレクティブ (v-model および v-show) に加えて...

Vue+Echart 棒グラフで疫病データ統計を実現

目次1. まずプロジェクトにechartsをインストールします2. echartsに縦棒グラフテンプ...

VMware 仮想マシンでの Centos8 ブリッジの静的 IP 設定方法

1. ネットワーク接続方法がブリッジされていることを確認する物理ネットワーク接続ステータスのコピーを...

CSS 画像アニメーション効果のサンプルコード(フォトフレーム)

この記事では、CSS 画像アニメーション効果(フォトフレーム)のサンプルコードを紹介し、皆さんと共有...

nginxのリソースキャッシュ設定の詳細な説明

私はずっとキャッシュについて学びたいと思っていました。結局のところ、キャッシュはフロントエンドのパフ...

Linux ログ表示方法 6 つのまとめ

バックエンド プログラマーは、さまざまな場所で Linux を扱います。Linux ログの読み方がわ...

tomcat+nginx を使用してマルチアプリケーション デプロイメントを実装するためのサンプル コード

目次マルチアプリケーションの展開1-Tomcat 構成1.1- プロジェクト構成1.2-サービス構成...

MySql で正規表現クエリを使用する方法

正規表現は、特定のパターンに一致するテキストを検索および置換するためによく使用されます。たとえば、テ...

WeChatアプレットがフォーム検証を実装

WeChatアプレットフォームの検証、参考までに具体的な内容は次のとおりです。プラグインWxVali...

MySQLはカスタム関数を使用して親IDまたは子IDを再帰的に照会します

背景: MySQL では、レベルに制限がある場合、たとえば、ツリーの最大深度を事前に決定できる場合、...

Nginx 仮想ホストを構成する 3 つの方法 (ドメイン名に基づく)

Nginx は、IP ベースの仮想ホスト構成、ポート ベースの仮想ホスト構成、ドメイン名ベースの仮...

Vue+ElementUI Treeの使い方

Vue+ElementUI Treeの使い方は参考までに。具体的な内容は以下のとおりです。 フロント...

仮想マシンクローン Linux centos6.5 システム ネットワーク カード構成グラフィック チュートリアル

Linux システムに触れたばかりの初心者として、VMware 仮想マシンに CentOS6.5 シ...