Postgresql pg_standby需要永远执行故障转移

时间:2010-08-11 11:23:26

标签: postgresql high-availability log-shipping

我有一个正在运行的WAL运输设置,其中有一个热备用从属服务器应用WAL文件。

当我创建pg_standby触发器文件时,它会立即检测到这一点,但实际上准备好接受连接大约需要10-15分钟。大部分时间都花在等待.history文件上。

触发器文件为空,因此应该进行“智能”故障转移。我能做些什么来更快地进行故障转移吗?

日志输出:

WAL file not present yet. Checking for trigger file...
trigger file found: smart failover
LOG:  could not open file "pg_xlog/000000010000000000000089" (log file 0, segment 137): No such file or directory
LOG:  redo done at 0/88003428
LOG:  last completed transaction was at log time 2010-08-10 13:26:20.232799+00
Trigger file        : /psql_archive/role.master
Waiting for WAL file    : 000000010000000000000088
WAL file path       : /psql_archive/000000010000000000000088
Restoring to        : pg_xlog/RECOVERYXLOG
Sleep interval      : 60 seconds
Max wait interval   : 0 forever
Command for restore : cp "/psql_archive/000000010000000000000088" "pg_xlog/RECOVERYXLOG"
Keep archive history    : 000000000000000000000000 and later
trigger file found: smart failover
running restore     : OK

LOG:  restored log file "000000010000000000000088" from archive
Trigger file        : /psql_archive/role.master
Waiting for WAL file    : 00000002.history
WAL file path       : /psql_archive/00000002.history
Restoring to        : pg_xlog/RECOVERYHISTORY
Sleep interval      : 60 seconds
Max wait interval   : 0 forever
Command for restore : cp "/psql_archive/00000002.history" "pg_xlog/RECOVERYHISTORY"
Keep archive history    : 000000000000000000000000 and later
running restore     :cp: cannot stat `/psql_archive/00000002.history': No such file or directory
cp: cannot stat `/psql_archive/00000002.history': No such file or directory
cp: cannot stat `/psql_archive/00000002.history': No such file or directory
cp: cannot stat `/psql_archive/00000002.history': No such file or directory
not restored
history file not found
LOG:  selected new timeline ID: 2
Trigger file        : /psql_archive/role.master
Waiting for WAL file    : 00000001.history
WAL file path       : /psql_archive/00000001.history
Restoring to        : pg_xlog/RECOVERYHISTORY
Sleep interval      : 60 seconds
Max wait interval   : 0 forever
Command for restore : cp "/psql_archive/00000001.history" "pg_xlog/RECOVERYHISTORY"
Keep archive history    : 000000000000000000000000 and later
running restore     :cp: cannot stat `/psql_archive/00000001.history': No such file or directory
cp: cannot stat `/psql_archive/00000001.history': No such file or directory
cp: cannot stat `/psql_archive/00000001.history': No such file or directory
cp: cannot stat `/psql_archive/00000001.history': No such file or directory
not restored
history file not found
LOG:  archive recovery complete
LOG:  autovacuum launcher started
LOG:  database system is ready to accept connections

感谢。

丹尼斯

2 个答案:

答案 0 :(得分:1)

简而言之,如果您不使用快速故障转移,pg_standby将继续处理剩余的所有日志(应该如此)以最大限度地减少数据丢失。

为了让您的生活更轻松,我会看看PITRTools。

答案 1 :(得分:0)

根据文档:http://www.postgresql.org/docs/current/static/pgstandby.html

快速故障转移:在快速故障转移中,服务器立即启动。归档中尚未应用的任何WAL文件都将被忽略,并且这些文件中的所有事务都将丢失。要触发快速故障转移,请创建一个触发器文件并将快速写入其中。如果在定义的时间间隔内没有出现新的WAL文件,pg_standby也可以配置为自动执行快速故障转移。

或者查看“表F-23.ppg_standby选项”,描述了一个maxwaittime。

干杯