首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在postgresql.conf中正确地使用%p和%f使写前日志?

如何在postgresql.conf中正确地使用%p和%f使写前日志?
EN

Database Administration用户
提问于 2020-02-16 22:13:25
回答 1查看 310关注 0票数 0

我试图修改postgresql.conf (PostgreSQL10.0下的Ubuntu18.04VPS),以设置写在前面的日志(WAL)。

AIUI,这些命令应该是:

代码语言:javascript
运行
复制
wal_level = replica             # minimal, replica, or logical
archive_mode = on               # enables archiving; off, on, or always
                                # (change requires restart)
archive_command = 'cp %p /var/lib/postgresql/10/main/pg_wal/%f'          
archive_timeout = 600           # force a logfile segment switch after this
                                # number of seconds; 0 disables

AIUI,%p引用数据库文件(要存档),%f引用包含所述数据库文件副本的文件名。

在本例中:我是说每5分钟将数据库文件复制到/pg_wal目录。

但是,这显然是不正确的,因为错误日志文件显示:

代码语言:javascript
运行
复制
cp: 'pg_wal/000000010000000000000002' and '/var/lib/postgresql/10/main/pg_wal/000000010000000000000002' are the same file
2020-02-16 21:01:05.857 UTC [20707] LOG:  archive command failed with exit code 1
2020-02-16 21:01:05.857 UTC [20707] DETAIL:  The failed archive command was: cp pg_wal/000000010000000000000002 /var/lib/postgresql/10/main/pg_wal/000000010000000000000002

所以我不确定%p和/或%f应该如何使用。如果有人能给我介绍一下语法,我将非常感激。

EN

回答 1

Database Administration用户

发布于 2020-02-17 07:41:40

您需要将WAL段复制到其他地方,而不是复制到它原来的位置。

这个上下文中的“其他地方”意味着不同物理机器上的不同存储。因此,如果目标是NFS挂载或类似的,那么cp只是一种很好的归档方法。否则,scp会更好。

您必须尽可能确保原始数据库遇到的任何问题都不会影响WAL档案。

测试cp是否会覆盖任何内容也是一个好主意,就像文档中的示例一样。否则,如果两个集群由于错误地将文件归档到同一个目录,则可能会导致数据丢失。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/259811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档