LoginSignup
4
4

More than 5 years have passed since last update.

mysql5.6をソースビルドしてマスター・スレーブで動かす[後編]

Last updated at Posted at 2014-05-15

前回の続きです。
マスター、スレーブで使う為のDBを立ち上げを終えたら、マスターから出力される更新ログを随時スレーブ側で受け取り、反映出来るようにします。

マスターの更新ログは前回my.cnfでpid出力先として指定した /usr/local/mysql/dataの中に出力されているはずですので、一度確認してみるといいでしょう。

出力されていなければ設定が間違っている可能性が高いので、もう一度前回の記事をご覧下さい。

マスター側DBでレプリケーション用ユーザーを作成する

マスター側DBにクライアントでルートでログイン

(ここでは省略していますが、パスワード設定を必ずパスワードは設定しておく事)
mysql -u root

ユーザー作成

GRANT REPLICATION SLAVE ON *.* TO repl@'127.0.0.1' IDENTIFIED BY '任意のパスワード';

マスター・スレーブを同期させる

マスターのDB更新を一旦禁止する

現在のマスター側のデータを維持するため、DB更新を一旦禁止。
FLUSH TABLES WITH READ LOCK;
EXIT;
/etc/init.d/mysqld_master stop

マスターのデータを全て取得する

cd /usr/local/mysql/data
tar -cvf /usr/src/backup.tar .

マスターのログファイル一覧をメモする

以下の通り実行し、出力されたFileとPositionの内容をメモ。
Fileなら mysql-bin.XXXXX
Positionなら数字が出力される。
mysql -u root
SHOW MASTER STATUS;
EXIT;

取得したデータをスレーブ側に展開する

tar -xvf /usr/src/backup.tar -C /usr/local/mysql_slave/data
次の通りslave/data内を確認して、binファイルがコピーされていればOK
ls /usr/local/mysql_slave/data

マスター側の更新を有効にする

mysql -u root
UNLOCK TABLES;
EXIT;

スレーブ側のDBに接続して設定を行う

/usr/local/mysql_slave/bin/mysql -u root -P 13006
CHANGE MASTER TO
MASTER_HOST='127.0.0.1',
MASTER_USER='repl',
MASTER_PASSWORD='設定したパスワード',
MASTER_LOG_FILE='先程メモしたFile',
MASTER_LOG_POS=先程メモしたPosition;
START SLAVE;

実際に動作を確認する

これ以降、マスター側でのDB更新は全てスレーブに反映される。
マスター側で任意のDB/テーブルを作成、更新後、スレーブに接続して反映されているか確認する。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4