首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql“不安全声明”

mysql“不安全声明”
EN

Database Administration用户
提问于 2012-08-21 07:15:18
回答 1查看 1.4K关注 0票数 1

我收到了很多信息

=语句以来使用语句格式写入二进制日志的不安全语句。语句是不安全的,因为它在访问同一事务中的事务表后访问非事务性表。声明:

我真不明白为什么会这样。根据消息,这是因为在代码中我试图插入和更新Innodb表和MyISAM表。是对的吗?

这很危险吗?这个错误的后果是什么。

我该怎么解决这个问题。它能在不改变代码的情况下被解决吗?

目前,默认情况下,mysql使用BINLOG_FORMAT =语句。这意味着奴隶上的复制就像mysql语句一样运行吗?对于BINLOG_FORMAT来说,更好的选择是什么?

Mysql版本为5.5.24。

谢谢

EN

回答 1

Database Administration用户

发布于 2012-08-21 09:44:55

您可以设置这三种BINLOG格式中的任意一种:

  • 语句导致日志记录基于语句。
  • 行导致日志记录基于行。
  • 混合会导致日志记录使用混合格式。

默认二进制日志格式取决于您使用的MySQL的版本:

  • 对于MySQL 5.1.11和更早版本,以及MySQL 5.1.29及更高版本,默认情况下使用基于语句的日志记录。
  • 对于MySQL 5.1.12到MySQL 5.1.28,默认使用混合日志记录。

你必须确保:

  1. 每个MySQL服务器都可以设置自己的二进制日志格式,而且只能设置自己的二进制日志格式(无论binlog_format设置为全局还是会话范围)。这意味着更改复制母版上的日志记录格式并不会导致从节点更改其日志记录格式以匹配。(当使用语句模式时,binlog_format系统变量不会被复制;当使用混合或行日志记录模式时,它会被复制,但会被从服务器忽略。)在复制过程中更改主服务器上的二进制日志格式,或者在从服务器上不对其进行更改,都会导致意外的结果,甚至导致复制完全失败。
  2. 当使用基于语句的日志进行复制时,如果一条语句的设计方式使数据修改是不确定的;也就是说,这取决于查询优化器的意愿,那么主从数据上的数据就有可能变得不同。一般来说,即使在复制之外,这也不是一个很好的实践。

此外,这个bug报告与您在这里提到的问题有关:

http://bugs.mysql.com/bug.php?id=53259

票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/22814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档