前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL FAQ 系列 : 不同的 binlog_format 会导致哪些 SQL 不会被记录

MySQL FAQ 系列 : 不同的 binlog_format 会导致哪些 SQL 不会被记录

原创
作者头像
叶金荣
修改2017-06-19 18:59:15
1.2K0
修改2017-06-19 18:59:15
举报
文章被收录于专栏:iMySQL的专栏iMySQL的专栏

我们都知道 binlog_format 有三种可选配置:STATEMENT、ROW、MIXED,相应地,基于这三种模式的 Replication 分别称为 SBR(STATEMENT BASED Replication)、RBR、MBR。 同时,我们也知道,MySQL Replication 可以支持比较灵活的 binlog 规则,可以设置某些库、某些表记录或者忽略不记录。

通常地,我们强烈建议不要设置这些规则,默认都记录就好,在 Slave 上也是如此,默认所有库都进行 Replicate,不要设置 DO、IGNORE、REWRITE 规则。 如果非要设置这些规则的话,可能会导致某些场景下或者某些特定的 SQL 无法被记录,就需要特别注意了。

我经过比较简单的测试,不同的 binlog_format 可能会导致某些 SQL 不被记录的情况总结如下:

上面的测试区分了两种模式,一种是连接时指定了其他数据库,一种是连接时未指定任何数据库,相当于下面的两种方式:

#假设do/ignore规则中的DB名字叫DoDB/IgnoreDB/RewriteDB的话,OtherDB是规则之外的其他DB

#一种是:连接时指定了do/ignore/rewrite规则之外的其他DB
mysql -h host -u user -p passwd -p port -A OtherDB

#还有一种是:连接时不指定任何DB
mysql -h host -u user -p passwd -p port -A

#tips,加上 -A 是--no-auto-rehash的缩写,其作用是连接后不读取数据库、表、字段信息。与其相反的选项是 --auto-rehash,也就是连接后会读取数据库、表、字段信息,以便自动补齐

更多情况请读者自行进行测试吧 :)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档