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