使用 Aurora MySQL 配置复制筛选条件 - Amazon Aurora

使用 Aurora MySQL 配置复制筛选条件

您可以使用复制筛选条件来指定使用只读副本的数据库和表。复制筛选条件可以将数据库和表包含在复制之中或排除在复制之外。

以下是复制筛选条件的一些使用案例:

  • 缩减只读副本的大小。使用复制筛选,您可以排除只读副本上不需要的数据库和表。

  • 出于安全原因,将数据库和表从只读副本中排除。

  • 在不同只读副本中为特定使用案例复制不同的数据库和表。例如,您可以使用特定的只读副本进行分析或分片。

  • 对于在不同 AWS 区域中具有只读副本的数据库集群,要在不同的 AWS 区域中复制不同的数据库或表。

  • 指定使用 Aurora MySQL 数据库集群复制哪些数据库和表,该集群配置为入站复制拓扑中的副本。有关此配置的更多信息,请参阅Aurora 与 MySQL 之间或 Aurora 与其他 Aurora 数据库集群之间的复制(二进制日志复制)

设置 Aurora MySQL 的复制筛选参数

要配置复制筛选条件,请设置以下参数:

  • binlog-do-db –将更改复制到指定的二进制日志。为二进制日志源集群设置此参数时,仅复制在此参数中指定的二进制日志。

  • binlog-ignore-db –不将更改复制到指定的二进制日志。为二进制日志源集群设置 binlog-do-db 参数时,不会评估此参数。

  • replicate-do-db –将更改复制到指定的数据库。为二进制日志副本集群设置此参数时,仅复制在参数中指定的数据库。

  • replicate-ignore-db –不将更改复制到指定的数据库。为二进制日志副本集群设置 replicate-do-db 参数时,不会评估此参数。

  • replicate-do-table –将更改复制到指定的表。为只读副本设置此参数时,仅复制参数中指定的表。此外,设置 replicate-do-dbreplicate-ignore-db 参数时,请确保包含指定表的数据库包含在使用二进制日志副本集群的复制中。

  • replicate-ignore-table –不将更改复制到指定的表。为二进制日志副本集群设置 replicate-do-table 参数时,不会评估此参数。

  • replicate-wild-do-table – 根据指定的数据库和表名模式复制表。支持 %_ 通配符。设置 replicate-do-dbreplicate-ignore-db 参数时,请确保包含指定表的数据库包含在使用二进制日志副本集群的复制中。

  • replicate-wild-ignore-table –不基于指定的数据库和表名模式复制表。支持 %_ 通配符。为二进制日志副本集群设置 replicate-do-tablereplicate-wild-do-table 参数时,不会评估此参数。

将按这些参数列出的顺序对其进行评估。有关这些参数如何运行的更多信息,请参阅 MySQL 文档:

默认情况下,这些参数中的每个参数都具有一个空值。在每个二进制日志集群上,您可以使用这些参数来设置、更改和删除复制筛选条件。设置其中一个参数时,请用逗号将各筛选条件分开。

您可以在 %_ 参数中使用 replicate-wild-do-tablereplicate-wild-ignore-table 通配符。% 通配符可以匹配任意数量的字符,而 _ 通配符只能匹配一个字符。

源数据库实例的二进制日志记录格式对于复制非常重要,因为它决定了数据更改的记录。binlog_format 参数的设置将决定复制是基于行还是基于语句的复制。有关更多信息,请参阅“配置 Aurora MySQL 二进制日志记录”。

注意

无论源数据库实例上的 binlog_format 设置如何,所有数据定义语言 (DDL) 语句都将作为语句进行复制。

Aurora MySQL 的复制筛选限制

以下限制适用于 Aurora MySQL 的复制筛选:

  • 仅 Aurora MySQL 版本 3 支持复制筛选条件。

  • 每个复制筛选参数不得超过 2000 个字符。

  • 复制筛选条件中不支持逗号。

  • 复制筛选不支持 XA 事务。

    有关更多信息,请参阅 MySQL 文档中的XA 事务限制

Aurora MySQL 的复制筛选示例

要为只读副本配置复制筛选,请修改与只读副本关联的数据库集群参数组中的复制筛选参数。

注意

您无法修改默认数据库集群参数组。如果只读副本使用默认参数组,请创建新的参数组并将其与只读副本关联。有关数据库集群参数组的更多信息,请参阅Amazon Aurora 的参数组

您可以使用 AWS Management Console、AWS CLI 或 RDS API 在数据库集群参数组中设置参数。有关设置参数的信息,请参阅 在 Amazon Aurora 中修改数据库参数组中的参数。在数据库集群参数组中设置参数时,与参数组关联的所有数据库集群都使用参数设置。如果在数据库集群参数组中设置复制筛选参数,请确保参数组仅与只读副本集群关联。将源数据库实例的复制筛选参数留空。

以下示例使用 AWS CLI 设置参数。这些示例将 ApplyMethod 设置为 immediate,以便在 CLI 命令完成后立即发生参数更改。如果希望在只读副本重新启动后应用待处理的更改,请将 ApplyMethod 设置为 pending-reboot

