我负责在Amazon RDS上使用Postgres做两个概念validation,一个使用postgres_fdw ,另一个使用BDR( 双向复制扩展)。 在互联网上进行了大量search之后,似乎无法在RDS上执行replication或设置postgres_fdw 。
然而,互联网上的人(我找不到参考)提到了EC2作为创buildPostgres Foreign DataWrapper的一种可能方式,甚至是从Postgres DBbuild立复制,我们称之为Frankfurt ,连接到我们将要打电话给Seoul的第二个Postgres实例。
任何人都可以确认设置postgres_fdw和BDR可以在EC2中设置?
谢谢。
EC2提供了一个独立的虚拟机。 只要BDR不要求特权访问硬件(它不),就设置好了。
相比之下,RDS提供了托pipe数据库服务,提供了Postgresfunction的一个子集。 正如你所发现的,一旦你想要RDS没有提供的东西,下一步通常是在EC2之上运行自己的数据库。 预先警告您现在可以处理备份,复制,计划维护,将更新应用于底层操作系统,pipe理数据库运行的实例等等。
我们在AWS RDS中使用postgres_fdw 。 有一些与性能有关的问题,但它的工作。 您只需要使用PostgreSQL 9.3或更高版本,并检查postgres_fdw是否在参数组的rds.extensions中。
根据你的定义,我们有一个DB Frankfurt ,有一个外国服务器Seoul 。 在连接到Frankfurt同时,您可以像访问本地表一样访问Seoul数据。
你需要在Frankfurt数据库上运行类似的东西(当然要确保两个数据库都可以通过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');
这不是复制的完美解决scheme。 如果您只需要只读副本 – 使用AWS RDS复制,您将没有任何问题。
希望这个信息将是有益的。