スレーブサーバーを複製する方法

目的

スレーブサーバーを複製する?

環境

$ mysql --version
mysql  Ver 14.14 Distrib 5.6.27, for debian-linux-gnu (x86_64) using  EditLine wrapper
$ cat /etc/issue
Ubuntu 14.04.3 LTS \n \l

新スレーブサーバーでマスターサーバーに接続できるか確認

mysql > mysql -hNOWSLAVEIP -urepluser -p

マスターサーバーに接続できなかった場合、iptablesやufwを確認、変更して接続できるようにする ※ちょっとでも間違えるとアクセスできなるくなるため慎重に

現スレーブサーバーで stop slave;

$ mysql -u root --socket /run/3307/mysqld.sock -p

mysql > show slave status\G

mysql > stop slave;

mysql > show slave status\G

Relay_Master_Log_FileとExec_Master_Log_Posの場所を記録

mysql > show slave status\G

Relay_Master_Log_File
Exec_Master_Log_Pos

現スレーブサーバーでmysqldumpする

$ mysqldump -u root --socket /run/3307/mysqld.sock -p --all-databases --single-transaction | gzip > /home/technuma/mysql-3307.sql.gz

現スレーブサーバーでスレーブ開始

mysql > start slave;

現スレーブサーバーで転送開始

$ sudo -u technuma scp -P 19868 mysql-3307.sql.gz technuma@NEWSLAVEIP:/home/technuma/

新スレーブサーバーで

$ gunzip mysql-3307.sql.gz

MySQL再起動

$ mysqladmin -u root -S /var/lib/mysql-3307/mysqld.sock shutdown
$ mysqld_safe --defaults-file=/var/lib/mysql/mysql-3307/my.cnf --skip-slave-start &

新スレーブサーバーでdumpファイルをインポートする

$ mysql -u root -S /var/lib/mysql-3307/mysqld.sock -p < /home/technuma/mysql-3307.sql

新スレーブサーバーでmysql再起動

$ mysqladmin -u root -S /var/lib/mysql-3307/mysqld.sock shutdown
$ mysqld_safe --defaults-file=/var/lib/mysql/mysql-3307/my.cnf --skip-slave-start &

新スレーブサーバーでログイン

$ mysql -u root -S /var/lib/mysql-3307/mysqld.sock -p

新スレーブサーバーでslaveが動いてないか確認

show slave status\G

新スレーブサーバーで

mysql > CHANGE MASTER TO
MASTER_HOST='NOWSLAVEIP',
MASTER_USER='repluser',
MASTER_PASSWORD='REPLUSERPASS',
MASTER_PORT=3306,
MASTER_LOG_FILE='【記録したRelay_Master_Log_File】',
MASTER_LOG_POS=【記録したExec_Master_Log_Pos】;

新スレーブサーバーでスレーブ開始

mysql > start slave;

新スレーブサーバーでスレーブが動作していることを確認

mysql > show slave status\G