最近在查看MariaDB主从复制服务器 Master 的错误日志时看到很多条警告信息,都是提示 UUID()函数不安全,可能 Slave 产生的值和 Master不一致, 警告信息大致如下:140522 15:11:10 [Warning]
Unsafe statement written to the binary log
using statement format since BINLOG_FORMAT = STATEMENT.
Statement is unsafe because it uses a system function
that may return a different value on the slave.
Statement:
insert into t_user(userId,userName) values(uuid(),"FunYoung")大致翻译为中文如下所示:140522 15:11:10 [警告]
因为使用的格式是 BINLOG_FORMAT = STATEMENT,
所以写入到二进制日志中的语句可能是不安全的.
语句不安全是因为使用了一个系统函数,
在 slave从服务器上执行可能会生成不一致的数值.
语句如下:
insert into t_user(userId,userName) values(uuid(),"FunYoung")看样子是说,因为slave的 UUID() 函数产生的值可能和Master的不一致,所以使用 BINLOG_FORMAT = STATEMENT这种日志格式是不安全的。MySQL主从复制配置 http://www.linuxidc.com/Linux/2013-05/84810.htm在网上找了一些资料,显示 5.0 版本是绝对有问题的,怎么办呢? 要么修改实现,比如在应用层生成 UUID,要么就采用基于行,而不是基于语句的二进制日志格式。据说 5.0 以后是不一定的,翻看了一些官方文档,好像 5.6 版本修正了这个问题。 参考链接: 22 Changes in MySQL 5.6.0还有个是09年的文档,说是当时有这个问题 : https://drupal.org/node/502622还有一个更详细的文章: Beware of MySQL 5.6 server UUID when cloning slaves我们使用的是MariaDB5.5,应该是兼容 MySQL5.5吧,经排查这个问题系统已经自己解决了。MariaDB [(none)]> select version();
+--------------------+
| version() |
+--------------------+
| 5.5.34-MariaDB-log |
+--------------------+
1 row in set (0.00 sec)如果你遇到这个问题,假如还可以升级数据库系统,那就升级到最新版那就没事了。 如果不能升级DMBS,那么就需要在应用层,或者采用 基于行的复制方式 了。
更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2014-05/102178p2.htm
Oracle 12C 新特性中文注释 MariaDB my.cnf 大型服务器配置模板相关资讯 MySQL主从复制 MySQL UUID
- CentOS搭建MySQL主从复制,读写分 (今 07:44)
- MySQL主从复制原理应用基础 (08月27日)
- MySQL主从复制 实践 (08月22日)
| - MySQL主从复制出现1205错误 (08月31日)
- MySQL 主从复制原理 (08月22日)
- 使用XtraBackup进行MySQL不锁表主 (08月09日)
|
本文评论 查看全部评论 (0)