快速重启 postgresql

Joh*_*ino 5 postgresql postgresql-9.1

我正在阅读 postgresql 管理员手册。某些数据库服务器参数需要重新启动,并且数据库繁忙,您可能需要快速重新启动。有很多事情要做来加速重启:1) 在关闭检查点之前发出一个正常的检查点,2) 将所有脏的 shared_buffers 刷新到磁盘,3) 在关闭之前记录数据库缓存的内容,然后再次预热缓存重启后立即。因此,本书似乎建议:

psql -c "CHECKPOINT"
psql -c "select pg_cache_save('mycache')"
pg_ctl -D datadir -m immediate restart
psql -c "select pg_cache_warm('mycache')"
Run Code Online (Sandbox Code Playgroud)

它还展示了这种方法:

pg_ctl -D datadir restart -m fast
Run Code Online (Sandbox Code Playgroud)

在重新启动经常插入的繁忙数据库时,我应该使用哪一个?以上之一或有更好的方法吗?

Cra*_*ger 1

如果您的客户端能够很好地应对断开连接,并且不会丢失数据,您可能应该使用第一个过程:强制检查点,然后立即重新启动。这将使服务器恢复并比fast重新启动更快地运行,但代价是对当前活动客户端造成更大的干扰。

客户端应用程序下次运行 SQL 语句时将收到错误。编写良好的应用程序将丢弃数据库连接并重试,因此用户不会注意到/看到任何内容。

编写得不好的应用程序会向用户报告错误。

真正编写糟糕的应用程序将默默地丢失数据(如果它们吞没异常)或仅执行部分操作(如果未正确使用事务)。这些客户端在其他情况下也会出现问题,必须修复。