从AWS RDS PostgreSQL实例获取WAL文件

前端之家收集整理的这篇文章主要介绍了从AWS RDS PostgreSQL实例获取WAL文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们在Amazon Web Services上有一个Postgres RDS实例.我们启用了自动备份,并且我们每天都会拍摄快照.我们希望生成一个我们可以自行管理的RDS实例的本地“最新”备份.对实例运行pg_dump是不够的,因为我们希望能够将数据库还原到任何时间点.自从进行备份以来,我们更愿意拥有RDS的本地备份和所有WAL文件.问题:

>是否可以访问RDS在其备份例程中自动生成的WAL文件和备份?这将是理想的.我想下载它们的本地副本.经过初步调查,我觉得这个问题的答案是’不’.听起来RDS在S3中存储其WAL文件和备份,但它使我们无法访问它们.我很想确认.
>有没有其他方法来访问RDS实例上发生的事务(WAL文件)?我想我们应该能够在EC2上创建一个Postgres数据库,并从我们的主’实时’RDS实例创建’Feed’事务到这个EC2实例.一旦我们的EC2实例更新,我们就可以从那里提取WAL文件.但令人头疼的是:/这种设置是否可行?从我们的RDS实例“提供”到EC2实例的魔力是什么,以便它始终是最新的?

谢谢!

更新: I’ve posted about this to the AWS forums – please go chime in and ask for it there.

在撰写本文时,Amazon RDS不支持RDS之外的物理复制.您可以使用rds_superuser登录用户授予REPLICATION权限,但是您无法在pg_hba.conf中为外部IP配置复制条目.

此外,在RDS中创建数据库参数组时,会显示一些关键参数但是已锁定,例如archive_command,它被锁定到/ etc / rds / dbbin / pgscripts / rds_wal_archive%p.用于Postgresql的AWS RDS似乎没有公开这些WAL以进行外部访问(例如,通过S3),因为如果您将WAL运输复制用于外部PITR,则需要这样做.

所以在这一点上,如果你想要沃尔玛运输,不要使用RDS.它是一个易于使用的罐装数据库,但易于使用通常意味着它也是有限的,这肯定是这里的情况.正如Joe Love在评论中指出的那样,它在RDS中提供WAL运输和PITR,但是您无法从RDS外部访问WAL.

因此,您需要使用RDS自己的备份工具 – 转储,快照和自己的基于WAL的PITR.

即使RDS允许您进行复制连接(用于pg_basebackup或流复制)并允许您访问存档的WAL,您也可能无法实际使用该WAL. RDS运行一个修补过的Postgresql,虽然没有人知道修补程度有多大,或者它是否显着改变了磁盘格式.它也运行在亚马逊选择的架构上,可能是x64 Linux,但不容易确定.由于Postgresql的磁盘格式和复制依赖于体系结构,因此您只能复制到与Amazon RDS使用的体系结构相同的主机,并且只有在Postgresql构建与它们兼容的情况下才能复制.

除此之外,这意味着您没有任何简单的方法可以远离RDS.您必须停止对数据库的所有写入足够长的时间来获取pg_dump,还原它,并使新数据库运行.复制和故障转移(使用rsync等)的常用技巧将无法正常工作,因为您无法直接访问数据库主机.

即使RDS运行未修补的Postgresql亚马逊可能也不希望允许您使用pg_basebackup将WAL流式传输到RDS或导入到RDS中,以确保安全性. Postgresql将数据目录视为可信内容,如果您精心设计了任何能够挂钩内部功能或执行其他任何其他操作的聪明的“LANGUAGE c”函数,您可能能够利用服务器获得比您应该拥有的更多的访问权限.所以亚马逊不会很快允许入境WAL.

它们可以支持出站WAL发送,但上述格式兼容性,更改自由等问题仍然适用.

相反,你应该使用像Londiste或Bucardo这样的工具.

猜你在找的Postgre SQL相关文章