一些相关的 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 问题?或者也许有某种方法来解决问题并解决它?
谢谢!