当我们拥有一个庞大的数据库时,迁移到另一台服务器并不容易。 我们要将我们的数据库在Linode移动到amazon RDS数据库,我尝试了pg_dump和pg_restore ,它成功了,但是它消耗了很多时间。
我的问题是:是否有一个像压缩的快速方式,或者我可以同步林德数据库与Amazon RDS中的数据库
所以我只需要更改CNAME来引用亚马逊,然后它将继续工作,因为我们已经同步数据库在一起?
任何build议将有所帮助!
如果您正在迁移到另一台真实的主机,而不是RDS,则可以使用stream式复制来执行您想要的操作:
pg_basebackup到新主机 recovery.conf启动副本 这不适用于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节点来完成这项工作,但是它可能会复杂和棘手得到正确的。