LoginSignup
1
1

More than 5 years have passed since last update.

MySQLのslaveを追加するスクリプト

Posted at
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"
1
1
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
1
1