2

我有一个工作的 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

谢谢。

-丹尼斯

4

2 回答 2

1

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

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

于 2010-08-11T16:53:52.290 回答
0

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

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

或者查看“表 F-23.pg_standby 选项”,其中描述了 maxwaittime。

干杯

于 2010-08-11T14:46:13.373 回答