MySQL5.0で変なエラーでレプリケーションがとまってた

MySQL5.0で変なエラーでレプリケーションがとまってた。

エラーの内容は以下のとおり


Last_Error: Error 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1' on query. Default database: 'cacti'. Query: 'insert into poller_output (local_data_id, rrd_name, time, '

これってクエリにエラーがあるよってことでとまってる。確かに最後がカンマで終わっててへんなとまり方してる。このクエリは親元のマスターサーバから転送されたもので、エラーが起こるってのはちょっとおかしい。

気になったので親元のサーバのbinlogを見てみる。

エラーの状態には


Master_Log_File: mysql-bin.000075
Read_Master_Log_Pos: 498599301

とあるのでそこを見てみる。


%mysqlbinlog --start-position=498599301 mysql-bin.000075 | more

/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @[email protected]@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#110121  2:25:09 server id 84035  end_log_pos 106       Start: binlog v 4, server v 5.1.42-log created 110121  2:25:09
# Warning: this binlog is either in use or was not closed properly.
BINLOG '
9W84TQ9DSAEAZgAAAGoAAAABAAQANS4xLjQyLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC
'/*!*/;
# at 498599301
#110124  9:08:13 server id 84035  end_log_pos 498599377         Query   thread_id=13    exec_time=0     error_code=0
SET TIMESTAMP=1295827693/*!*/;
SET @@session.pseudo_thread_id=13/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=524288/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;
SET @@session.time_zone='SYSTEM'/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
# at 498599377

うーん、同じようなクエリは記述されてないぞ・・・?

binlogの見方が間違ってるんだろうか。

スレーブ側はtritonnな5.0で、ノーマルの5.1なmasterとはちょっと状況が違う。でもそれでも、見た感じまったくダメダメなクエリが詰まってるってのはおかしいなぁ。とりあえずskipしてstart slave;しておく。

なぜかmaatkitでmk-slave-restartを使って–error-number 1062したらダメだった。


DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''494070874'' at line 1 [for Statement "CHANGE MASTER TO MASTER_LOG_FILE=?, MASTER_LOG_POS=?" with ParamValues: 0='mysql-bin.000075', 1='494070874'] at /usr/local/bin/mk-slave-restart line 2771.

こんなエラーが出てダメだそうで。これはmaatkit側のバグっぽいな~。

あとでわかったことだけど、show slave statusの

Master_Log_File: mysql-bin.000075
Read_Master_Log_Pos: 498599301

は、現在のi/oスレッドが読み出しているマスターのbinlogの位置情報。なのでコレの場所を探したところで該当するエラーの行が含まれてないのはもっとも。

今回のエラーの根本的な原因はサーバの不正なシャットダウンによるリレーログの破損が原因と思われた。

「MySQL5.0で変なエラーでレプリケーションがとまってた」への1件のフィードバック

コメントを残す