我最近有几个实例被迫不正常地关闭我的 PostgreSQL 13.10 数据库,然后需要几个小时才能恢复。
在这两种情况下,strace 都显示该进程正在执行的操作是stat
-ing(也许lstat
,我忘记了),然后unlink
从base/pgsql_tmp
. 这花了几个小时,因为那里有数千万个文件(这本身很不寻常,但可能只是导致不正常关机的问题的症状)。
我的问题是:它只是盲目地删除所有临时文件,还是在恢复过程中使用其中的一些临时文件?如果只是盲目地删除它们,我想我可以通过更快地删除它们来缩短恢复时间(例如,将整个目录移到一边,为服务器提供一个新目录,然后在空闲时将其删除)。
当然,弄乱数据目录的内部总是很麻烦,但我也有定期的磁盘快照,所以即使在最坏的情况下也只有一天左右的数据丢失。考虑到这一点,将停机时间从几小时缩短到几分钟似乎值得冒一点风险。