在MySQL复制Master-Slave中,有没有处理函数:
- 加载文件()
- UUID(), UUID_SHORT()
- 用户()
- FOUND_ROWS()
- 系统日期()
- 获取锁()
- IS_FREE_LOCK()
- IS_USED_LOCK()
- MASTER_POS_WAIT()
- 兰德()
- 释放锁()
- 睡觉()
- 版本()
我们有复制,我有点担心数据的一致性,我本地主机中的 IE。
掌握
mysql> CREATE TABLE `t1` ( `number_id` varchar(30) DEFAULT NULL );
mysql> insert into t1 values (uuid_short());
mysql> select * from t1;
+-------------------+
| number_id |
+-------------------+
| 95769054064672779 |
+-------------------+
1 row in set (0.00 sec)
奴隶
mysql> select * from t1;
+--------------------+
| number_id |
+--------------------+
| 167826651055390725 |
+--------------------+
1 row in set (0.00 sec)
掌握
mysql> update t1 set number_id=0 where number_id='95769054064672779';
mysql> select * from t1;
+-----------+
| number_id |
+-----------+
| 0 |
+-----------+
1 row in set (0.00 sec)
奴隶
mysql> select * from t1;
+--------------------+
| number_id |
+--------------------+
| 167826651055390725 |
+--------------------+
1 row in set (0.00 sec)
有办法处理吗?我不是程序员,程序员是否应该知道它是复制数据库,以便他可以开始使用带有 Mysql 函数的变量来保持一致性?
您所看到的是完全不可接受的,不应期望开发人员解决它。
您在回答中隐藏了它,我不知道您是否没有注意到它,或者不认为它很重要,或者您的设置中有什么东西坏了。这是你应该看到的:
注意 1 警告。
因此,您的简单解决方法是“不要使用语句格式”。
清理那些不一致的表,然后......
然后,为接下来的事情做好准备......因为
MIXED
模式比STATEMENT
模式更正确和确定,它也更有可能检测到服务器已经不一致的情况,并且复制将停止。不要因为MIXED
模式已经破坏它而感到困惑......MIXED
模式只会发现你已经存在的问题。格式也是如此,它在维护相同
ROW
数据方面更加积极,因此是我的首选BINLOG_FORMAT
,等等。您还需要在您的
my.cnf
文件中设置它,以便在服务器重新启动时设置仍然存在。但是一旦你不再使用
STATEMENT
模式,这个问题应该完全消失。http://dev.mysql.com/doc/refman/5.6/en/replication-rbr-safe-unsafe.html