我们使用 MySQL 进行 MASTER TO MASTER 复制。
当我们直接使用 MySQL 监视器输入 SQL 语句(即在表上执行 INSERT 或 DELETE)时,它会起作用(即复制到其他数据库)。这已经过两种方式的测试,即在每个数据库上测试它们是否都复制到另一个数据库(并且确实如此)。
但是,当我们使用 Spring/Hibernate 的 Web 应用程序来保存数据时,它会正确保存到当前连接的数据库,但不会复制到另一个数据库!我没想到这是可能的!
我查看了我可以找到的日志文件: /var/log/mysqld.log 但看不到任何错误。
我如何进一步调查此事?
我可以将日志记录改进得更详细吗?
这实际上有可能以某种方式绕过复制吗?我不这么认为,但我刚刚进行了一系列测试来证明这一点。
最佳答案
答案是我们有基于语句的复制,而不是基于行的复制!
下面的链接解释了基于语句的复制(默认和我们正在使用的)和基于行的复制 https://dev.mysql.com/doc/refman/5.1/en/replication-options-slave.html#option_mysqld_replicate-do-db
mysql> show variables like 'binlog_format';
+---------------+-----------+
| Variable_name | Value |
+---------------+-----------+
| binlog_format | STATEMENT |
+---------------+-----------+
mysql> SET GLOBAL binlog_format = 'ROW';
/etc/my.cnf
#Setup binary logging
log_bin=/var/log/mysql/mysql-bin.log
binlog_do_db=MY_DATABASE
binlog-format=ROW
关于MySQL MASTER TO MASTER 复制在数据库级别工作,但不使用 Spring/Hibernate 在应用程序级别工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31270812/