Record a Mysql master-slave out-of-sync accident problem and accident solution
First of all, I may have moved the events table in the library when I was optimizing the zabbix library yesterday. Led to the following problems. After checking that the problem is not resolved, it appears as follows:
We can see that the reason why the slave library is out of sync with the master library is this:
The scientific name of this problem is foreign key bondage. As the name implies, we can take a look at these two table structures.
It is found that there is a field eventid, and when we operate on the eventid field in the table events, event_recovery cannot insert the data, so we have to skip it, so how do we skip it?
First, we execute on the slave library: stop slave
Second, execute: SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1
Finally, its slave thread: start slave
Let's check the status again:
OK, this problem is solved.
Tip: don't abuse SET GLOBAL SQL_SLAVE_SKIP_COUNTER = n; (skip to a Binlog event group, which is equivalent to a transaction), so when we perform this operation, we should see what we are going to skip and how to view it.
According to the values of Relay_Log_File and Relay_Log_Pos in slave status, what is the current interrupted binlog event group operation?
Commands for viewing:
Show relaylog events in "Relay_Log_File" from Relay_Log_Pos limit n
Well, that's the end of this question, and put it in notes so that we can see similar problems in the future.