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 判断字段是不是为空 空给默认值 否则取该字段是啥函数来着?