このセクションでは、レプリケーショントポロジを監視し、すべての匿名トランザクションがレプリケートされていることを確認する方法について説明します。 GTID トランザクションに安全に変更できることを確認できるため、これはレプリケーションモードをオンラインに変更するときに役立ちます。
トランザクションのレプリケートを待機するには、いくつかの方法があります:
トポロジに関係なく動作しますが、タイミングに依存する最も単純な方法は次のとおりです: レプリカが N 秒を超えないことが確実な場合は、N 秒を少し待機します。 または、1 日またはデプロイメントの安全性を考慮する期間を待機します。
タイミングに依存しないという意味で安全な方法: 1 つまたは複数のレプリカを持つソースしかない場合は、次の手順を実行します:
-
ソースで、次のコマンドを実行します:
SHOW MASTER STATUS;
File
およびPosition
カラムの値をノートにとります。 -
すべてのレプリカで、ソースのファイルおよび位置情報を使用して実行します:
SELECT MASTER_POS_WAIT(file, position);
ソースと複数レベルのレプリカがある場合、またはレプリカのレプリカがある場合は、ソースから開始して各レベルでステップ 2 を繰り返し、次にすべてのダイレクトレプリカ、レプリカのすべてのレプリカなどを繰り返します。
複数のサーバーに書込みクライアントが存在する循環レプリケーショントポロジを使用する場合は、円全体が完成するまで、ソースレプリケーション接続ごとにステップ 2 を実行します。 完全な円2 回を実行するように、プロセス全体を繰り返します。
たとえば、サーバー A、B および C が 3 つあり、A -> B -> C -> A のように円でレプリケートしているとします。 その後、プロシージャは次のようになります:
A でステップ 1 を実行し、B でステップ 2 を実行します。
B でステップ 1 を実行し、C でステップ 2 を実行します。
C でステップ 1 を実行し、A でステップ 2 を実行します。
A でステップ 1 を実行し、B でステップ 2 を実行します。
B でステップ 1 を実行し、C でステップ 2 を実行します。
C でステップ 1 を実行し、A でステップ 2 を実行します。