前言
我偶然走上了 PostgreSQL 管理这条路。那时,我在叶卡捷琳堡一家公司的 Web 开发部门担任系统管理员,负责维护几个重要的 Ruby on Rails Web 项目。这些项目使用了许多复杂而有趣的技术,其中就包括 PostgreSQL。
在那家公司工作期间,我很少需要深入了解数据库管理系统的运行细节。我遇到的第一个重要任务,是在系统承受负载、应用不能停机的情况下,把数据库管理系统从 9.0 升级到 9.2。当时我经常在博客中记录自己的技术实践,这项任务完成后,我也写了一篇文章。
过了一段时间,我到了另一家公司工作,那里的数据库服务器由一家承包公司单独维护。不过,凭借此前积累的 PostgreSQL 使用经验,我会主动承担一部分工作,自己完成一些任务。后来,这家承包公司邀请我加入他们;我也从系统管理员转为数据库管理员。从那以后,我的每个工作日都与 PostgreSQL 相关。
我的另一项优势是熟悉 Linux 操作系统。这些知识对我后来深入学习 PostgreSQL 很有帮助。我一直对监控很感兴趣,也一直喜欢观察系统的运行方式。成为数据库管理员后,我的观察兴趣转向了 PostgreSQL,并开始研究如何跟踪数据库管理系统的运行特征。最终,我创建了各种各样的工具,从简单的 SQL 脚本,到监控系统插件和命令行工具。还有数不清的博客文章。它们通常彼此没有关联,只是因为共同的监控主题而联系在一起。意识到博客文章难以长久保存,而且散落在互联网上,我希望把它们整合成一份完整材料。于是,我产生了写书的想法。
写这本书的一年半时间里,我分析了自己的经验,做了大量实验,进行归纳,并把许多材料汇集到一处。不过,PostgreSQL 也没有停下脚步,而是在持续发展。数据库管理系统不断出现新的监控手段,例如,每次发布新版本后,我都不得不补充已经写好的章节。
最终,这本书把工具参考资料、工具使用的实践方法和解读所得数据的方式结合在了一起。所有这些知识,都是多年 PostgreSQL 运维实践中积累的经验浓缩而成的。如果你学会监控 PostgreSQL,就能更深入地理解它的运行方式和内部发生的过程,也能提高数据库管理、问题定位与解决以及性能优化方面的能力。
对于负责 PostgreSQL 运维的专业人员来说,了解数据库管理系统提供的工具,掌握工具的使用方法并理解其应用细节,会很有帮助。如今,数据库管理系统的性能优化是大型系统运维中最重要的任务之一,而监控知识和技能能够帮助我们成功完成这项任务。
对于那些有足够时间和意愿去搜索、筛选并理解信息的人来说,网络上有大量可用资料。阅读新文章、了解以前不知道的细节,是一件很愉快的事。尤其是关注 commitfest.postgresql.org 的变化,阅读提交消息,在正式发布之前就尽早了解数据库管理系统中即将出现的新特性,更是如此。不过,监控主题十分广泛,只有书籍这种容量和深度,才能让我完整解释 PostgreSQL 监控,涉及与之相关的主题;如果某些内容引起了你的兴趣,也能提供继续学习的链接。希望我在这本书中实现了自己的目标。