MySQL MASTER TO MASTER 复制在数据库级别工作,但不使用 Spring/Hibernate 在应用程序级别工作

标签 mysql database database-replication

我们使用 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/

相关文章:

mysql - MySQL GTID 可以用于主-主拓扑吗?

sql - 如何选择整行而不选择某个列值重复的行?

php - 在我的数据库中实现图片表的最佳方式

java - 当日期列在数据库中不可用时,在特定日期后自动删除数据库

mysql - 在没有 my.conf 文件的 root 访问权限的情况下复制 mysql 数据库?

mongodb - 将副本集转换为独立服务器后遇到 MongoDB 警告

mysql - 无法在 64 位 Win7 上安装 fedena

mysql - 管理数据库增量的最佳通用工具

mysql - 关系数据库中的时区混淆

database - 最佳数据库结构 - 'wider' 表具有空字段或更多表?