Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

MySQL Slave再構築

とあるクラウド上でMySQLMaster-Slave構成を組んでいるのですが、
あるときSlaveサーバが載っているホストがダウンしたらしく、Slaveサーバもダウンしてしまいました。
めでたく別ホスト上に自動で立ち上がってきたのですが、ブチッと切れたので、レプリケーションエラーが発生してしまっていました。
なので面倒なことにSlaveを再構築することになりました。

作業その前に

作業完了後は以下の確認をしたいため準備しておくこと。

  • dabatasetableデータ(サンプル)の数が一致すること
  • Master で create dabase をして、Slave に伝播されること
  • Slave を restart してもレプリケーションが正しく動作すること
  • MySQL のエラーログにエラー等が出ないこと

メイン作業

Master で dump を取得

$ mysqldump -u root -p --opt --single-transaction --master-data --all-databases > /tmp/Master-alldatabases.dmp.`date +%Y%m%d`

ポジションの取得

後ほど Slave の設定をする際にポジションの情報が必要なので、上記手順で取得した dump からMASTER_LOG_FILEMASTER_LOG_POSを確認しメモしておきます。

dumpは1行になっている可能性もあるため、以下のようなgrepだとよくわらない結果になるかもしれません。
その場合はlessなどで開いてから検索してみてください。

$ grep -i 'CHANGE MASTER TO' /tmp/Master-alldatabases.dmp.`date +%Y%m%d`
---
CHANGE MASTER TO MASTER_LOG_FILE='binary_log.000044', MASTER_LOG_POS=117069861;

Slave へ dump を転送

手順は略。環境によって具合良くやってください。

Slave で MySQL のデータをバックアップ(念のため)

$ cd /var/lib
$ tar zcvf mysql.tgz mysql/

slave の設定を削除

reset slave all;

slave status も Empty となり、 relay_log もリセットされる。

Slave に Master の Dump を投入

$ mysql -u root -p <  /tmp/Master-alldatabases.dmp.`date +%Y%m%d`

投入後、MySQLにログインしてからSlave設定を入れます。

CHANGE MASTER TO
MASTER_HOST='master_host',
MASTER_USER='slave_user',
MASTER_PASSWORD='slavepasswd',
MASTER_LOG_FILE='binary_log.000044',
MASTER_LOG_POS=117069861;
-----
start slave;
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
2
Help us understand the problem. What are the problem?