配置热流复制时postgresql 9.0归档出错

时间:2011-01-23 19:42:28

标签: postgresql streaming scalability database-replication archiving

我正在尝试在postgresql 9.0上运行流式复制。我按照链接中提到的步骤进行操作:http://brandonkonkle.com/blog/2010/oct/20/postgres-9-streaming-replication-and-django-balanc/

当我尝试在postgresql上执行归档命令时,我收到警告,要求我无休止地等待。我按以下顺序执行命令:

SELECT pg_start_backup('base_backup');

cd /var/lib/postgresql/9.0/
sudo tar -cjf ~/postgres-data.tar.bz2 main

SELECT pg_stop_backup();

为此,我得到以下输出:

NOTICE:  pg_stop_backup cleanup done, waiting for required WAL segments to be archived
WARNING:  pg_stop_backup still waiting for all required WAL segments to be archived (60 seconds elapsed)
HINT:  Check that your archive_command is executing properly.  pg_stop_backup can be cancelled safely, but the database backup will not be usable without all the WAL segments.
WARNING:  pg_stop_backup still waiting for all required WAL segments to be archived (120 seconds elapsed)
HINT:  Check that your archive_command is executing properly.  pg_stop_backup can be cancelled safely, but the database backup will not be usable without all the WAL segments.

这会继续进行,警告永远不会结束。如果有人遇到这个问题,请告诉我。

4 个答案:

答案 0 :(得分:1)

您已根据指定的链接设置了archive_command?它实际上是否正确地将xlog文件复制到安全位置?来自服务器的输出表明它不是,并且积压正在pg_xlog

中构建

我似乎记得您实际上并不需要在服务器上启用存档以将其用作副本中的主服务器。您执行需要将wal_level设置为hot_standby。有了这个设置,您的副本就可以连接到主服务器以独立于传统的xlog存档过程流式传输xlog记录。因此,请尝试设置archive_mode=off

编辑:更详细地阅读链接,您需要设置archive_mode来创建基本备份,这是有道理的。因此,要么修复存档命令,以便正确执行基本备份,要么在服务器停止时进行基本备份。

答案 1 :(得分:1)

如果您只想在第9页中使用新SR,请不要使用归档。起初我也遇到了问题。我写了一个没有归档的准系统设置教程,它将一个主人复制到一个奴隶:http://eggie5.com/15-setting-up-pg9-streaming-replication

答案 2 :(得分:1)

请您查看WAL存档文件所在文件夹的权限。这可能是拥有数据库的用户对该文件夹没有写入权限的问题,这就是为什么它无法在该文件夹中写入WAL文件的原因。请使用chmod并更改该文件夹的权限。这可能会解决问题。

问候。

答案 3 :(得分:0)

还要检查您是否没有archive_command试图复制的wal文件,这阻止了它写入wal文件。