更新:我已经在AWS论坛上发布了有关此内容的信息,请进入并在那儿索要。
在撰写本文时,Amazon RDS不支持RDS之外的物理复制。您可以GRANT
用户REPLICATION
使用正确的rds_superuser
登录,但你不能配置replication
在外面的IP条目pg_hba.conf
。
此外,当您在RDS中创建数据库参数组时,某些关键参数会显示但已锁定,例如archive_command
锁定为/etc/rds/dbbin/pgscripts/rds_wal_archive %p
。PostgreSQL的AWS RDS似乎没有公开这些WAL供外部访问(例如,通过S3),如果您要对外部PITR使用WAL装运复制则需要这样做。
因此,在这一点上,如果您想要沃尔玛运输,请不要使用RDS。它是一个罐装的易于使用的数据库,但是易于使用通常意味着它也很有限,在这里肯定是这种情况。正如Joe Love在评论中指出的那样,它在RDS内提供WAL运送和PITR ,但您无法从RDS 外部访问WAL 。
因此,您需要使用RDS自己的备份工具-转储,快照和它自己的基于WAL的PITR。
即使RDS确实允许您建立复制连接(用于pg_basebackup
流复制或流复制)并允许您访问存档的WAL,您也可能无法实际使用该WAL。RDS运行已修补的PostgreSQL,尽管没人知道修补的程度或是否会显着改变磁盘格式。它也可以在Amazon选择的架构上运行,该架构可能是x64 Linux,但不容易确定。由于PostgreSQL的磁盘格式和复制取决于体系结构,因此仅当PostgreSQL构建与其主机兼容时,您才能复制到具有与Amazon RDS使用的体系结构相同的主机。
除其他外,这意味着您没有任何简单的方法可以从RDS迁移。您必须停止对数据库的所有写操作足够长的时间,以进行pg_dump
,恢复它并运行新的DB。复制和故障转移,rsync等通常的技巧将不起作用,因为您没有直接访问数据库主机的权限。
即使RDS运行了未打补丁的PostgreSQL,pg_basebackup
出于安全原因,Amazon可能也不想允许您将WAL流式传输到RDS或使用RAL导入RDS 。PostgreSQL将数据目录视为受信任的内容,如果您精心制作了一些巧妙的“ LANGUAGE c”函数来挂钩内部功能或进行了其他棘手的工作,则可能能够利用服务器获得比您应有的更大的访问权限。因此,亚马逊不会在短期内允许入站WAL。
它们可以支持出站WAL发送,但是上述格式兼容性,更改自由等问题仍然适用。
相反,您应该使用Londiste或Bucardo之类的工具。