文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  数据库级复制和二进制日志记录选项的评估

19.2.5.1 数据库级复制和二进制日志记录选项的评估

在评估复制选项时,副本首先检查是否有任何适用的 --replicate-do-db--replicate-ignore-db 选项。使用 --binlog-do-db--binlog-ignore-db 时,过程类似,但会在源上检查选项。

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

注意

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

对于复制,涉及的步骤如下:

  1. 使用哪种日志记录格式?

    • 语句。测试默认数据库。

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

  2. 是否有任何 --replicate-do-db 选项?

    • 是。数据库是否与其中任何一个匹配?

      • 是。继续执行步骤 4。

      • 否。忽略更新并退出。

    • 否。继续执行步骤 3。

  3. 是否有任何 --replicate-ignore-db 选项?

    • 是。数据库是否与其中任何一个匹配?

      • 是。忽略更新并退出。

      • 否。继续执行步骤 4。

    • 否。继续执行步骤 4。

  4. 继续检查表级复制选项(如果有)。有关如何检查这些选项的说明,请参阅 第 19.2.5.2 节,“表级复制选项的评估”

    重要

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

对于二进制日志记录,涉及的步骤如下:

  1. 是否有任何 --binlog-do-db--binlog-ignore-db 选项?

    • 是。继续执行步骤 2。

    • 否。记录语句并退出。

  2. 是否有默认数据库(是否有任何数据库被 USE 选择)?

    • 是。继续执行步骤 3。

    • 否。忽略语句并退出。

  3. 存在一个默认数据库。是否有任何 --binlog-do-db 选项?

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

      • 是。  记录语句并退出。

      • 否。忽略语句并退出。

    • 否。继续执行步骤 4。

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

    • 是。  忽略该语句并退出。

    • 否。记录语句并退出。

重要

对于基于语句的日志记录,对于 CREATE DATABASEALTER DATABASEDROP DATABASE 语句,在上述规则中存在一个例外。在这些情况下,在确定是记录还是忽略更新时,正在被 创建、更改或删除 的数据库会替换默认数据库。

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