事务和主从复制

时间:2011-08-06 22:38:23

标签: mysql database replication innodb

我希望清除一些混乱。我有一个主+从设置。我有一个主人和3个奴隶。所有写入(INSERT|UPDATE|DELETE)都是主人。所有读取(SELECT)都转到其中一个奴隶,这是随机选择的。我的所有表都使用InnoDB存储引擎。

我很好奇MySQL / InnoDB如何处理此设置中的事务。如果MySQL将事务中的每个更改写入binlog,那么一切都应该没问题。但是,如果在提交事务之前没有写入binlog,我可以看到存在一些大问题。

任何人都可以解释在复制到位的事务中MySQL内发生的事情吗?

2 个答案:

答案 0 :(得分:1)

通常,如果事务在提交之前未写入二进制日志。假设该表是事务性的,则事务中的所有语句都组合在一起成为一个BEGIN \ COMMIT语句。

答案 1 :(得分:1)

根据this,从属设备只能在事务提交后才能看到更改。

  

主服务器上失败的事务根本不会影响复制。 MySQL复制基于二进制日志,MySQL编写修改数据的SQL语句。失败的事务(例如,由于外键冲突,或因为它被回滚)不会写入二进制日志,因此不会发送给从属。

this确认:

  

二进制日志是崩溃安全的。只记录或回读完整的事件或事务。