如何修复在 Postgresql 中尝试实现复制时导致“不完整的启动包”日志消息的问题?

如何修复在 Postgresql 中尝试实现复制时导致“不完整的启动包”日志消息的问题?

我有两台运行 Ubuntu 13.04 和 PostgreSQL 9.2 的云服务器。

我主要使用这篇博文来帮助我进行设置。但是,为了将初始数据库转储到从属服务器,我使用pg_start_backup/pg_stop_backup这篇其他博客文章。我也阅读了文档和 postgres wiki。我遇到了几个我能解决的问题,但我无法克服这个可恶的“数据库正在启动”故障。

我不确定是否看到:

cp: cannot stat /var/lib/postgresql/9.2/archive/00000001000000000000003A':
No such file or directory

之后consistent recover state reached是正常的,或者是出现问题的第一个迹象。我所做的搜索the database is starting up告诉incomplete startup packet我,有东西正在向从属设备发送空的 TCP 数据包。唯一知道从属设备的只有主设备,所以我不确定它为什么发送空数据包……

有谁处理过这个问题并且知道可能出了什么问题吗?

从属服务器上的 postgres 日志如下所示:

2013-08-26 13:01:38 CDT LOG:  entering standby mode
2013-08-26 13:01:38 CDT LOG:  restored log file "000000010000000000000039" from archive
2013-08-26 13:01:38 CDT LOG:  incomplete startup packet
2013-08-26 13:01:39 CDT LOG:  redo starts at 0/39000020
2013-08-26 13:01:39 CDT LOG:  consistent recovery state reached at 0/390000E0
cp: cannot stat '/var/lib/postgresql/9.2/archive/00000001000000000000003A': No such file or directory
2013-08-26 13:01:39 CDT LOG:  streaming replication successfully connected to primary
2013-08-26 13:01:39 CDT FATAL:  the database system is starting up
2013-08-26 13:01:39 CDT FATAL:  the database system is starting up
2013-08-26 13:01:40 CDT FATAL:  the database system is starting up
2013-08-26 13:01:40 CDT FATAL:  the database system is starting up
2013-08-26 13:01:41 CDT FATAL:  the database system is starting up
2013-08-26 13:01:42 CDT FATAL:  the database system is starting up
2013-08-26 13:01:42 CDT FATAL:  the database system is starting up
2013-08-26 13:01:43 CDT FATAL:  the database system is starting up
2013-08-26 13:01:43 CDT FATAL:  the database system is starting up
2013-08-26 13:01:44 CDT FATAL:  the database system is starting up
2013-08-26 13:01:44 CDT FATAL:  the database system is starting up
2013-08-26 13:01:44 CDT LOG:  incomplete startup packet
2013-08-26 13:03:27 CDT FATAL:  the database system is starting up
2013-08-26 13:03:27 CDT FATAL:  the database system is starting up
2013-08-26 13:03:30 CDT FATAL:  the database system is starting up
2013-08-26 13:03:30 CDT FATAL:  the database system is starting up

谢谢!布拉德

答案1

您无法复制 之后的最后一个 WAL 存档pg_stop_backup。如果您要使用此方法,则需要设置 WAL 存档或手动复制 WAL。

在 9.2 及以上版本中,使用 进行一次性复制要容易得多pg_basebackup --xlog-method=stream。这将通过复制协议复制事务日志以及基础备份本身,并自动处理pg_start_backuppg_stop_backup

手册pg_basebackup

标题中提到的“不完整的启动包”错误可能不相关,并且是由于尝试从具有 的客户端与不支持 SSL 的服务器建立 SSL 连接而导致的sslmode=prefer

相关内容