使用 Amazon EC2 进行 postgres_fdw 或 BDR 复制

使用 Amazon EC2 进行 postgres_fdw 或 BDR 复制

我的任务是使用 Amazon RDS 上的 Postgres 进行两次概念验证,一次使用postgres_fdwBDR,另一次使用 BDR(双向复制扩展名)。经过网上多次搜索,似乎不可能在 RDS 上 执行replication或设置。postgres_fdw

然而,互联网上有人(我找不到参考资料)提到 EC2 是一种可能的方式Postgres 外部数据包装器甚至从 Postgres DB 构建复制,我们称之为Frankfurt,以连接到我们将称为的第二个 Postgres 实例Seoul

有人可以确认设置postgres_fdw并且BDR可以在 EC2 中设置吗?

谢谢。

答案1

EC2 提供了一个独立的 VM。只要 BDR 不需要对硬件的特权访问(它不需要),您就设置好了。

相比之下,RDS 提供的托管数据库服务提供了 Postgres 功能的子集。正如您所发现的,一旦您需要 RDS 不提供的功能,下一步通常是在 EC2 上运行您自己的数据库。请注意,现在您可以处理备份、复制、安排维护、将更新应用于底层操作系统、管理数据库运行的实例等等。

答案2

我们在 AWS RDS 中使用postgres_fdw。存在一些与性能相关的问题,但它可以正常工作。您只需要使用 PostgreSQL 9.3 或更高版本并检查它postgres_fdw是否在rds.extensions参数组中。

Frankfurt按照您的定义,我们有一个带有外部服务器的数据库Seoul。连接到时,您可以像访问本地表一样Frankfurt访问数据。Seoul

您需要在 DB 上运行类似这样的操作Frankfurt(当然要确保两个 DB 可以通过 VPC 相互访问,不需要向所有人开放它们):

    CREATE EXTENSION postgres_fdw;
    CREATE SERVER FOREIGN DATA WRAPPER postgres_fdw 
    OPTIONS (host 'seoul_host_address', port '5432', dbname 'seoul_db_name');
    -- maybe you need this (if you want to map users)
    CREATE USER MAPPING FOR public SERVER 
    seoul OPTIONS (user 'seoul-writer', password 'XXXXXXX');
    -- then just create foreign table
    CREATE FOREIGN TABLE table_name (
    id integer DEFAULT NOT NULL,
    name character varying(64)
    ) SERVER seoul OPTIONS (tablename 'seoul_table_name');

这不是复制的完美解决方案。如果您只需要只读副本 - 使用 AWS RDS 复制,就不会有问题。

希望这些信息能够有所帮助。

相关内容