以下示例设置了复制筛选条件:

例 将数据库包含在复制之中

以下示例将 mydb1mydb2 数据库包含在复制之内。

对于 Linux、macOS 或 Unix:

aws rds modify-db-cluster-parameter-group \ --db-cluster-parameter-group-name myparametergroup \ --parameters "ParameterName=replicate-do-db,ParameterValue='mydb1,mydb2',ApplyMethod=immediate"

对于 Windows:

aws rds modify-db-cluster-parameter-group ^ --db-cluster-parameter-group-name myparametergroup ^ --parameters "ParameterName=replicate-do-db,ParameterValue='mydb1,mydb2',ApplyMethod=immediate"
例 将表包含在复制之中

以下示例将数据库 table1 中的 table2mydb1 表包含在复制之中。

对于 Linux、macOS 或 Unix:

aws rds modify-db-cluster-parameter-group \ --db-cluster-parameter-group-name myparametergroup \ --parameters "ParameterName=replicate-do-table,ParameterValue='mydb1.table1,mydb1.table2',ApplyMethod=immediate"

对于 Windows:

aws rds modify-db-cluster-parameter-group ^ --db-cluster-parameter-group-name myparametergroup ^ --parameters "ParameterName=replicate-do-table,ParameterValue='mydb1.table1,mydb1.table2',ApplyMethod=immediate"
例 使用通配符将表包含在复制之中

以下示例将数据库 order 中名称以 returnmydb 开头的表包含在复制之中。

对于 Linux、macOS 或 Unix:

aws rds modify-db-cluster-parameter-group \ --db-cluster-parameter-group-name myparametergroup \ --parameters "ParameterName=replicate-wild-do-table,ParameterValue='mydb.order%,mydb.return%',ApplyMethod=immediate"

对于 Windows:

aws rds modify-db-cluster-parameter-group ^ --db-cluster-parameter-group-name myparametergroup ^ --parameters "ParameterName=replicate-wild-do-table,ParameterValue='mydb.order%,mydb.return%',ApplyMethod=immediate"
例 将数据库排除在复制之外

以下示例将 mydb5mydb6 数据库排除在复制之外。

对于 Linux、macOS 或 Unix:

aws rds modify-db-cluster-parameter-group \ --db-cluster-parameter-group-name myparametergroup \ --parameters "ParameterName=replicate-ignore-db,ParameterValue='mydb5,mydb6',ApplyMethod=immediate"

对于 Windows:

aws rds modify-db-cluster-parameter-group ^ --db-cluster-parameter-group-name myparametergroup ^ --parameters "ParameterName=replicate-ignore-db,ParameterValue='mydb5,mydb6,ApplyMethod=immediate"
例 将表排除在复制之外

以下示例将数据库 mydb5 中的表 table1 和数据库 mydb6 中的表 table2 排除在复制之外。

对于 Linux、macOS 或 Unix:

aws rds modify-db-cluster-parameter-group \ --db-cluster-parameter-group-name myparametergroup \ --parameters "ParameterName=replicate-ignore-table,ParameterValue='mydb5.table1,mydb6.table2',ApplyMethod=immediate"

对于 Windows:

aws rds modify-db-cluster-parameter-group ^ --db-cluster-parameter-group-name myparametergroup ^ --parameters "ParameterName=replicate-ignore-table,ParameterValue='mydb5.table1,mydb6.table2',ApplyMethod=immediate"
例 使用通配符将表排除在复制之外

以下示例将数据库 order 中名称以 returnmydb7 开头的表排除在复制之外。

对于 Linux、macOS 或 Unix:

aws rds modify-db-cluster-parameter-group \ --db-cluster-parameter-group-name myparametergroup \ --parameters "ParameterName=replicate-wild-ignore-table,ParameterValue='mydb7.order%,mydb7.return%',ApplyMethod=immediate"

对于 Windows:

aws rds modify-db-cluster-parameter-group ^ --db-cluster-parameter-group-name myparametergroup ^ --parameters "ParameterName=replicate-wild-ignore-table,ParameterValue='mydb7.order%,mydb7.return%',ApplyMethod=immediate"

查看只读副本的复制筛选条件

您可以通过以下方式查看只读副本的复制筛选条件:

  • 检查与只读副本关联的参数组中复制筛选参数的设置。

    有关说明,请参阅在 Amazon Aurora 中查看数据库参数组的参数值

  • 在 MySQL 客户端中,连接到只读副本并运行 SHOW REPLICA STATUS 语句。

    在输出中,以下字段显示了只读副本的复制筛选条件:

    • Binlog_Do_DB

    • Binlog_Ignore_DB

    • Replicate_Do_DB

    • Replicate_Ignore_DB

    • Replicate_Do_Table

    • Replicate_Ignore_Table

    • Replicate_Wild_Do_Table

    • Replicate_Wild_Ignore_Table

    有关这些字段的更多信息,请参阅 MySQL 文档中的检查复制状态