MySQLのレプリケーションでエラーが発生した場合の対処法

MySQLレプリケーションでエラーが発生した場合の対処方法のコマンドをいつも忘れてしまうので、メモしておく。

例えば、以下のようなエラーが発生したと仮定する。(一部抜粋)

mysql> show slave status \G

Slave_IO_Running: Yes
Slave_SQL_Running: No

Last_Errno: 1062
Last_Error: Error 'Duplicate entry '321636' for key 1' on query. Default database: 'sample'. Query: 'INSERT INTO `emails` (`email`, `modified`, `created`) VALUES ('foo@example.com', '2010-01-29 10:00:08', '2010-01-29 10:00:08')'

上記のエラーを解消するためには以下の手順を行う。

mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
mysql> START SLAVE SQL_THREAD;

続けてエラーが発生する場合には、繰り返す。

他にも方法があって、my.cnfなどの設定ファイル内で

slave-skip-errors=1062

といった感じでエラーコードを指定する方法もあるみたい。個人的にはスキップしていいエラーかどうか判断が自動でできない場合の方が多いだろうから、指定しないかな。たいていの場合、なんらかの問題があった場合だろうし。