MySQL 5.1 リファレンスマニュアル :: 5 レプリケーション :: 5.3 レプリケーション ソリューション :: 5.3.2 ストレージ エンジンが異なるマスタとスレーブのレプリケーション
« 5.3.1.2 生データのバックアップ

5.3.3 スケールアウトのレプリケーション »
Section Navigation      [Toggle]
  • 5.3 レプリケーション ソリューション
  • 5.3.1 バックアップのレプリケーション
  • 5.3.2 ストレージ エンジンが異なるマスタとスレーブのレプリケーション
  • 5.3.3 スケールアウトのレプリケーション
  • 5.3.4 異なるデータベースから異なるスレーブへのレプリケーション
  • 5.3.5 レプリケーション パフォーマンスの改善
  • 5.3.6 フェイルオーバでのマスタ切り替え
  • 5.3.7 SSLを使用するレプリケーションの設定

5.3.2. ストレージ エンジンが異なるマスタとスレーブのレプリケーション

レプリケーション プロセスは、マスタのソース テーブルとマスタの複製テーブルが異なるエンジンを使用しているかどうかを重視しません。実際には、システム変数 storage_engine と table_type は複製されません。

このレプリケーション プロセスでの優位性を異なるエンジン タイプでのレプリケーション シナリオに役立てることができます。たとえば、スケール アウトのシナリオ (項5.3.3. 「スケールアウトのレプリケーション」 参照) では、通常、トランザクション機能をマスタの InnoDB テーブルに使いますが、データがリード オンリーということから、トランザクション サポートを必要としないスレーブの MyISAM を使用できます。データ ロギングの環境でレプリケーションの場合には、スレーブの Archive ストレージ エンジンを使うことも可能です。

イニシャル レプリケーション プロセスをどのように設定するかによって、マスタとスレーブでエンジンが異なる場合の設定は異なります。

  • マスタのデータベース スナップショットを作成する場合は、mysqldump を使用して、ダンプ テキストを操作し、それぞれのテーブルで使用しているエンジン タイプを変更します。

    mysqldump の別の利点としては、スレーブで使いたくないエンジン タイプを無効にすることができ、これは、スレーブでデータを起こす前にダンプします。 たとえば、InnoDB エンジンを無効にするには、--skip-innodb オプションをスレーブに追加します。 特定のエンジンがない場合、MySQLでは通常、MyISAM などのデフォルトのエンジン タイプを使います。この方法でそのほかのエンジンを無効にする場合には、そのエンジンをサポートする特別のバイナリをスレーブを使うように構成してください。

  • 生データ ファイルをスレーブ集団で使用している場合は、イニシャルのテーブル型を変更することはできません。 その場合は、スレーブが稼動してから、テーブル型の変更に ALTER TABLE を使います。

  • マスタにテーブルがない時点でのマスタ・スレーブ レプリケーション設定には、新たなテーブルを作成するときのエンジン タイプの指定を避けてください。

レプリケーション ソリューションをすでに実行している場合に既存のテーブルを別のエンジン タイプに変更するには、次のステップに従います。

  1. レプリケーション アップデートの実行からスレーブを停止する。

    mysql> STOP SLAVE;

    これにより、中断することなく、エンジン タイプの変更が可能になります。

  2. エンジン タイプを変更するテーブルのそれぞれで、ALTER TABLE ... Engine='enginetype' を実行する。

  3. スレーブのレプリケーションを再開する。

    mysql> START SLAVE;

storage_engine と table_type 変数は複製されませんが、エンジンの仕様を含む CREATE TABLE および ALTER TABLE ステートメントはスレーブに正確に複製されます。CSV テーブルがある場合には次を実行します。

mysql> ALTER TABLE csvtable Engine='MyISAM';

例示のステートメントはスレーブに複製され、そのスレーブのエンジン タイプは MyISAM になります。CSV のほかに、スレーブのテーブル型をエンジンにすでに変更していた場合も同様です。 マスタとスレーブでエンジンに違いを付ける場合に、新たなテーブルを作成するときは、マスタの storage_engine 変数を扱うときには十分に注意してください。

mysql> CREATE TABLE tablea (columna int) Engine=MyISAM;

次のフォーマットを使用します。

mysql> SET storage_engine=MyISAM;
mysql> CREATE TABLE tablea (columna int);

複製後、storage_engine 変数は無視され、CREATE TABLE ステートメントはスレーブのデフォルト エンジン タイプで実行になります。

Copyright © 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates