既存データでレプリケーションをセットアップするとき、レプリケーションを開始する前に、マスタからスレーブへの最も適当なデータ取得方法を検討します。
既存データでの基本的なレプリケーション セットアップ プロセスは次の通り。
server-id
とバイナリ
ロギングの設定をまだ行っていない場合、これらのオプションを設定するためにマスタをシャットダウンする。項5.1.1.2. 「レプリケーション
マスタのコンフィギュレーション設定」
を参照。
マスタのデータベースをシャットダウンする必要があるということは、データベースのスナップショットを取る良い機会です。データベースの取り出し、コンフィギュレーションの更新、スナップショット取得などの前に、まず、マスタ ステータスを取得します。(項5.1.1.4. 「マスタ レプリケーション情報の取得」 参照。) 生データ ファイルを使用したスナップショットの作成に関しては 項5.1.1.6. 「生データ ファイルでデータ スナップショットの作成」 を参照してください。
サーバがすでに正確に設定されている場合は、マスタ
ステータスを取得し
(項5.1.1.4. 「マスタ レプリケーション情報の取得」 参照)、
mysqldump
を使用してスナップショットを取る
(項5.1.1.5. 「mysqldump
を使用したデータ
スナップショットの制作」
参照)、または
項5.1.1.6. 「生データ ファイルでデータ スナップショットの作成」
のガイドを使用してライブ
データベースの生スナップショットを取る。
MySQL マスタが稼動している状態で、レプリケーション中にスレーブがマスタへ接続するときに使うユーザを作成する。項5.1.1.1. 「レプリケーション ユーザの作成」 参照。
スレーブのコンフィギュレーションを更新する。項5.1.1.3. 「レプリケーション スレーブのコンフィギュレーション設定」 参照。
マスタにあるデータのスナップショットをどのように取るかによって、次のステップは異なります。
mysqldump を使用した場合
--skip-slave
オプションを使用してレプリケーションをスキップし、スレーブを立ち上げる。
ダンプ ファイルをインポートする。
shell> mysql < fulldb.dump
生データ ファイルでスナップショットを作成した場合
スレーブのデータ ディレクトリにデータ ファイルを展開する。
shell> tar xvf dbdump.tar
ノート:スレーブのコンフィギュレーションと一致するようにファイルの権限と所有権の設定が必要な場合があります。
--skip-slave
オプションを使用してレプリケーションをスキップし、スレーブを立ち上げる。
マスタ ステータス情報でスレーブを設定します。これにより、レプリケーションを開始するために必要なバイナリ ログ ファイルと位置 (ファイル内) を伝え、ログイン認証とマスタのホスト名を設定します。ここで必要なステートメントに関する詳細は、項5.1.1.10. 「マスタ コンフィギュレーションのスレーブでの設定」 を参照してください。
スレーブ スレッドを立ち上げる。
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
と
relay-log.info
という名前のファイルをそれぞれ見つけることができます。スレーブはこれら
2 つのファイルからマスタのバイナリ
ログでどれくらい処理されたかを読み取ります。そのため、動作への影響に関して完全に理解している場合を除いて、これらのファイルは決して削除または編集
しないで
ください。その必要がある場合は、CHANGE
MASTER TO
ステートメントを使用して、レプリケーションのパラメータを変更することをお勧めします。スレーブは、ステートメントで指定した値に従い自動的にステータス
ファイルを更新します。
master.info
の内容は、コマンドラインまたは
my.cnf
などで指定したサーバ
オプションの一部を優先します。詳細は
項5.1.3. 「レプリケーションのオプションと変数」
を参照してください。
マスタのスナップショットの準備が整ったら、上記に示したスレーブ部分の手順に従って、別のスレーブのセットアップにそれを使用します。マスタから新たに別のスナップショットを作成する必要はありません。それぞれのスレーブに同一のスナップショットを使用できます。