MySQLダンプからの無停止スレーブ作成
よく行うのでメモ。
マスタとスレーブのホスト名を以下と仮定する。
マスタ: masterdb スレーブ: slavedb
また、スレーブ対象のDBは以下とする。
some_db_production
マスタ上のMySQLでの作業
レプリケーション用ユーザーの作成
まだ無ければ作っておく。この例だとどのホストからでも接続できるので、 必要に応じてIPアドレスでの制限をかけること。
1 2 |
|
スナップショットの作成(取得しつつスレーブへ送る)
ダンプを取りながら圧縮しスレーブDBに送り込む。データが多いと数時間かかる。
ここでは転送速度を優先させるため、暗号化方式を軽量のものしている。
大容量ファイルのSCP転送を高速にする方法 – 元RX-7乗りの適当な日々
1
|
|
スレーブでの作業
スナップショットのインポート
解凍しつつインポートする。スナップショットの作成よりもさらに時間がかかる。
1
|
|
スレーブ上のMySQLでの作業(インポート後)
マスタ情報の確認
後ほど、slaveに設定する情報。lessでgzの中を直接確認できる。
1
|
|
こんな感じで出力されているはず。
1
|
|
master情報書換
スレーブDBのmysqlにログインし、以下のコマンドを実行。 MASTER_LOG_FILEとMASTER_LOG_POSは先に調べた情報に書き換える。
1 2 3 4 5 6 7 |
|
スレーブ再開
同じくスレーブのmysqlでコマンド実行
1
|
|