我正在寻找一种方法来复制 postgresql 数据库(运行服务器版本 9.1)。我希望镜像能够让一台服务器(从服务器)站在我们的防火墙之外。我一直在研究 slony 和流式复制——在这两种情况下,从服务器需要与主服务器通信,出于安全原因,我希望情况并非如此。理想情况下,我希望主人将更改发送给奴隶而不期待任何答复。有没有这样的系统?
(当然,我知道如果slave宕机了,或者其他什么原因收不到数据,master是不知道的,但是我们有其他的工具可以随时关注服务器的问题,这也是可以接受的)
我正在寻找一种方法来复制 postgresql 数据库(运行服务器版本 9.1)。我希望镜像能够让一台服务器(从服务器)站在我们的防火墙之外。我一直在研究 slony 和流式复制——在这两种情况下,从服务器需要与主服务器通信,出于安全原因,我希望情况并非如此。理想情况下,我希望主人将更改发送给奴隶而不期待任何答复。有没有这样的系统?
(当然,我知道如果slave宕机了,或者其他什么原因收不到数据,master是不知道的,但是我们有其他的工具可以随时关注服务器的问题,这也是可以接受的)
您可以使用日志传送备用功能来做到这一点,这实际上是连续归档的扩展。
您首先配置 PostgreSQL 以将所有*更改写入预写日志,方法是:
一旦日志文件已满(16 MB 的写入)或发生可配置的超时 (
archive_timeout
),PostgreSQL 开始写入下一个日志文件,并archive_command
使用刚刚完成写入的日志文件名调用您。你archive_command
将是一个脚本,它使用一些其他适当的技术将这个日志文件从主机上推送——也许你想将它上传到像 Amazon S3 这样的对象存储,或者你可能想使用 SCP 将它直接推送到从属服务器上,或者,也许您想完全做其他事情。您可以像设置主服务器一样设置从服务器,除了它的数据目录将包含一个
recovery.conf
sayingstandby_mode = on
。如果主复制日志直接进入从属pg_xlog
目录,你就完成了;如果没有,slave 将需要一个restore_command
脚本来充当反转archive_command
并从您放置的任何位置检索指定的存档日志。最后,复制基本备份(如连续归档文档中所述),启动 PostgreSQL,您的从服务器将跟随主服务器而无需任何直接通信。