数据库日常巡检是DBA们又爱又恨的工作。不得不做,有时候做一年的日常检查也没什么收获;我喜欢的是,有时日常检查确实可以帮助我们发现一些严重的威胁。如果不做好日常检查,后果不堪设想。做好日常检查其实并不容易。很多DBA一辈子都在数据库运维中度过,却没有掌握日常巡检的技巧。我看过很多公司的日常检查脚本。检查项目很多,但做到位的却不多。日常检测需要技术积累,更需要与时俱进。从其他公司复制一个日常检查脚本来做你自己的日常检查。没有自己的运维经验,没有针对自己的业务特点和业务场景,日常巡检只是例行工作,是做不出来的。对我们的运营有任何帮助。对于金融、证券、运营商、互联网公司来说,日常巡检是发现系统中紧急隐患最常用的技术手段。但是,中长期的问题发现往往可以通过优化和月度/季度检查来实现。如果我们日常巡检报告发现的问题不是当前急需解决的问题,而是一些中长期的优化问题,那么这次日常巡检的路径是错误的。日常巡检的巡检项目应该是日常监控中不易发现,但一旦出现又比较容易引发问题的项目,或者是一些与系统安全相关的问题。与系统安全相关的问题往往不会立即引发故障,但一旦安全问题被入侵者利用,后果非常严重。一些感染勒索软件的系统是由于弱密码等问题造成的。这些问题潜伏期长,往往容易被忽视。昨天我发布了一篇关于勒索软件预防的文章。有朋友在留言区留言说他们刚刚挫败了一个勒索软件。灾备演练中,备库重启,发现勒索病毒。好在主库没有重启,所以主库中的数据没有加密,才避免了灾难。事实上,大多数企业都有对数据库进行日常巡检的需求,但往往因为成本过高而无法开展日常巡检工作。因此,在D-SMART中,我们设计了专门的自动日常巡检功能。每天半夜(默认是3点钟),任务调度器会为每个数据库实例发起一个每日巡检任务。这个任务会分析前一天数据库运行的指标,分析一些关键问题。日常检测虽然是一件很简单的事情,但是做好日常检测工具并不是一件容易的事情。数据库日检功能刚上线时,用户抱怨使用不方便。当时,我们的日常检查结果表中没有异常日常检查项目的栏目。当用户看到日常检查结果中有扣分时,必须点击报告详情才能查看。用户一下子访问了几十个数据库,一个一个看是很累的。所以我们对其进行了改进,将异常的日常巡检项目直接显示在首页。如果太多,你可以通过移动鼠标来查看所有的。后来,日常巡检功能成为用户每天必用的功能,他们也大量将系统接入D-SMART。随着访问次数的增加,新的问题又出现了。当他们连接了将近1000个实例时,他们觉得看日常巡检的结果太麻烦了。于是每日检查总结报告又出现了。每日巡检汇总报表,让他们每天只需打开一份报表,就可以看到自己负责的所有数据库的每日巡检情况,免去了翻几十页查看每日巡检结果的繁琐工作。这就是运维自动化的目的。通过工具体验的提升,人们可以用更少的时间完成更多的工作。然而,问题还没有结束。客户在使用一段时间后,发现一些日常检查项目的告警,可能不会立即解决。我们跟他们商量,要不要把它从日检中去掉,放在月检中。他们也觉得这些检查是很有必要的。如果他们每月完成一次,则可能为时已晚。最好在日常检查中进行。只是希望报告能有所区分,区分新发问题和老问题,让人一看就知道某个问题是今天发现的新问题。经过这样的改造,日常检测报告确实好用多了。或许在这一点上,有些朋友有些不耐烦了。说了半天,数据库日常检查到底应该做什么?事实上,日常检查因人而异,因每个企业的特点而异。比如20年前,存储空间是奢侈品,所以每天检查是否有可能无法扩展的段是一个重点。但是在当前的数据库版本和存储容量条件下,这个检查不一定是必须的。在D-SMART中,日常巡检模板可以根据用户的需求进行调整。您还可以自定义日常巡检的巡检项目。D-SMART社区版的日常巡检模板无法自定义,但我们也提供了非常丰富的日常巡检项目。有兴趣的可以到“DBAIOPS社区”下载免费的D-SMART社区版,体验数据库日常巡检功能。只要日常巡检变得非常方便,任何用户都可以进行数据库日常巡检,日常巡检工作带来的提升是显而易见的。但是,从我们对日常巡检的理解来看,数据库日常巡检不仅仅是一份工作,更是一种能力。如果日常巡检不能低成本、快速、高效、准确地进行,那么日常巡检就只能是一件烦人、烦人、低效、无必要的工作。而一旦我们把工具性、便利性、实用性做到位,那么这种能力对于数据库的运维将是无穷无尽的。
