Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 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。因此,您必须使用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时,不会将default数据库不同于sales的语句写入到二进制日志中。使用同样选项时,服务器将只记录在sales中的更新。