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


MySQL 5.6 リファレンスマニュアル  /  ...  /  異なるデータベースを異なるスレーブに複製する

17.3.4 異なるデータベースを異なるスレーブに複製する

マスターが 1 つで、異なるデータベースを異なるスレーブに複製したい場合があります。たとえば、データ分析時の負荷を分散するために、異なる売上データを異なる部門に分散したい場合です。このレイアウトの例を図17.2「データベースを別個のレプリケーションスレーブに複製するためにレプリケーションを使用する」に示します。

図 17.2 データベースを別個のレプリケーションスレーブに複製するためにレプリケーションを使用する

データベースを別個のレプリケーションスレーブに複製するためにレプリケーションを使用する

この分散は、マスターとスレーブを通常どおり構成してから、各スレーブ上で --replicate-wild-do-table 構成オプションを使用して各スレーブが処理するバイナリログステートメントを制限することで、実現できます。

重要

ステートメントベースレプリケーションを使用するときに、この目的のために --replicate-do-db を使用してはいけません。ステートメントベースレプリケーションでは、このオプションの効果が、現在選択されているデータベースによって異なるためです。このことは、混合形式のレプリケーションにも当てはまります。一部の更新をステートメントベース形式を使用して複製できるためです。

しかし、行ベースレプリケーションだけを使用している場合には、この目的のために --replicate-do-db を使用しても安全なはずです。この場合には、現在選択されているデータベースがオプションの動作に影響しないためです。

たとえば、図17.2「データベースを別個のレプリケーションスレーブに複製するためにレプリケーションを使用する」 に示すような分散をサポートするには、START SLAVE を実行する前に、各レプリケーションスレーブを次のように構成してください。

  • レプリケーションスレーブ 1 は --replicate-wild-do-table=databaseA.% を使用するべきです。

  • レプリケーションスレーブ 2 は --replicate-wild-do-table=databaseB.% を使用するべきです。

  • レプリケーションスレーブ 3 は --replicate-wild-do-table=databaseC.% を使用するべきです。

この構成の各スレーブはマスターからバイナリログ全体を受け取りますが、そのバイナリログから、そのスレーブで有効な --replicate-wild-do-table オプションによって含まれるデータベースとテーブルに適用されるイベントだけを実行します。

レプリケーションが開始する前にスレーブに同期する必要があるデータがある場合、いくつかの選択肢があります。

  • すべてのデータを各スレーブに同期し、保持したくないデータベースまたはテーブル、あるいはその両方を削除します。

  • mysqldump を使用してデータベースごとに別々のダンプファイルを作成し、各スレーブに該当するダンプファイルをロードします。

  • ローデータファイルダンプを使用して、各スレーブに必要な固有のファイルとデータベースのみを含めます。

    注記

    これは、innodb_file_per_table を使用しないかぎり、InnoDB データベースでは機能しません。


User Comments
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
  Posted by XI YIN on August 30, 2012
seems no matter which replication format,should use replicate-wild-do-table option.