MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む

このページは機械翻訳したものです。

17.4.4 異なるソースおよびレプリカのストレージエンジンでのレプリケーションの使用

レプリケーションプロセスでは、ソース上の元のテーブルとレプリカ上のレプリケートされたテーブルが異なるストレージエンジンタイプを使用するかどうかは関係ありません。 実際、default_storage_engine システム変数はレプリケートされません。

これは、異なるレプリケーションシナリオに異なるエンジンタイプを利用できるという点で、レプリケーションプロセスにいくつかの利点を提供します。 たとえば、典型的なスケールアウトシナリオ (セクション17.4.5「スケールアウトのためにレプリケーションを使用する」 を参照) では、トランザクション機能を利用するためにソースで InnoDB テーブルを使用しますが、データの読取りのみであるためトランザクションサポートが不要なレプリカでは MyISAM を使用します。 データロギング環境でレプリケーションを使用する場合は、レプリカで Archive ストレージエンジンを使用できます。

ソースとレプリカで異なるエンジンを構成するかどうかは、初期レプリケーションプロセスの設定方法によって異なります:

レプリケーションソリューションをすでに実行していて、既存のテーブルを別のエンジンタイプに変更する場合は、これらの手順に従ってください。

  1. レプリカによるレプリケーション更新の実行を停止します:

    mysql> STOP SLAVE;
    Or from MySQL 8.0.22:
    mysql> STOP REPLICA;
    

    これにより、中断せずにエンジンタイプを変更できます。

  2. 変更するテーブルごとに ALTER TABLE ... ENGINE='engine_type' を実行します。

  3. レプリケーションプロセスを再度開始します:

    mysql> START SLAVE;
    

    または、MySQL 8.0.22 以降では次のようになります:

    mysql> START REPLICA;
    

default_storage_engine 変数はレプリケートされませんが、エンジン仕様を含む CREATE TABLE および ALTER TABLE ステートメントはレプリカに正しくレプリケートされることに注意してください。 CSV テーブルの場合は、次のステートメントを実行します:

mysql> ALTER TABLE csvtable ENGINE='MyISAM';

このステートメントはレプリケートされます。レプリカのテーブルエンジンタイプを以前に CSV 以外のエンジンに変更した場合でも、レプリカのテーブルエンジンタイプは InnoDB に変換されます。 ソースとレプリカでエンジンの差異を保持する場合は、新しいテーブルの作成時にソースで default_storage_engine 変数を使用するように注意する必要があります。 たとえば、次の代わりに:

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

この形式を使用してください。

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

レプリケートされると、default_storage_engine 変数は無視され、レプリカのデフォルトエンジンを使用してレプリカで CREATE TABLE ステートメントが実行されます。