MGRは言った - MGRトランザクション実行プロセスパート1

MGRプラグインgroup_replication最も重要な機能は、ディスペンサは、トランザクション実行中の終わりに近づいているときにバイナリログイベント、処理トランザクションを分散されたトランザクションの分布の関数です。MGRは、これらの楽観的トランザクションの実行戦略がより良いパフォーマンスにつながることができますと呼ばれます。しかし、この戦略は、複数のメンバー上のトランザクションが競合する可能性があります。MGRは検出し、紛争に対処するための衝突検出メカニズムが必要です。異なる処理工程におけるトランザクション処理は、MGRディスペンサートランザクション機能は、4つのセクションに分割されています。


・ローカルトランザクション制御モジュール

・モジュールメンバー間のコミュニケーション

・グローバル・トランザクション認証モジュール

・リモートトランザクション実行モジュール



ローカルトランザクション制御モジュールを初めて目、MySQLはこれらのインタフェースを介したトランザクションの実行を監視し、制御するため、プラグインAPIのトランザクションフック、いくつかの重要な段階でMGRをインタフェースを提供します。提出時のMySQLのトランザクションは、内部的に3つのフェーズに分け:準備段階を相、相記録バイナリログファイルを(準備)及び(コミット)を提出します。地元での取引の執行before_commitこのインタフェースのMGR制御ロジック。before_commitはbinlogの段階の前に実行するファイルを書き込み、トランザクションの準備フェーズの後です。トランザクションのローカル制御は、次の3つのステップを含みます。


1.トランザクション情報を送ります

インタフェースを介してローカル通信モジュール、通信モジュールに関連する最初に充填されたトランザクションの実行情報をMGR限り、ローカル通信モジュールは、メッセージを受信すると(他のメンバーがメンバー間の通信モジュールの責任に送られる)成功を返します。生産BINLOGイベントの主キー情報、およびトランザクションデータベースのスナップショットのバージョンを含むトランザクション情報。


層が一緒のbinlogのイベントを生成するとき・サーバーの主キー情報が生成されます。主キー情報の値は、主キーフィールドに記録されていないが、フィールドの値を加えたライブラリ名、テーブル名、およびそのハッシュ値。

・MySQLデータベースのスナップショットのバージョンはgtid_executedグローバル変数の現在の値です。それはそれは事務の状態を表し、すべてのトランザクションは、現在のトランザクションがコミットしたときに実行されたGTIDが含まれている場合、現在のデータベースの実行。

・トランザクション情報を送信する場合、binlogのイベントのbinlogファイルを書き込めません。そのため、binlogのイベントBINLOGキャッシュは、バイナリログファイルを頼らず、現在のスレッドから取得されます。

・Transaction_context_log_event、UUIDのローカルメンバーは、主キー情報とデータベースのスナップショットのバージョンはTransaction_context_log_eventにパッケージ化され、生成されたトランザクションとbinlogのイベントは一緒に送りました。他の前でTransaction_context_log_event BINLOGイベント。



2.グローバル・トランザクション認証モジュールの認証結果を待ち

トランザクション情報が正常に送信された後、トランザクションはブロックされます、彼らはグローバルトランザクション認証認証モジュールの結果を待つようになりました。トランザクション認証が完了した後、グローバルトランザクション認証モジュールは、現在のスレッドのトランザクションをウェイクアップし、そのトランザクションは続行します。



3.認証プロセスの結果

トランザクションが続行した後、テストと認証が発生します。認証が成功した場合、トランザクションをコミットし続けます。認証に失敗した場合は、エラーが返されます。ロールバックは、その後のMySQLによって論理実行します。


おすすめ

転載: blog.51cto.com/coveringindex/2438000