postgresql 中的重启点是啥?

Posted

技术标签:

【中文标题】postgresql 中的重启点是啥?【英文标题】:What is a restartpoint in postgresql?postgresql 中的重启点是什么? 【发布时间】:2021-02-27 08:52:37 【问题描述】:

在 PostgreSQL 版本 13 的 postgresql.conf 文件中,archive_cleanup_command 注释以下列方式解释命令:

#archive_cleanup_command = ''         # command to execute at every restartpoint.

文档here 和here 没有提到“重启点”。这提出了以下问题:

    什么是重启点? 例如:restartpoint 是检查点的同一个词吗?两者的意思是一样的吗? 何时创建重启点? 例如:如果重启点只是一个检查点,那么检查点将每 5 分钟创建一次,或者无论 checkpoint_timeout 的设置在 postgresql.conf 文件中如何设置。 归档清理命令何时运行? 例如:每次达到 archive_timeout(在 postgresql.conf 文件中设置)时,都会运行归档清理命令。如果存档超时设置为 1 小时,则 archive_cleanup_command 每 1 小时运行一次。

【问题讨论】:

【参考方案1】:

重启点只是恢复期间的一个检查点,它的触发方式与检查点相同:通过超时或自上次重启点以来处理的 WAL 量。 Note also that

重启点不能比主节点中的检查点更频繁地执行,因为重启点只能在检查点记录处执行。

restartpoints 的原因是“restartable recovery”:如果你的恢复过程被中断,下一次重启不会从备份的开头开始恢复,而是从最近的重启点开始。

archive_cleanup_command 在重启点期间为所有完全恢复的 WAL 段运行。它的主要用例是日志传送备用服务器:使用archive_cleanup_command,它们可以删除它们不再需要的所有传送的 WAL 段,这样包含它们的目录就不会超出范围。

【讨论】:

档案清理命令多久运行一次? postgresql 怎么知道什么时候运行呢? @a_horse_with_no_name 为我提供了关于归档清理命令运行频率的答案......它由检查点超时触发或在 wal 大小即将超过 max_wal_size 时运行。 我添加了更多关于如何触发重启点的信息。 对于未来有同样问题的其他人:dba.stackexchange.com/questions/279742/…

以上是关于postgresql 中的重启点是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Harbor断电重启postgres报错 could not locate a valid checkpoint record

Harbor断电重启postgres报错 could not locate a valid checkpoint record

postgresql 判断字段是不是为空 空给默认值 否则取该字段是啥函数来着?

PostgreSQL最大的优势是啥?

PostgreSQL 11 和 12 的 PL/Java 替代方案是啥?

postgres 错误:Postgresql 11.6 中的列不存在错误