流式复制日志让我很困惑

Nie*_*ian 3 postgresql replication

我有一个流式复制热备用设置,它似乎运行良好。我可以登录,执行选择,结果似乎与主人是最新的。但是在备用的日志中,我看到了很多这样的:

cp: cannot stat `/mnt/wal_drive/wals/0000000100004BA800000070': No such file or directory
2014-02-28 16:00:37 CET LOG:  record with zero length at 4BA8/70DD79D0
2014-02-28 16:00:37 CET LOG:  started streaming WAL from primary at 4BA8/70000000 on timeline 1
2014-02-28 16:02:59 CET FATAL:  could not receive data from WAL stream: SSL error: sslv3 alert unexpected message
Run Code Online (Sandbox Code Playgroud)

这些分别是什么意思,我应该担心它们中的任何一个吗?

附注。在 master 中,我看到了其中一些,我希望它们与 SSL 相关:

2014-02-28 16:10:33 CET LOG:  SSL renegotiation failure
2014-02-28 16:10:33 CET LOG:  SSL error: unexpected record
Run Code Online (Sandbox Code Playgroud)

我在 ubuntu 12.04 上运行 postgresql 9.3

编辑

关于 WAL 日志,我有以下设置:

在我的主人和我的奴隶上,我都fstab使用cifs命令安装了网络存储。该目录由 postgres 用户拥有。

在我的主人上,我在 postgresql.conf 中有以下设置:

archive_mode = on
archive_command = 'rsync -a %p /mnt/wal_drive/wals/%f </dev/null'
Run Code Online (Sandbox Code Playgroud)

在我拥有的从站hot_standby = on和以下 recovery.conf 中:

standby_mode = 'on'
primary_conninfo = 'host=localhost port=5433 user=replicator password=some_pass'
trigger_file = '/tmp/pgsql.trigger'
restore_command = 'cp -f /mnt/wal_drive/wals/%f %p </dev/null'
archive_cleanup_command = '/usr/lib/postgresql/9.3/bin/pg_archivecleanup /mnt/wal_drive/wals/ %r'
Run Code Online (Sandbox Code Playgroud)

我有一个ssh-tunnel将slave的5433端口转发到master上的5432端口,所以在localhost:5433上连接实际上是master db。

Cra*_*ger 6

您似乎有两个单独的问题,即 OpenSSL 重新协商的问题。

首先 -不,我错了,请参阅 Daniel 的回答

其次,您被重新谈判的 OpenSSL 问题所困扰。搜索错误消息会告诉您这一点。正如该错误报告中所述:

解决方法是'ssl_renegotiation_limit=0'在 postgresql.conf 中设置

它要求 PostgreSQL 告诉 OpenSSL 停止尝试重新协商,因为该版本的 OpenSSL 已经破坏了重新协商支持。


Dan*_*ité 5

这条信息:

cp:无法统计`/mnt/wal_drive/wals/0000000100004BA800000070':没有那个文件或目录

只是输出或restore_command请求尚不存在的文件时的输出。这是正常的,并记录在存档恢复设置中

restore_command(字符串)
...

该命令只有在成功时才返回零退出状态很重要。该命令要求提供存档中不存在的文件名;当被问到时,它必须返回非零值。

为避免出现此消息,您可以结合cp使用test -e /path/to/file && ...以静默检查文件中的文件存在restore_command或提出更详细的脚本。

至于其他消息:

LOG:在 4BA8/70DD79D0 处零长度记录

在服务器启动时它是无害的。这可能意味着您从实时主服务器复制了 pg_xlog,因此那里的最新 WAL 文件尚未完成。如果 WAL 处于无法修复的状态,则服务器根本不会启动。

唯一真正的问题是 SSL 重新协商问题,但它已经得到了回答