MGRのMySQLの高可用性

 

 

MGR全体の構造と特性

  シングルマスター

    一つのノードのみが書かれ、読むことができます

  マルチマスター

    各ノードは、読み書きすることができます

  コンセプトは含まれます。

    グループ通信システム(GCS)

    writeset

    メンバーシップ

    cerification情報

    フロー制御の統計

    パクシ

  MGRは、一貫性を高め読みます

  group_replication_consistency(8.0.14引入)

    EVENTUAL:デフォルト

    前:完了したすべてのトランザクションを実行するためにキューで待機しています

    BEFORE_ON_PRIMARY_FAILOVER:トランザクションキューを実行した後に新しいプライマリを待っています

    AFTER:他のすべてのノードでのデータ変更がすべて適用されているのを待っています

    BEFORE_AND_AFTER: 

  MGRの制限

    のみのInnoDBをサポートしている、あなたは主の健康を持っている必要があります

    BINLOG形式:行、近いbinlogのチェックサム  

    これは、オンにする必要がありGTID

    トランザクション分離レベル:READ COMMITTED(隙間無くロック)  

    大規模な取引制限:group_replication_transaction_size_limit

    マルチマスタモード:同じテーブル上の異なるノードを回避するために、同時にDDL / DML

    最大クラスタノード; 9(奇数)

 

データを同期する方法MGRデータ

  MGRデータ・レプリケーション - >サービスの認定

    サービスの認定

    衝突検出

      キーcertification_info:xxhash64(値インデックス名+ DB + DB名テーブル名+長さ+長さ+長さ+値一意の各列を構成するテーブル名インデックス)gtid_executedトランザクションの値であります

      トランザクション割り当てGTID

      group_replication_gtid_assignment_block_size

    提出された分岐(グループ・コミット)

 

MGRデータレプリケーションの競合の解決

  問題:

    システムがますます大きくなるためcentification_infoを伝えるために書きますが、パフォーマンスが悪化するのでしょうか?

  アプローチ:

    クリーンアップ機構の導入centification_info

 

コピーデータフロー制御MGR

フロー制御

  フロー制御の目的

    クラスタ遅延(読み取り専用トランザクションのフローの制御範囲内ではない)ことを保証するために制御さ

  フロー制御のための理由

    各ノードは一貫性のないパフォーマンス

    バケットショートボード効果

  パラメータ

    group_replication_flow_control_modeデフォルト:クォータオープンフロー制御

    どのくらいの頻度で制御統計情報を流しgroup_replication_flow_control_period、単位:秒

    どのように多くのトランザクション認証されるgroup_replication_flow_control_applier_threshold&group_replication_flow_control_certifier_threshold総務認定キューだけノードのフロー制御をトリガーする以上のことを蓄積

 

 

MGR監視点

  現在のノードがオンラインではありません

    performance_schema.replication_group_membersからMEMBER_STATEを選択します。  

  遅延があるあります

    获取到的:performance_schema.replication_connection_statusから選択received_transaction_set。

    これは、実行された:@@ gtid_executed選択します

  現在のバックログキューはありません

    MEMBER_ID = @@ server_uuid performanct_schema.replication_group_member_statsからcount_transaction_in_queueを選択します。

  現在のノードが書き込み可能ではありません

    変数名( 'READ_ONLY'、 'super_read_only')でperformance_shcema.global_variables SELECT * FROM。

  

MGRの最適化の方向

  運用・保守

    ウィキこのコピー操作の構造は、すべてのデータの複製、または複製のロジックなので、最適化は、最適化のポイントをもコピーされます。

    変更します。

      slave_parallel_type - > LOGICAL_CLOCK

    強化された数のSQL_THREAD:

      slave_parallel_workers - > 2-8

    CPUのボトルネック、CPUの圧縮を減らすネットワーク問題はない、場合:

      group_replication_compression_threshold = 1000000 - > 2000000

      2Mになるように1Mから増加し、次いで圧縮(主に大規模なトランザクションの送信のために最適化されました)

  以下のために、すべての後に、環境の量を書きます

    シングルマスターを使用して

    インデックスの数を減らすために、マルチユース関節度:テーブル構造設計上の

  カーネル

    試みが行われています静的のconst int型BROADCASE_GTID_EXECUTED_PERIOD = 60> 30; //秒

  重要なパラメータ:

    group_replication_member_expel_timeout(8.0.13+) 

      (5 + X)秒後、ノードは、メンバーのロマンスのグループから削除され

      ネットワークの異常 - > 5秒 - >推測するために失われた - > X-秒/ UNREACHABLE - >削除します 

      X秒、グループは、ノードを削除し、予備選挙をノードを追加することはできません

    group_replication_unreachable_majority_timeout

      ネットワークパーティションの後、X秒内minortyメンバーが過半数に接続を復元するために失敗し、ERRORを入力します。

    group_replication_exit_state_action(8.0.12+、5.7.24+)

      ABORT_SERVER / READ_ONLY

      大半/チャーングループに関連付けられaplier実行エラー/損失が除去されます

    group_replication_recovery_complete_at

      TRANSACTIONS_CERTIFIED / TRANSACTIONS_APPLIED

    group_replication_member_weight

      下の単一のプライマリ、ノードの役割不平等な状況に有用

      同じgroup_replication_member_weight、依存server_uuid

    group_replication_transaction_size_limit(5.7.19+)

      単一のトランザクション限界の最大バイト数は、ネットワークのオーバーヘッド、メモリ割り当て、衝突の確率を制御することができます。

    group_replication_compression_threshold

      Xバイト、オープンLZ4圧縮総務伝送、デフォルトの1メガバイト以上の後 

 

MGR展開アーキテクチャの推奨事項

  MySQLrouter + MGR  

    ルータ2つのインターフェイス(挿入、読み取り)

    MySQLはXプロトコルを見てする必要があり、JS-関連する関連業務

    推奨代替ProxySQL

  パフォーマンスのための場合:シングルマスター

  簡単に使用する:マルチマスタ(単一書き込みポイント、マルチポイントリード)

 

 

 

おすすめ

転載: www.cnblogs.com/yujiaershao/p/11357932.html