暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

17.2.3.1 Evaluation of Database-Level Replication and Binary Logging Options

原创 由迪 2020-03-04
931

当评估复制选项,从一开始就检查,看看是否有任何 --replicate-do-db或 --replicate-ignore-db适用的选项。使用 --binlog-do-db或时 --binlog-ignore-db,过程类似,但是在母版上检查了选项。

检查数据库是否匹配取决于所处理语句的二进制日志格式。如果该语句已使用行格式记录,则要在其中更改数据的数据库是已检查的数据库。如果已使用语句格式记录了该语句,则默认数据库(使用USE语句指定 )是已检查的数据库。

注意
使用行格式只能记录DML语句。DDL语句始终记录为语句,即使 binlog_format=ROW。因此,始终会根据基于语句的复制规则来过滤所有DDL语句。这意味着您必须使用USE语句明确选择默认数据库 ,才能应用DDL语句。

对于复制,此处列出了涉及的步骤:

使用哪种日志格式?

声明。 测试默认数据库。

行。 测试受更改影响的数据库。

有什么 --replicate-do-db选择吗?

是。 数据库是否与它们中的任何一个匹配?

是。 继续执行步骤4。

否。 忽略更新并退出。

否。 继续执行步骤3。

有什么 --replicate-ignore-db 选择吗?

是。 数据库是否与它们中的任何一个匹配?

是。 忽略更新并退出。

否。 继续执行步骤4。

否。 继续执行步骤4。

继续检查表级复制选项(如果有)。有关如何检查这些选项的描述,请参见 第17.2.3.2节“表级复制选项的评估”。

重要
在此阶段仍允许的语句尚未实际执行。在还检查了所有表级选项(如果有)之后,该语句才执行,并且该过程的结果允许执行该语句。

对于二进制日志记录,此处列出了涉及的步骤:

是否有任何–binlog-do-db 或–binlog-ignore-db 选择?

是。 继续执行步骤2。

否。 记录该语句并退出。

是否存在默认数据库(是否选择了任何数据库USE)?

是。 继续执行步骤3。

否。 忽略该语句并退出。

没有默认数据库。有什么 --binlog-do-db选择吗?

是。 它们是否与数据库匹配?

是。 记录该语句并退出。

否。 忽略该语句并退出。

否。 继续执行步骤4。

是否有任何 --binlog-ignore-db选项与数据库匹配?

是。 忽略该语句并退出。

否。 记录该语句并退出。

重要
对于基于语句的日志记录,一个例外是只为给定的规则做CREATE DATABASE,ALTER DATABASE和DROP DATABASE声明。在这些情况下, 在确定是记录日志还是忽略更新时,正在创建,更改或删除的数据库将替换默认数据库。

–binlog-do-db有时可能意味着 “ 忽略其他数据库 ”。例如,当使用基于语句的日志记录时,仅运行的服务器 --binlog-do-db=sales不会写入默认数据库不同于的二进制日志语句sales。当使用具有相同选项的基于行的日志记录时,服务器仅记录那些更改数据的更新sales。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论