Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.2Mb
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「レプリケーションおよびバイナリロギングのオプションと変数」を参照してください。

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