mysql主从uuids_关于MySQL主从复制中UUID的警告信息

日期: 2014年5月23日

博客: 铁锚

近期在查看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这样的日志格式是不安全的。

在网上找了一些资料,显示 5.0 版本号是绝对有问题的,怎么办呢?

要么改动实现,比方在应用层生成 UUID。要么就採用基于行,而不是基于语句的二进制日志格式。

据说 5.0 以后是不一定的,翻看了一些官方文档,好像 5.6 版本号修正了这个问题。

我们使用的是MariaDB5.5,应该是兼容 MySQL5.5吧,经排查这个问题系统已经自己攻克了。

MariaDB [(none)]> select version();

+--------------------+

| version() |

+--------------------+

| 5.5.34-MariaDB-log |

+--------------------+

1 row in set (0.00 sec)假设你遇到这个问题。假如还能够升级数据库系统,那就升级到最新版那就没事了。

假设不能升级DMBS,那么就须要在应用层,或者採用 基于行的复制方式 了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值