LoginSignup
1
3

More than 5 years have passed since last update.

Mysql の master がログファイルのディスクフルが原因で死んでいた時の対処

Last updated at Posted at 2017-04-20

背景

ほったらかしにしていたログファイルがいつの間にかいっぱいになっていて、ディスクフルにより 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 |
+-----------+------+------+-----------+

成功!
次はログローテートかな

1
3
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
1
3