从Linode迁移到AWS

当我们拥有一个庞大的数据库时,迁移到另一台服务器并不容易。 我们要将我们的数据库在Linode移动到amazon RDS数据库,我尝试了pg_dumppg_restore ,它成功了,但是它消耗了很多时间。

我的问题是:是否有一个像压缩的快速方式,或者我可以同步林德数据库与Amazon RDS中的数据库

所以我只需要更改CNAME来引用亚马逊,然后它将继续工作,因为我们已经同步数据库在一起?

任何build议将有所帮助!

如果您正在迁移到另一台真实的主机,而不是RDS,则可以使用stream式复制来执行您想要的操作:

  • 将数据库pg_basebackup到新主机
  • 使用指向当前主服务器的recovery.conf启动副本
  • 让复制赶上
  • 重新加载为复制副本启用同步复制主
  • …然后closures主机,重新启动副本作为主,然后去。

这不适用于RDS,因为RDS不允许您访问底层服务器。 您不能使用pg_basebackup或控制您自己的stream式复制。 所以如果你使用的是RDS,你唯一真正的select是转储和重新加载。

理论上,Amazon可以允许用户设置不在RDS中的主设备的RDS副本,然后将其提升为主设备。 这将是一个非常好的主意,因为它可以让人们更容易地将DB迁移到RDS中。 但是在编写时没有这种function,而且这样做可能会很复杂,因为只有当原始数据库使用兼容的选项,相同的主版本和相同的CPU架构作为副本服务器。 例如,您不能在x86和x64之间进行复制。 它也会阻止亚马逊自由修改他们的PostgreSQL来满足他们的需求。

这也是相反的。 您无法使用stream式复制 RDS进行迁移。 所以如果你在RDS上有一个大的,繁忙的数据库,你将很难再把它拿回来,而没有大量的宕机时间。

坦率地说,如果你已经在运行你自己的数据库,我没有看到RDS的吸引力。 这是昂贵的,并消除了你对数据的大部分控制权。 (请注意,我在PostgreSQL服务空间中的另一家公司工作,所以我的意见需要考虑到这一点)。

可以使用Londiste,Bucardo或Slony-I等第三方复制解决scheme将您的数据库复制到RDS。 我还没有尝试使用RDS中的任何工具,并且怀疑它们将不能工作,因为需要安装扩展,运行ticker守护进程等等。您可以使用EC2节点来完成这项工作,但是它可能会复杂和棘手得到正确的。