たまごかける日報

ここにAA貼りたい

失敗履歴・その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壊したった!っておもったらすんごくしょうもない結末でした

まとめ

初歩中の初歩じゃないですか