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
パフォーマンスのための場合:シングルマスター
簡単に使用する:マルチマスタ(単一書き込みポイント、マルチポイントリード)