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


MySQL 8.0 リファレンスマニュアル  /  ...  /  MySQL バージョン間のレプリケーション互換性

17.5.2 MySQL バージョン間のレプリケーション互換性

MySQL は、あるリリースシリーズから次の上位リリースシリーズへのレプリケーションをサポートしています。 たとえば、MySQL 5.6 を実行しているソースから MySQL 5.7 を実行しているレプリカ、MySQL 5.7 を実行しているソースから MySQL 8.0 を実行しているレプリカなどにレプリケートできます。 ただし、ソースがステートメントを使用しているか、レプリカで使用されている MySQL のバージョンでサポートされなくなった動作に依存している場合、古いソースから新しいレプリカにレプリケートするときに問題が発生することがあります。 たとえば、64 文字を超える外部キー名は、MySQL 8.0 からサポートされなくなりました。

複数のソースを含むレプリケーション設定では、ソースまたはレプリカ MySQL サーバーの数に関係なく、複数の MySQL Server バージョンの使用はサポートされていません。 この制限は、リリースシリーズだけでなく、同じリリースシリーズ内のバージョン番号にも適用されます。 たとえば、連鎖レプリケーション設定または循環レプリケーション設定を使用している場合、MySQL 8.0.1、MySQL 8.0.2 および MySQL 8.0.4 を同時に使用することはできませんが、これらのリリースのいずれかを同時に使用できます。

重要

レプリケーション (およびその他の) 機能は継続的に改善されるため、特定の MySQL リリースシリーズ内で使用可能な最新リリースを使用することを強くお薦めします。 また、MySQL のリリースシリーズの初期リリースを使用するソースおよびレプリカを GA (本番) リリースにアップグレードすることもお薦めします (後者がそのリリースシリーズで使用可能になった場合)。

MySQL 8.0.14 から、サーバーのバージョンは、トランザクションを最初にコミットしたサーバー (original_server_version) の各トランザクション、およびレプリケーショントポロジ (immediate_server_version) の現在のサーバーの即時ソースであるサーバーのバイナリログに記録されます。

新しいソースから古いレプリカへのレプリケーションは可能ですが、通常はサポートされていません。 これはいくつかの要因によります。

  • バイナリログ形式の変更.  バイナリログ形式はメジャーリリース間で変わることがあります。 下位互換性を維持しようと試みてはいますが、これがいつか可能なわけではありません。 ソースでは、バイナリログトランザクション圧縮など、古いレプリカで認識されないオプションの機能が有効になっている場合もあります。バイナリログトランザクション圧縮では、MySQL 8.0.20 より前のリリースでは結果の圧縮トランザクションペイロードをレプリカで読み取ることができません。

    これは、レプリケーションサーバーのアップグレードにも密接な関係があります。詳細は、セクション17.5.3「レプリケーションセットアップをアップグレードする」を参照してください。

  • 行ベースレプリケーションの詳細は、セクション17.2.1「レプリケーション形式」を参照してください。

  • SQL 非互換.  レプリケート対象のステートメントがソースで使用可能でレプリカではなく SQL 機能を使用している場合、ステートメントベースのレプリケーションを使用して新しいソースから古いレプリカにレプリケートすることはできません。

    ただし、ソースとレプリカの両方が行ベースのレプリケーションをサポートし、ソースで検出されたがレプリカでは検出されなかった SQL 機能に依存するレプリケート対象のデータ定義ステートメントがない場合は、ソースで実行された DDL がレプリカでサポートされていなくても、行ベースのレプリケーションを使用してデータ変更ステートメントの影響をレプリケートできます。

潜在的なレプリケーション問題の詳細は、セクション17.5.1「レプリケーションの機能と問題」を参照してください。


関連キーワード:  ソース, ベース, リリース, ステートメント, バイナリ, トランザクション, サーバー, 設定, GTID, サポート