MySQLでレプリケーションのやり方手順です。
= MySQLレプリケーションの設定
すでに構築されているマスターDBを元に、別サーバ内レプリケーションを構築するための手順。
マスターDBのレプリケーション設定
= レプリケーション用ユーザの作成
master
// ユーザ名(t_repl), ホスト(slave.pne.jp)、パスワード は適宜変更
$ mysql -u root -p
> GRANT SELECT, RELOAD, SUPER, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 't_repl'
'slave.pne.jp' IDENTIFIED BY 'password';
=== バイナリログ設定の追加
レプリケーション用のバイナリログを出力するように設定する。
@master
# vi /etc/my.cnf
[mysqld]
server-id=1
log-bin
- /etc/init.d/mysqld restart
=== マスタDB動作確認
@master
// マスタDBのレプリケーションが開始されたのを確認する
// スレーブDBのレプリケーション設定で使うので、File, Position の値を控えておく
# mysql -u root -p
> show master status \G
******************* 1. row *******************
File: mysqld-bin.0000001
Position: 106
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.00 sec)
データの転送
= マスタDBのデータをスレーブDBに転送
マスタDBを一旦停止して、スレーブDBに現在のデータ内容を転送する。
@master
# /etc/init.d/mysqld stop
# scp -rp /var/lib/mysql admin@slave.pne.jp:~/
=== 転送したデータを スレーブに配置する
@slave
# /etc/init.d/mysqld stop
# rm -rf /var/lib/mysql
- cp -rp /home/admin/mysql /var/lib/mysql
- chown -R mysql:mysql /var/lib/mysql
=== マスタDBの再開
@master
# /etc/init.d/mysqld start
スレーブDBの設定
= スレーブDBの
# vi /etc/my.cnf
[mysqld]
server-id = 2 # マスターの server-id と被らないようにする
#log-bin # バイナリログの保存はしない
# /etc/init.d/mysqld start
=== レプリケーションの設定
$ mysql -u root -p
// レプリケーションの停止
> slave stop;
// レプリケーションの設定
> CHANGE MASTER TO
MASTER_HOST='master.pne.jp', # マスターDBのホスト名orIP
MASTER_PORT=3306,
MASTER_USER='t_repl',
MASTER_PASSWORD='XXXXXX',
MASTER_LOG_FILE='mysqld-bin.0000001', # 「マスタDB動作確認」で確認した File
MASTER_LOG_POS=106; # 「マスタDB動作確認」で確認した Position
// スレーブDBの開始
> slave start ;
// 動作状況の確認
// Slave_IO_Running, Slave_SQl_Running が YES か確認
//
> show slave status \G
?
Slave_IO_Runnning : yes
Slave_SQL_Runnning: yes
?