我在三台服务器上使用pgpool+ PostgreSQL 8.4 :主服务器+ standby1 + standby2。复制模式是"on“负载平衡模式是"on”(在主服务器和standby1之间)
我按照官方教程使用PITR:http://pgpool.projects.postgresql.org/pgpool-II/doc/pgpool-en.html#online-recovery配置在线恢复
脚本“复制基备份”中有一个tar命令:
tar -C /data -zcf pgsql.tar.gz pgsql
所以当脚本运行时,我所有的PG集群目录都被复制:
ls -1 /srv/pg/data/
PG_VERSION
archive # directory with postgres archive files
backup_label.old
base
global
pg_clog
pg_hba.conf
pg_ident.conf
pg_log
pg_multixact
pg_stat_tmp
pg_subtrans
pg_tblspc
pg_twophase
pg_xlog
pgpool_recovery
pgpool_recovery_pitr
pgpool_remote_start
postgresql.conf
postmaster.opts
postmaster.pid
recovery.conf
recovery.done
如何安全地从主节点和备用节点中删除旧存档日志?我的节点上每天有大约30 of的档案。
发布于 2012-09-15 06:46:01
关于PITR恢复的文档实际上是不完整的,而且在点上完全是误导性的。它建议将所有存档文件保存在主服务器上,而不是有一个使用scp复制到每个备用文件的recovery_command。那是毫无价值的。每个待机都需要有自己的存档副本,否则就没有真正的冗余。如果主程序在这种情况下失败了,您就没有任何有用的东西了。主机上的archive_command应该将文件分发给备用系统。如果这样做,根本不需要将存档的副本保存在主目录上。
对于清理每个备用服务器上的档案,也不应该遵循对recovery_command的糟糕建议。相反,应该将pg_备用作为恢复命令调用。有关详细信息,请参阅有关热待机服务器的真实文档。如果您使用的是pg_standby,那么它应该传递的内容之一是"%r“参数,它是删除旧归档日志所需的信息。以这种方式使用pg_standby,它将为您清理档案。
这里的主要部分是编写一个archive_command脚本,正确地将数据复制到两个备用服务器。我没有一个好的例子要指出,但您需要做的是检查错误后,每个副本,并提供一个成功的返回代码,只有当两个副本发生。
发布于 2012-09-09 08:35:01
是的,此时您可以安全地删除存档中的日志。不过要小心点。您不希望删除尚未存档的日志!
https://dba.stackexchange.com/questions/3350
复制相似问题