Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


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

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

MySQL は、あるメジャーバージョンから次以降のメジャーバージョンへのレプリケーションをサポートします。たとえば、MySQL 4.1 を実行するマスターから MySQL 5.0 を実行するスレーブ、MySQL 5.0 を実行するマスターから MySQL 5.1 を実行するスレーブなどへの複製ができます。

ただし、古いマスターから新しいスレーブに複製するときに、マスターがスレーブ上で使用されているバージョンの MySQL でもうサポートされていないステートメントを使用したり、そのような動作に依存したりする場合は、問題が発生することがあります。たとえば、MySQL 5.5 では、CREATE TABLE ... SELECT ステートメントが、作成済みでないテーブルを変更することが許可されますが、MySQL 5.6 では許可されなくなりました (セクション17.4.1.5「CREATE TABLE ... SELECT ステートメントのレプリケーション」を参照してください)。

2 つを超える MySQL Server バージョンを使用することは、マスターまたはスレーブ MySQL サーバーの数にかかわらず、複数のマスターを使用するレプリケーションセットアップでサポートされません。この制限は、メジャーバージョンだけではなく、同じメジャーバージョン内のマイナーバージョンにも適用されます。たとえば、チェーンまたは循環レプリケーションセットアップを使用している場合、MySQL 5.6.1、MySQL 5.6.2、および MySQL 5.6.4 は同時に使用できませんが、これらのリリースの任意の 2 つを一緒に使用することはできます。

場合によっては、マスターと、マスターよりメジャーバージョン 2 つ以上新しいスレーブとの間で複製できます。ただし、MySQL 4.1 以前を実行するマスターから MySQL 5.1 以降を実行するスレーブに複製しようとすることに関する既知の問題があります。このような問題に対処するために、2 つの間に中間バージョンを実行する MySQL サーバーを挿入できます。たとえば、MySQL 4.1 マスターから MySQL 5.1 スレーブに直接複製するのではなく、MySQL 4.1 サーバーから MySQL 5.0 サーバーに複製してから、MySQL 5.0 サーバーから MySQL 5.1 サーバーに複製できます。

重要

レプリケーション (およびほかの) 機能は継続的に改善されているので、その MySQL メジャーバージョン内で使用可能な最新リリースを使用することを強くお勧めします。また、MySQL メジャーバージョンの早期リリースを使用するマスターとスレーブは GA (本番環境) リリースに更新することをお勧めします (そのメジャーバージョンで後者を入手できるようになったとき)。

新しいマスターから古いスレーブに複製できる場合がありますが、一般的にはサポートされません。これはいくつかの要因によります。

  • バイナリログ形式の変更  バイナリログ形式はメジャーリリース間で変わることがあります。下位互換性を維持しようと試みてはいますが、これがいつか可能なわけではありません。たとえば、MySQL 5.0 に実装されたバイナリログ形式は、以前のバージョンで使用されたものから大幅に変わりました (特に、文字セット、LOAD DATA INFILE、およびタイムゾーンの扱いに関して)。これは、MySQL 5.0 (以降) マスターから MySQL 4.1 (以前) スレーブへのレプリケーションは一般的にサポートされないことを意味します。

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

  • 行ベースレプリケーションの使用  行ベースレプリケーションが MySQL 5.1.5 で実装されたため、行ベースレプリケーションを使用して MySQL 5.6 以降のマスターから MySQL 5.1.5 より古いスレーブに複製することはできません。

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

  • SQL 非互換  複製されるステートメントが、マスター上で利用できるけれどもスレーブ上で利用できない SQL 機能を使用する場合は、ステートメントベースレプリケーションを使用して新しいマスターから古いスレーブに複製することはできません。

    ただし、マスターとスレーブの両方が行ベースレプリケーションをサポートし、複製するデータ定義ステートメントにマスター上で見つかるけれどもスレーブ上で見つからない SQL 機能に依存するものがない場合は、行ベースレプリケーションを使用してデータ変更ステートメントの効果を複製できます (マスター上で実行される DDL がスレーブ上でサポートされない場合でも)。

  • MySQL 5.6 の重要な変数  以前の MySQL バージョンに複製するときに無効にする必要がある機能が、MySQL 5.6 に追加されています。非互換を回避するには、MySQL 5.6 マスターで次の変数を設定してください。

    • binlog_checksum=NONE

    • binlog_row_image=FULL

    • binlog_rows_query_log_events=OFF

    • log_bin_use_v1_row_events=1

    • gtid_mode=OFF

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