MySQL 8.0 リファレンスマニュアル


18.1.1.1 ソースからレプリカへのレプリケーション

従来の MySQL Replication は、レプリケーションへの単純なソースからレプリカへのアプローチを提供します。 ソースはプライマリであり、セカンダリである 1 つ以上のレプリカがあります。 ソースは、トランザクションを適用し、コミットした後、(ステートメントベースレプリケーションで) 再実行されるか、(行ベースレプリケーションで) 適用されるように、あとで (非同期的に) レプリカに送信されます。 これはシェアードナッシングシステムであり、すべてのサーバーにデフォルトでデータの完全なコピーがあります。

図 18.1 MySQL 非同期レプリケーション

ソースが受信したトランザクションが実行され、バイナリログに書き込まれてコミットされ、クライアントアプリケーションにレスポンスが送信されます。 バイナリログのレコードは、ソースでコミットが行われる前に、レプリカ 1 およびレプリカ 2 のリレーログに送信されます。 各レプリカで、トランザクションが適用され、レプリカバイナリログに書き込まれ、コミットされます。 ソースでのコミットとレプリカでのコミットはすべて独立しており、非同期です。

準同期レプリケーションもあり、プロトコルに 1 つの同期ステップが追加されます。 つまり、プライマリは適用時に、セカンダリがトランザクションを受信済していることを確認するのを待機します。 その後でのみ、プライマリがコミット操作を再開します。

図 18.2 MySQL 準同期レプリケーション

ソースが受信したトランザクションが実行され、バイナリログに書き込まれます。 バイナリログからのレコードは、レプリカ 1 およびレプリカ 2 のリレーログに送信されます。 次に、ソースはレプリカからの確認応答を待機します。 両方のレプリカが確認応答を返すと、ソースはトランザクションをコミットし、レスポンスがクライアントアプリケーションに送信されます。 各レプリカが確認応答を返した後、トランザクションを適用し、バイナリログに書き込み、コミットします。 ソースでのコミットはレプリカからの確認応答によって異なりますが、レプリカでのコミットは互いに独立しており、ソースでのコミットからも独立しています。

この 2 つの図には、従来の非同期 MySQL レプリケーションプロトコル (およびその準同期バリアント) のダイアグラムがあります。 異なるインスタンス間の矢印は、サーバー間で交換されるメッセージまたはサーバーとクライアントアプリケーション間で交換されるメッセージを表します。


関連キーワード:  グループ, リカバリ, 分散, ソース, サーバー, トランザクション, インスタンス, 構成, オンライン, バージョン