如何安排PostgreSQL复制?

Edg*_*ere 5 postgresql replication scripting scheduled-tasks amazon-rds

我正在阅读 postgresql 复制解决方案,但是,即使我刚刚开始了解它是如何工作的,另一个疑问也出现了。我将使用 postgres 内部复制解决方案,但据我所知,每个事件都将在实现时复制;例如,如果我将一些数据插入主站,它会自动复制到从站......我对吗?

嗯,是这样吗,我正在寻找将此复制安排为被动备份的方法,但问题是,例如,我需要在每个星期一晚上将数据库与当天插入的所有数据一起复制到Amazon EC2 虚拟服务器中的从数据库。我正在考虑使用 cron 作为第一种方法,但阅读 postgres 文档我意识到实际上只配置必要的文件,postgres 为你做...

那么,我怎样才能在需要的时刻安排复制呢?

PD.-时间表可能会有所不同,因此它需要完全通用,而且...我正在使用 Ubuntu 12.04 和 PostgreSQL 9.1,就像在主从中一样。谢谢

Cra*_*ger 2

您可以pg_basebackup通过复制协议获取 PostgreSQL 数据库的副本。它复制整个数据库,但它不是增量的。--xlog-method=stream除非您设置了共享 WAL 存档,否则您将需要使用该参数。

流式复制不太适合您描述的目的。您可以将其设置为具有复制延迟,但它会更多分钟或几小时而不是几天,因为您必须在主服务器或存档中保留的 WAL 量才能获得数天的复制延迟。它也是固定的,不可安排的。

您可以通过大量 WAL 归档以及为每个备份自定义创建的 recovery.conf 来实现您所描述的目的,但它充其量只是繁琐。

您需要意识到的是,到(例如)星期五,主服务器不再有星期一状态的任何记录。它无法将上周五的快照更新到本周五,因为它不再知道它在上周一或上周五等中间日期处于什么状态。它不知道旧副本处于什么状态,也不知道如何将其从那里转移到现在的位置。

您可以通过归档 WAL 段来告诉它记住那么多状态,但是您需要大量的磁盘空间,而且如果您的数据库很忙,从 WAL 获取备份的效率非常低。

我建议只使用pg_basebackup和/或pg_dump按计划进行。