MySQL レプリケーション スレーブを無停止で追加する方法

まず、レプリケーションの設定から

my.cnfに

[mysqld]
binlog_do_db=hoge
server_id=n

server_idは稼働台数分記述が必要、かつ重複IDは不可。

そしてレプリケーション用のユーザーを下記GRANTオプションを利用し追加。

GRANT REPLICATION SLAVE, REPLICATION CLIENT

mysqldumpコマンドを利用しマスターから最新DBをダンプする。
その時にmysqldumpのオプション”–master-data”を使う。

# mysqldump DBNAME –master-data –single-transaction > DBNAME.sql

INNODBを利用しているのであれば”–single-transaction”オプションを利用することで、テーブルロックを回避できる。MyISAMの場合は不可能。

スレーブ側で接続設定

mysql > CHANGE MASTER TO MASTER_HOST='master_host_name',MASTER_USER='USERNAME', MASTER_PASSWORD='USERPASS';
# mysql DBNAME < DBNAME.sql

ダンプファイルにマスターのログIDとポジションが記載されているのでそれを利用しCHANGE MASTER TOを発行する。

mysql > CHANGE MASTER TO MASTER_LOG_FILE='binlog_name', MASTER_LOG_POS=log_position;
mysql > SLAVE START;
mysql > SHOW SLAVE STATUS\G

Slave_IO_Runningと、Slave_SQL_RunningがYesになっていれば成功。
マスター側で更新系クエリを発行しデータがスレーブに反映しているか確認。

以上。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です