[ERROR] Slave: 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 ‘sql’ at line 1′ on query. Default database: ‘auc’. Query: ‘sql’, Error_code: 1064
090327 10:51:03 [ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with “SLAVE START”. We stopped at log ‘mysql-bin.000006’ position 79696519
おかしい。マスターでは問題ないのに、レプリケーションしているスレーブでエラーが発生している。エラーメッセージを見る限りではsqlのシンタックスエラーが起こっているということになっている。仮に、本当にsqlシンタックスエラーがあるのならば、マスターでそれは感知しないといけないことだけれど、それがないということはレプリケーションが取得するマスターのログに問題がありそうな気配が濃厚になってくる。もう一度マスターのレプリケーションの設定を見直す必要があるかもしれない。
とりあえずの対処法は、このエラーが発生した箇所をスキップする。
mysql> set global sql_slave_skip_counter = 1;
Query OK, 0 rows affected (0.00 sec)
mysql> start slave;
sql_slave_skip_counterに1を入れることで現在止まっているエラー箇所を飛ばす、ということになるのかな。start slaveでまたスレーブ動作を開始する。
その後
もう少し調べ見ると、マスターで作られたログファイルと、スレーブが取得したログファイルの内容が微妙に違っているということが判明した。問題が起こっているのはスレーブがマスターから取得してきたはずのログファイルで、どういうわけかsqlのシンタックスエラーがところどころ発生するような形でリレーログを作成している。