Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL 9.6 wals管理_Postgresql_Wal - Fatal编程技术网

PostgreSQL 9.6 wals管理

PostgreSQL 9.6 wals管理,postgresql,wal,Postgresql,Wal,我试图了解我的wals在postgresql环境中的行为。 我的wal设置是: wal_keep_segments = 200 max_wal_size = 3GB min_wal_size = 80MB archive_command = 'cp %p /PostgreSQL-wal/9.6/pg_xlog/wal_archives/%f' archive_timeout = 10 #checkpoint_flush_after = 256kB #checkpoint_completion_

我试图了解我的wals在postgresql环境中的行为。 我的wal设置是:

wal_keep_segments = 200
max_wal_size = 3GB
min_wal_size = 80MB
archive_command = 'cp %p /PostgreSQL-wal/9.6/pg_xlog/wal_archives/%f' 
archive_timeout = 10
#checkpoint_flush_after = 256kB
#checkpoint_completion_target = 0.5
我的wals目录是/PostgreSQL-wal/9.6/pg_-xlog/,我的归档目录是PostgreSQL-wal/9.6/pg_-xlog/wal_-archives。 昨晚我的wals目录存储已满(存档目录也因为它们位于同一个fs上…)

我的wal目录中现在有211个wal:

ls -l /PostgreSQL-wal/9.6/pg_xlog/ | wc -l
212
晚上唯一运行的东西就是从监控代理中选择的。我猜创建wal是因为存档超时时间很低,而删除wal是因为wal保持段很高。
今天早上,我将wal_keep_段设置为100,并将归档超时设置为6分钟。现在,在设置这些设置并启动集群wals开关后,工作正常,我没有看到创建了很多WAL。但是,旧的WAL不应该自动删除吗?我可以安全地删除档案吗?

max\u wal\u size
不是硬限制

当超过限制时,PostgreSQL将在下一个检查点删除而不是回收旧的WAL段。因此,
pg_xlog
仍然可以增长到下一个检查点

3 GB的设置对应于192个WAL段,低于
WAL\u keep\u段的设置。因此,在有3.125 GB的WAL段之前,PostgreSQL甚至不会开始回收或删除WAL段

您应该降低这些设置或增加WAL存档的磁盘空间


您可以等待数据库活动导致切换到新WAL段,也可以调用
pg\u switch\u WAL()
函数手动执行此操作。然后等待检查点或手动运行检查点。如果墙段的数量不是一个硬限制,那么您将看到墙段的减少。

max\u WAL\u size

当超过限制时,PostgreSQL将在下一个检查点删除而不是回收旧的WAL段。因此,
pg_xlog
仍然可以增长到下一个检查点

3 GB的设置对应于192个WAL段,低于
WAL\u keep\u段的设置。因此,在有3.125 GB的WAL段之前,PostgreSQL甚至不会开始回收或删除WAL段

您应该降低这些设置或增加WAL存档的磁盘空间


您可以等待数据库活动导致切换到新WAL段,也可以调用
pg\u switch\u WAL()
函数手动执行此操作。然后等待检查点或手动运行检查点。然后,如果墙段的数量减少,您将看到减少。

我将墙段设置为100。现在我有212个WAL,也就是3.360G。那么,它不应该开始删除一些WAL吗?关于档案,如果我现在不打算恢复数据库,删除它们是否安全?您不应该删除
pg_xlog
中的文件,它可能会损坏您的数据库。我已经添加了如何减小
pg\u xlog
大小的说明。您不明白我的意思。我说的是归档文件——使用archive_命令创建的文件。您始终可以删除WAL归档文件,但如果缺少一个所需的WAL归档文件,则无法恢复数据库。我会在删除WAL档案之前备份数据库。注意有用的实用程序。我将wal\u keep\u段设置为100。现在我有212个WAL,也就是3.360G。那么,它不应该开始删除一些WAL吗?关于档案,如果我现在不打算恢复数据库,删除它们是否安全?您不应该删除
pg_xlog
中的文件,它可能会损坏您的数据库。我已经添加了如何减小
pg\u xlog
大小的说明。您不明白我的意思。我说的是归档文件——使用archive_命令创建的文件。您始终可以删除WAL归档文件,但如果缺少一个所需的WAL归档文件,则无法恢复数据库。我会在删除WAL档案之前备份数据库。请注意有用的实用程序。