start_slave.sh
#!/bin/sh

# replicationを開始するscript

master_host="db-master"
master_user="root"
master_password="hogehoge"

slave_host="localhost"
slave_user="root"
slave_password="hogehoge"

target_db="fugafuga"
dump_file="/root/db_master_dump.sql"

while ! mysqladmin ping -h $master_host --silent; do
  sleep 1
done

# masterのdumpを取得する
# mysqldumpのオプションについて
#   --master-data
#   masterのbinlogファイル、positionを出力する
#   https://dev.mysql.com/doc/refman/5.6/ja/mysqldump.html#option_mysqldump_master-data
#   
#   --single-transaction
#   https://dev.mysql.com/doc/refman/5.6/ja/mysqldump.html#option_mysqldump_single-transaction
mysqldump -u$master_user -p$master_password -h $master_host --databases $target_db  --master-data --single-transaction  --events > $dump_file

# slave停止 & リセット
mysql -h$slave_host -u$slave_user -p$slave_password -e "STOP SLAVE"
mysql -h$slave_host -u$slave_user -p$slave_password -e "RESET SLAVE"

# slaveにmasterの向き先を設定する
mysql -h$slave_host -u$slave_user -p$slave_password -e "CHANGE MASTER TO MASTER_HOST='$master_host', MASTER_USER='$master_user', MASTER_PASSWORD='$master_password'"

# slaveにdumpを流し込む
# dumpに CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.XXXXXX', MASTER_LOG_POS=XXXXX; が含まれているため、
# MASTER_LOG_FILE、MASTER_LOG_POSの設定もされる。
mysql -h$slave_host -u$slave_user -p$slave_password < $dump_file

# slave再開
mysql -h$slave_host -u$slave_user -p$slave_password -e "START SLAVE"
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.