postgresql – 如何强制将pg_xlog中的所有WAL文件合并回我的基本“数据”目录?

题:

有没有办法告诉Postgres(9.2)“将pg_xlog中的所有WAL文件合并回非WAL数据文件,然后删除所有成功合并的WAL文件?”

我希望能够“强迫”这项行动;即应忽略checkpoint_segments或归档设置.文件系统WAL缓冲区(pg_xlog)目录应该清空或几乎清空.如果pg_xlog目录消耗的部分或全部空间随后被数据目录使用,那就没问题了.我们的DBA已经要求文件(即数据目录,而不是sql)数据库备份而没有任何积压的WAL,但空间消耗不是问题.

在此操作期间具有接近零的WAL活动是一个很好的约束.在此过程中,我可以确保数据库服务器已关闭或无法连接(用户生成的事务负载为零).

本质上,我希望Postgres暂时忽略归档/检查点保留策略,并将所有WAL活动刷新到核心数据库文件,使pg_xlog处于与最近创建数据库相同的状态 – 只有很少的WAL文件.

我试过的:

我知道pg_basebackup实用程序执行类似这样的操作(它生成了几乎所有WALs合并的Postgres实例数据目录的副本),但我们尚未准备好在我们所有系统上使用它,因为我们仍在测试复制设置;我希望有一个更短期的解决方案.

我已经尝试发出CHECKPOINT命令,但它们只是回收一个WAL文件并用另一个替换它(也就是说,如果它们做任何事情;如果我在数据库空闲时发出它们,它们什么都不做). pg_switch_xlog()同样只强制切换到下一个日志段;它不会刷新所有排队/缓冲的段.

我也玩过pg_resetxlog实用程序.这种实用程序可以满足我的需求,但是它的所有使用文档似乎都表明它会破坏(而不是从事务日志中刷出并进入主数据文件)部分或全部WAL数据.那印象准确吗?如果没有,我可以在零WAL活动期间使用pg_resetxlog来强制将所有排队的WAL数据刷新到非WAL数据吗?如果答案是否定的,我该如何实现这一目标?

谢谢!

. . .有些东西告诉我你的DBA不是Postgres的家伙吗?

相关文章

项目需要,有个数据需要导入,拿到手一开始以为是mysql,结果...
本文小编为大家详细介绍“怎么查看PostgreSQL数据库中所有表...
错误现象问题原因这是在远程连接时pg_hba.conf文件没有配置正...
因本地资源有限,在公共测试环境搭建了PGsql环境,从数据库本...
wamp 环境 这个提示就是说你的版本低于10了。 先打印ph...
psycopg2.OperationalError: SSL SYSCALL error: EOF detect...