Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.1Mb
EPUB - 7.5Mb
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「レプリケーションの機能と問題」を参照してください。


User Comments
  Posted by David Turner on May 26, 2009
An option that would help with binlog incompatibility between 4.1 and 5.1 or 5.1 to 4.1 would be to use mysqlbinlog on the master and apply to the slave. I plan on only using this briefly during upgrades.
Sign Up Login You must be logged in to post a comment.