背景
ほったらかしにしていたログファイルがいつの間にかいっぱいになっていて、ディスクフルにより master の Mysql が死んでいた。slave はディスク容量は余裕があり生きてはいるもののエラーが出ていた。
ログファイルを空っぽに
$ sudo echo -n > ログファイル
Mysql 起動
死んでることを確認して起動
$ sudo service mysqld start
slave の状態を確認
> show slave status \G;
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: xxx.xxx.xxx.xxx
(中略)
Last_IO_Errno: 1236
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'binlog truncated in the middle of event; consider out of disk space on master; the first event...
Error 1236 でうまくいっていないことがわかる。
バイナリログから master の情報を読む時にエラーが出たよって内容らしい。
今回は master が一晩死んでいたので、バイナリログの情報がずれまくっている。
master のバイナリログを確認
masterで下記を実行して、File と Position を取得
> show master status;
slave に取得したFile と Position を反映
> stop slave;
Query OK, 0 rows affected (0.02 sec)
> CHANGE MASTER TO MASTER_HOST='xxx.xxx.xxx.xxx', MASTER_LOG_FILE='取得したFile名', MASTER_LOG_POS=取得したPosition;
Query OK, 0 rows affected (0.05 sec)
> start slave;
Query OK, 0 rows affected (0.00 sec)
> show slave status \G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: xxx.xxx.xxx.xxx
(中略)
Last_IO_Errno: 0
Last_IO_Error:
master で slave が存在するか確認
> show slave hosts;
+-----------+------+------+-----------+
| Server_id | Host | Port | Master_id |
+-----------+------+------+-----------+
| 18 | | 3306 | 17 |
+-----------+------+------+-----------+
成功!
次はログローテートかな