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.1.1.8 既存のデータによるレプリケーションのセットアップ

既存データでレプリケーションをセットアップする場合、レプリケーションサービスを開始する前に、マスターからのデータをスレーブに取得するための最善の方法を決める必要があります。

既存のデータでレプリケーションをセットアップするための基本プロセスは次のとおりです。

  1. MySQL マスターが動作している状態で、レプリケーション中にマスターに接続するときにスレーブが使用するユーザーを作成します。セクション17.1.1.3「レプリケーション用ユーザーの作成」を参照してください。

  2. まだ server-id を構成していなくて、マスターサーバーでバイナリロギングを有効にしていない場合は、これらのオプションを構成するためにサーバーをシャットダウンする必要があります。セクション17.1.1.1「レプリケーションマスター構成の設定」を参照してください。

    マスターサーバーをシャットダウンする必要がある場合は、そのデータベースのスナップショットを作成するための良い機会です。マスターを停止し、構成を更新し、スナップショットを作成する前に、マスターのステータスを取得してください (セクション17.1.1.4「レプリケーションマスターバイナリログ座標の取得」を参照してください)。ローデータファイルを使用してスナップショットを作成する方法については、セクション17.1.1.6「ローデータファイルを使用したデータスナップショットの作成」を参照してください。

  3. マスターサーバーがすでに正しく構成されている場合、そのステータスを取得してから (セクション17.1.1.4「レプリケーションマスターバイナリログ座標の取得」を参照してください) mysqldump を使用してスナップショットを作成するか (セクション17.1.1.5「mysqldump を使用したデータスナップショットの作成」を参照してください)、セクション17.1.1.6「ローデータファイルを使用したデータスナップショットの作成」のガイドを使用してライブサーバーのロースナップショットを作成します。

  4. スレーブの構成を更新します。セクション17.1.1.2「レプリケーションスレーブ構成の設定」を参照してください。

  5. データのスナップショットをマスター上にどのように作成したかによって、次の手順は異なります。

    mysqldump を使用した場合:

    1. レプリケーションが起動しないように、--skip-slave-start オプションを使用してスレーブを起動します。

    2. ダンプファイルをインポートします。

      shell> mysql < fulldb.dump

    ローデータファイルでスナップショットを作成した場合:

    1. スレーブデータディレクトリにデータファイルを抽出します。例:

      shell> tar xvf dbdump.tar

      スレーブサーバーがファイルにアクセスして変更できるように、それらへの許可と所有権を設定する必要がある場合があります。

    2. レプリケーションが起動しないように、--skip-slave-start オプションを使用してスレーブを起動します。

  6. マスターからのレプリケーション座標を使用してスレーブを構成します。これは、バイナリログファイルと、ファイル内でレプリケーションを開始する必要がある位置をスレーブに伝えます。また、マスターのログイン資格証明とホスト名を使用してスレーブを構成します。必要な CHANGE MASTER TO ステートメントの詳細は、セクション17.1.1.10「スレーブでのマスター構成の設定」を参照してください。

  7. スレーブスレッドを起動します。

    mysql> START SLAVE;

この手順を行なったあと、スレーブはマスターに接続し、スナップショット作成後に発生した更新を反映するはずです。

マスターに server-id オプションを設定するのを忘れた場合、スレーブはそれに接続できません。

スレーブに server-id オプションを設定するのを忘れた場合、スレーブのエラーログに次にようなエラーを取得します。

Warning: You should set server-id to a non-0 value if master_host
is set; we will force server id to 2, but this MySQL server will
not act as a slave.

何らかの理由で複製できない場合も、スレーブのエラーログにエラーメッセージを取得します。

スレーブはそのマスター情報リポジトリに格納された情報を使用して、マスターのバイナリログがどの程度処理されたかを追跡します。リポジトリはファイルまたはテーブルの形式で、--master-info-repository の値セットによって決定されます。スレーブが --master-info-repository=FILE で動作している場合、データディレクトリの中に、名前が master.inforelay-log.info の 2 つのファイルが見つかります。代わりに --master-info-repository=TABLE である場合、この情報は mysql データベースのテーブル master_slave_info に格納されます。いずれの場合も、何を実行しているかが正確にわかり、その影響を十分に理解している場合を除いて、ファイルまたはテーブルを削除したり編集したりしないでください。その場合でも、CHANGE MASTER TO ステートメントを使用してレプリケーションパラメータを変更することをお勧めします。スレーブはステートメントで指定した値を使用して、ステータスファイルを自動的に更新できます。詳細については、セクション17.2.2「レプリケーションリレーおよびステータスログ」を参照してください。

注記

マスター情報リポジトリの内容は、コマンド行または my.cnf で指定されたいくつかのサーバーオプションをオーバーライドします。詳細については、セクション17.1.4「レプリケーションおよびバイナリロギングのオプションと変数」を参照してください。

複数のスレーブでも、マスターの単一スナップショットで十分です。追加のスレーブをセットアップする場合は、同じマスタースナップショットを使用して、先述の手順のスレーブ部分に従ってください。


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 Brian Kinney on September 10, 2015
I had a slave lose sync, and was trying to restore everything, with a minimum of effort.
When you want to resync an existing slave that failed and won't resync, I highly recommend using the mysqldump --master-data method.

1) It grabs all files.
2) It will put them back where they belong for you.
3) It collects the master status, and embeds it as SQL code for use upon restore.
4) It does not require you to stop the existing service, as it does the lock and unlock tables for you.

Reminder: you have to START SLAVE; once your MySQL < dump.db is applied.
Please then wait a good 90 seconds before expecting a valid answer to the question SHOW SLAVE STATUS;
You are looking for a YES on Slave_IO_Running and Slave_SQL_Running fields.
Even if you are not immediately in sync, you probably will be soon.

Sign Up Login You must be logged in to post a comment.