示例:将逻辑复制与 Aurora PostgreSQL 数据库集群结合使用 - Amazon Aurora
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

示例:将逻辑复制与 Aurora PostgreSQL 数据库集群结合使用

以下过程说明了如何在两个 Aurora PostgreSQL 数据库集群之间启动逻辑复制。发布者和订阅者都必须配置为进行逻辑复制,如为 Aurora PostgreSQL 数据库集群设置逻辑复制中详述。

作为指定发布者的 Aurora PostgreSQL 数据库集群也必须允许访问复制插槽。为此,请基于 Amazon VPC 服务修改与 Aurora PostgreSQL 数据库集群的虚拟公有云(VPC)关联的安全组。通过将与订阅者的 VPC 关联的安全组添加到发布者的安全组来允许入站访问。有关安全组的更多信息,请参阅《Amazon VPC 用户指南》中的使用安全组控制到资源的流量

完成这些初步步骤后,您可以对发布者使用 PostgreSQL 命令 CREATE PUBLICATION,并对订阅者使用 PostgreSQL 命令 CREATE SUBSCRIPTION,详见以下过程。

在两个 Aurora PostgreSQL 数据库集群之间启动逻辑复制过程

这些步骤假设您的 Aurora PostgreSQL 数据库集群有一个写入器实例,其中包含一个用于创建示例表的数据库。

  1. 在发布者 Aurora PostgreSQL 数据库集群上

    1. 使用以下 SQL 语句创建一个表。

      CREATE TABLE LogicalReplicationTest (a int PRIMARY KEY);
    2. 使用以下 SQL 语句将数据插入到发布者数据库。

      INSERT INTO LogicalReplicationTest VALUES (generate_series(1,10000));
    3. 使用以下 SQL 语句验证表中是否存在数据。

      SELECT count(*) FROM LogicalReplicationTest;
    4. 使用 CREATE PUBLICATION 语句为此表创建发布,如下所示。

      CREATE PUBLICATION testpub FOR TABLE LogicalReplicationTest;
  2. 在订阅者 Aurora PostgreSQL 数据库集群上

    1. 在订阅者上创建与在发布者上创建的同一个 LogicalReplicationTest 表,如下所示。

      CREATE TABLE LogicalReplicationTest (a int PRIMARY KEY);
    2. 验证此表为空。

      SELECT count(*) FROM LogicalReplicationTest;
    3. 创建订阅以获取来自发布者的更改。您需要使用以下有关发布者 Aurora PostgreSQL 数据库集群的详细信息。

      • host – 发布者 Aurora PostgreSQL 数据库集群的写入器数据库实例。

      • port – 写入器数据库实例正在侦听的端口。PostgreSQL 的默认值为 5432。

      • dbname – 数据库的名称。

      CREATE SUBSCRIPTION testsub CONNECTION 'host=publisher-cluster-writer-endpoint port=5432 dbname=db-name user=user password=password' PUBLICATION testpub;
      注意

      作为安全最佳实践,请指定除此处所示提示以外的密码。

      创建订阅后,将在发布者上创建逻辑复制槽。

    4. 要验证此示例中的初始数据是否在订阅者上复制,请在订阅者数据库中使用以下 SQL 语句。

      SELECT count(*) FROM LogicalReplicationTest;

在发布者上进行的任何其他更改都会被复制到订阅者。

逻辑复制会影响性能。我们建议您在复制任务完成后关闭逻辑复制。