失敗履歴・その1/レプリ貼れない><
僕の失敗が人に役立てばいいなと思って、
Evernoteに溜め込んでる恥ずかしい失敗履歴を外に出していくことにした
レプリが貼れない
開発環境で、
MySQLマスター1台で動いていたものにSlave2台追加しようとしたというお話。
順番としては
- Masterでbin-log出るようにする
- Master再起動
- ポジション確認
- 更新かかってないので、ボゴーンと/var/lib/mysqlをslaveに渡す
- slaveで配置して、CHANGE MASTERしてstart slave
のはずが・・・・
mysql>show slave status¥G Last_IO_Errno: 1236 Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'
なんじゃこりゃ、見たこと無いぞよ。
binlog、何処ーってこと?
master側で確認してみる
[root@dbm01 mysql]# cat mysql-bin.index ./mysql-bin.000037
んー、ちゃんと指定してるし
実際のファイルもあるなー
ポジションが違うんかな?
もっかい確認してみるか
mysql> show master status;
お、応答がない・・・・^^;
んー、binlog書きだしてみるか
[root@dbm01 mysql]# mysqlbinlog mysql-bin.000037 > test.txt ERROR: Error in Log_event::read_log_event(): 'read error', data_len: 640, event_type: 24
こ、こんなエラー見たこと無い( /// )
binlog開けへん
binlog死んでしもたん?
mysqlのerrlogを見てみる
[root@dbm01 mysql]# less dbm01.err 130528 21:18:13 [ERROR] /usr/sbin/mysqld: Disk is full writing './mysql-bin.000037' (Errcode: 28). Waiting for someone to free space... (Expect up to 60 secs delay for server to continue after freeing disk space)
Disk Full wwwwwwwwwwww
そういえば、/var/lib/mysqlの容量がデカかったから一旦tarに固めてから転送したんだった。
tarで固めたのを消して、生のデータを送り直して
mysql> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000037 | 496277 | | | +------------------+----------+--------------+------------------+
これで、
CHANGE MASTER したら通った
やった!
binlog壊したった!っておもったらすんごくしょうもない結末でした
まとめ
初歩中の初歩じゃないですか