4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MySQL Slave再構築

Last updated at Posted at 2018-10-24

とあるクラウド上で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;
4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?