首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置AWS RDS for PostgreSQL的跨区域副本

如何设置AWS RDS for PostgreSQL的跨区域副本
EN

Stack Overflow用户
提问于 2015-09-09 18:35:58
回答 2查看 3.5K关注 0票数 7

我有一个在亚洲的PostgreSQL设置的RDS,并希望有一个在美国的阅读副本。

但不幸的是,从官方网站上发现,只有用于MySQL的RDS具有跨区域副本,而没有用于PostgreSQL的RDS。

我看到this page为PostgreSQL引入了其他方法来将数据迁移到RDS和从RDS中迁移出来。

如果不是自己在美国买EC2安装PostgreSQL,有没有办法把亚洲RDS的数据同步到美国的RDS?

EN

回答 2

Stack Overflow用户

发布于 2015-09-09 20:30:03

这完全取决于复制的目的。是为了提供本地数据源并避免网络延迟吗?

假设您的目标是跨区域复制,您有几个选择。

自定义EC2实例

您可以创建自己的EC2实例并安装PostgreSQL,以便自定义复制行为。

我在我的博客http://thedulinreport.com/2015/01/31/configuring-master-slave-replication-with-postgresql/上记录了如何使用PostgreSQL配置主从复制

当然,您失去了AWS RDS的一些好处,即自动多可用区冗余等,现在突然之间,您必须负责维护您的配置。这远远不是完美的。

两阶段提交

另一种选择是将复制构建到应用程序中。一种方法是使用可以做到这一点的数据库驱动程序,或者使用您自己的两阶段提交。如果您使用的是Java,这里描述了一些想法:JDBC - Connect Multiple Databases

使用SQS解除数据库写操作的耦合

好的,所以这是我个人更喜欢的。对于所有的数据库写操作,都应该使用SQS,并让后台写入器进程从队列中取出消息。

你需要有一个作家在亚洲和一个作家在美国地区。要跨区域在SQS上发布消息,您可以利用将消息发布到多个队列的SNS配置:http://docs.aws.amazon.com/sns/latest/dg/SendMessageToSQS.html

当然,与两阶段提交不同的是,这种方法会受到bug的影响,而且您的美国数据库也有可能不同步。您将需要实现一个协调过程--例如,一个简单的过程可以是每周从亚洲和pg_restore到美国的pg_dump,以便重新同步它。另一种方法可以做类似Cassandra读取-修复的事情:每10次从美国数据库读取,启动一个后台进程,对亚洲数据库运行相同的查询,如果它们返回不同的结果,您可以启动一个进程来重放一些消息。

实际上,这种方法很常见,我在华尔街也看到过这种方法。

因此,选择您的战斗:要么创建自己的EC2实例并获得配置和开发操作的所有权(讨厌),要么实现保证一致性的两阶段提交,要么放松一致性要求并使用SQS和异步编写器。

票数 6
EN

Stack Overflow用户

发布于 2016-09-16 02:09:01

这是now directly supported by RDS

使用CLI创建跨区域复制副本的示例:

代码语言:javascript
复制
aws rds create-db-instance-read-replica \
    --db-instance-identifier DBInstanceIdentifier \
    --region us-west-2 \
    --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:my-postgres-instance
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32477255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档