章 23. 日常数据库维护工作

目录
23.1. 日常清理
23.1.1. 清理基础
23.1.2. 恢复磁盘空间
23.1.3. 更新规划器统计
23.1.4. 更新可见视图
23.1.5. 避免事务ID重叠造成的问题
23.1.6. Autovacuum守护进程
23.2. 经常重建索引
23.3. 日志文件维护

像许多其它数据库一样,PostgreSQL也需要周期性的运行某些任务以 实现性能优化。这里讨论的任务是必须经常重复的事情, 可以很容易的使用标准的工具(比如cron脚本)或Windows 的任务计划来完成。不过, 设置合适的脚本以及检查它们是否成功执行则是数据库管理员的责任。

一件很明显的维护工作就是经常性地创建数据的备份拷贝。如果没有最近的备份, 那么你就没有从灾难中恢复的机会(磁盘坏、失火、误删表)。可以在PostgreSQL 里面使用的备份和恢复机制在第 24 章里面有比较详细的讨论。

其它主要的维护工作包括周期性的"vacuuming"(清理)数据库。 这个工作我们在第 23.1 节里讨论。与此紧密相关的是更新规划器使用的统计信息, 这个在第 23.1.3 节里讨论。

其它需要周期性注意的东西是日志文件的管理。我们在第 23.3 节里讨论了这个问题。

check_postgres 可用于监测数据库健康并且报告不寻常的条件。check_postgres结合Nagios和MRTG, 但也可以独立运行。

PostgreSQL和其它数据库产品比较起来是低维护量的。 但是,适当在这些任务上放一些注意将更加能够确保我们的愉快工作和获取对这个系统富有成效的经验。