MySQL binlog:何时在INSERT之前记录DELETE

时间:2013-01-07 19:57:02

标签: mysql replication innodb myisam

一些相关的my.cnf设置:

binlog-format=ROW
init_connect='SET autocommit=1'
autocommit=1
innodb_flush_log_at_trx_commit=1

我还有一个正在运行的复制......现在,大多数情况下运行得相当好。

但有时我确实得到了这个:

Could not execute Delete_rows/Update_rows event on table auto.parcels_to_cache; Can't find record in 'parcels_to_cache'.

这是因为:

mysql-bin.000021.decoded-26373095-### DELETE FROM auto.parcels_to_cache
mysql-bin.000021.decoded-26373096-### WHERE
mysql-bin.000021.decoded-26373097-###   @1='0101'
mysql-bin.000021.decoded-26373098-###   @2='2013:01:05'
mysql-bin.000021.decoded:26373099:###   @3='01014700669249'
--
mysql-bin.000022.decoded-4143326-### INSERT INTO auto.parcels_to_cache
mysql-bin.000022.decoded-4143327-### SET
mysql-bin.000022.decoded-4143328-###   @1='0101'
mysql-bin.000022.decoded-4143329-###   @2='2013:01:05'
mysql-bin.000022.decoded:4143330:###   @3='01014700669249'

这是来自主服务器的解码二进制日志。复制服务器反映了这一点。

此外,这似乎只发生在InnoDB表上。但不总是。虽然我认为复制的MyISAM问题与另一个问题有关。

我最近记录了所有来源,以删除我在那里删除所有这些事务的少数交易。所以没有开始,没有提交,没有回滚......然后我添加到mysql数据库类中以便总是关闭提交。

这是因为我在MySQL网站上看到了交易问题和可交易和非交易表。

例如,这个auto.parcels_to_lifecycle表被大量使用,有时可能会被20个线程同时访问。因此InnoDB。否则每个线程将等待只有1个线程正在更新...

任何人都知道在INSERT问题之前如何修复此DELETE?或者也许某种方法来解决问题并解决它?

谢谢!

0 个答案:

没有答案