mysqlリストア方法

結局切り戻すことになったのでメモ

構成

MySQL4.0
ストレージエンジンはすべてMyISAM
マスター1台、スレーブ2台の冗長構成

方法

  1. slaveとmasterのmysqlを落とす
    1. slave側は念のためレプリケーションを止めておく
      mysql> stop slave;
    2. master,slaveともに落とす
      /sbin/service mysql stop
  2. 事前にバックアップしたmySQLのデータを用意します(自分の環境では/var/lib/mysql以下
    1. masterとslaveの全てに用意しておく(ex /var/lib/mysqlBK に展開
  3. /var/lib/mysqlを移動
    1. mv /var/lib/mysql /var/lib/mysql_origin
  4. /var/lib/mysqlBKを移動
    1. mv /var/lib/mysqlBK /var/lib/mysql

データの移動自体はこれでOK
以下起動とレプリケーションの設定

  1. 各masterとslaveを立ち上げ
    1. /sbin/service mysql start
  2. 念のためデータを確認
    1. mysqlモニタにログインしshow tables; など
  3. レプリケーションの開始
    1. masterにて
      mysql> reset master;
    2. slaveにて
      mysql> reset slave;
      これでレプリケーションの同期をしなおすことができる。
    3. slaveにて
      mysql> show slave status;

補足

  • my.cnfにレプリケーションの情報が書かれていること前提
  • 今回はデータのみバックアップしており、binlogなどはバックアップしておらず。。本来ならbinlogもそのままリストアすればreset masterをする必要がない。また、マスタだけじゃなくスレーブもバックアップしてると、それらを元の場所へリストアするだけでちゃんと動く