mysql replication skip statement. is it possible?
I found the starting the io_thread first
start slave io_thread;
and checking the relay logs with the command
SHOW RELAYLOG EVENTS IN 'mysql-bin.000XXX' LIMIT 100;
This saved me a lot of time.
Try the following on the slave:
STOP SLAVE;
SET GLOBAL sql_slave_skip_counter = 1;
START SLAVE;
This will stop the slaves threads and skips the next event from the master. This you normally use when you have problems with statements to skip over them.
Also read following part of the mysql docs: set-global-sql-slave-skip-counter
First explore the binary logs on the master to find the SQL statement that is causing the issue, using the following on the master:
SHOW BINLOG EVENTS IN 'mysql-bin.000XXX' LIMIT 100;
Then set the slave to only sync up to the statement before that:
STOP SLAVE;
START SLAVE UNTIL MASTER_LOG_FILE = 'log_name', MASTER_LOG_POS = log_pos;
When you want it to carry on replication after the bad statement (warning, this can be dangerous if the statement changed data) you can tell the slave to continue from a specific point in the masters log. To do this get the position using the first command on the master, then set the slave to go:
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000663', MASTER_LOG_POS=4;
START SLAVE;
For those on Amazon RDS MySQL you can skip one error at a time on the slave with:
CALL mysql.rds_skip_repl_error;
No need to stop replication before running this.