Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Evaluation of Database-Level Replication and Binary Logging Options

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

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

被检查的数据库取决于语句的二进制日志格式。如果语句以行格式记录,则检查的是要更改的数据库。如果语句以语句格式记录,则检查的是默认数据库(使用 USE 语句指定的)。

Note

只有 DML 语句可以以行格式记录。DDL 语句总是以语句格式记录,即使 binlog_format=ROW。所有 DDL 语句因此总是根据语句复制规则进行过滤。这意味着您必须使用 USE 语句明确选择默认数据库,以便 DDL 语句生效。

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

  1. 使用哪种日志格式?

    • STATEMENT.  测试默认数据库。

    • ROW.  测试受影响的数据库。

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

    • 是.  数据库是否与它们匹配?

      • 是.  继续到步骤 4。

      • 否.  忽略更新并退出。

    • 否.  继续到步骤 3。

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

    • 是.  数据库是否与它们匹配?

      • 是.  忽略更新并退出。

      • 否.  继续到步骤 4。

    • 否.  继续到步骤 4。

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

    Important

    在这个阶段仍然允许的语句尚未执行。语句直到所有表级选项(如果有)都被检查,并且该过程的结果允许执行语句时,才会执行。

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

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

    • 是.  继续到步骤 2。

    • 否.  记录语句并退出。

  2. 是否有默认数据库(使用 USE 语句选择的)?

    • 是.  继续到步骤 3。

    • 否.  忽略语句并退出。

  3. 有默认数据库。是否有 --binlog-do-db 选项?

    • 是.  是否与数据库匹配?

      • 是.  记录语句并退出。

      • 否.  忽略语句并退出。

    • 否.  继续到步骤 4。

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

    • 是.  忽略语句并退出。

    • 否.  记录语句并退出。

Important

对于基于语句的日志记录,刚才提到的规则中有一个例外情况,即对于 CREATE DATABASEALTER DATABASEDROP DATABASE 语句。在这些情况下,被 创建、修改或删除 的数据库将取代默认数据库,以确定是否记录或忽略更新。

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