Help us understand the problem. What is going on with this article?

稼働中のMySQLを無停止でレプリケーション環境を構築する

More than 1 year has passed since last update.

稼働中のMySQLを無停止でレプリケーション環境を構築する

個人メモです。稼働中のサービスを停止できないけど、スレーブを増やしたい(増殖したい)なんて場合に使える技になります。

マスターのバックアップ

まず、スレーブ側のホストでマスターのスキーマ(例では、schema1 schema2のバックアップをとります。この際に、--master-data と --single-transaction は必須です。

--master-data を指定しますと、master側のバイナリログファイルとポジションを取得することができます。
--single-transaction を指定しますと、innodbの場合は、マスターサーバ側のデータベースをロックせずに、dumpすることが可能です

mysqldump -h remote_host --databases schema1 schema2 -u myuser -pmypasswd --master-data --single-transaction --routines > /tmp/myDB.dump

ポジションの取得

上記にて、バックアップが完了したファイルから、CHANGE MASTER TOが含まれる行をgrepして、メモしておきます。

# cat myDB.dump | grep -i "CHANGE MASTER TO"
-----
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000052', MASTER_LOG_POS=12345678;

バックアップしたファイルをリストアします

リストア先に対象のデータベースが既に存在する場合は、すべて消えてしまいますので注意してください

mysql -f -umyuser -pmypasswd < /tmp/myDB.dump

スレーブ側の設定

ヒアドキュメントを使って、書き込んでいますが、別にコピペでMySQLに直接張ってもいいかと思います。また、MASTER_LOG_FILEとMASTER_LOG_POSは、上記で取得した値をセットします

mysql -umyuser -pmypasswd << '_EOT_' 
CHANGE MASTER TO
MASTER_HOST='remote_host',
MASTER_USER='slave',
MASTER_PASSWORD='slavepasswd',
MASTER_LOG_FILE='mysql-bin.000052',
MASTER_LOG_POS=12345678;

start slave ;

select sleep(1) ;

show slave status\G
_EOT_

以上、こんな感じになります。そこそこ時間はかかりますが、稼働中のMySQLを無停止でレプリケーションが構築できるって魅力的です

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした