Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
EPUB - 7.5Mb
HTML Download (TGZ) - 7.2Mb
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
  Posted by XI YIN on August 30, 2012
seems no matter which replication format,should use replicate-wild-do-table option.
Sign Up Login You must be logged in to post a comment.