招数二:需要详细记录备份与还原测试的数据。

笔者建议数据库管理员,无论你做了哪些测试,测试的工作是否充分,都需要一五一十的记录下相关的备份与还原测试数据。因为这些故障可能随时发生。到那个时候可没有时间让数据库管理员去研究分析该如何处理。那时如果数据库管理员有类似文档的话,那么只要按照相关文档去处理,可以减少中间思考的时间,可以迅速利用备份文件与日志文档进行数据库恢复作业。

具体来说,笔者认为数据库管理员在测试的时候需要记录如下内容。

一是需要记录遇到故障时还原所需要用到的文件以及基本的操作步骤。如当发生硬盘故障时,此时需要恢复故障硬盘中的数据,需要用到哪些文件(可能需要用到保存在其他硬盘上的备份文件与重做日志文件),以及一些操作步骤。记录这些内容有利于数据库管理员在遇到问题的时候迅速找到这些文件并且熟练的应用这些文件进行数据库的恢复作业。

二是需要记录备份或者恢复过程中遇到的意外事件。虽然只是模拟失败,但是这个故障以及解决故障过程中出现的意外事件,在实际工作中很有可能会出现。而数据库管理员在遇到这些意外事件时能否轻松应对则是考验数据库管理员能力的地方。笔者在日常工作中,对于这些意外事件无论大小都会一一的进行记录,并且对于如何解决这些意外也会做相关的说明。要知道,这些内容可是数据库管理员的无价之宝,因为这些东西在任何教科书上或者讲座上都是学不到的。只要在模拟过程中经历了一次失败,数据库管理员应该把当时的情况以及如果处理这种意外事件的解决方案加入到你的工作笔记中。必须切记,意外事件往往不会只发生一次,它很有可能在未来的某个时刻再次发生。养成及时更新自己的工作笔记的习惯,有利于数据库管理员提高自身的水平,提高应对意外事件的能力。

三是要勤于跟其他这方面的专家进行交流。如笔者经常会逛各种论坛。在论坛上,有些数据库管理员会把自己遇到的问题在上面列出来,有不少是在备份或者恢复过程中出现的一些意外事件。这些意外事件有些是数据库管理员以前遇到过的,而有些则是由于工作经验限制没有碰见过的。但是很有可能在以后的工作中为碰到。为此数据库管理员需要预先去了解、收集这些别人碰到的问题,并在可能的情况下模拟这些意外事件,并寻求解决方案。因为别人遇到的意外情况,很可能我们自己在下次也可能会遇到。防范与未然,提早想好解决措施。有利于我们在遇到这些问题时,迅速采取有力的措施解决。

招数三:测试,测试,再测试。

俗话说,熟能生巧。如果数据库管理员了解了意外事件,也知道该如何处理。但是如果因为不熟悉相关的操作,则很可能会因为操作不当而造成新的意外事件或者造成不可挽回的损失。所以数据库管理员在工作比较空的时候,需要对这些解决方案进行测试。一来是看看随着数据库版本的升级,这些解决方案是否仍然有效;二是提高自己操作的熟练程度,确保以后在遇到类似故障时能够万无一失的进行操作。

为了达到这个目的,笔者对自己提出了如下几个要求。

一是当数据库新版本出来之后,需要对工作笔记中记录下的解决方案进行测试,以判断这些解决方案是否过期。没有过期好,如果过期了的话,则必须解决它。如需要考虑这些意外事件在新版中是否仍然会出现。如果仍然会出现的话,则要在新版本功能的基础上寻找新的解决方案。有些意外事件则可能会随着数据库版本的升级而被解决掉。故数据库管理需要随着数据库版本的升级而不断的进行测试,以提高相关解决方案的时效性。

二是给企业部署完成新的解决方案之后,需要挑选一些重要的内容进行测试。如笔者给企业部署完成Oracle数据库(采用磁盘阵列)。如果要模拟所有的失败情况并测试相关对解决方案是否可行是不现实的,因为这需要花费很长的时间,得不偿失。此时笔者会挑选一些重要的或者经常发生的意外情况,并测试相关的解决方案是否可行。同时,这也是对企业用户的一种培训,以提高他们独立自主解决问题的能力。如对于上面这个案例,笔者会跟数企业用户一起,进行磁盘阵列有效性的测试。如换一块新的硬盘之后看看数据库服务器是否会自动恢复相关的数据。把企业用户培养起来了,那么我们数据库管理员也可以轻松很多。

三是对于一些新的解决方案也需要进行测试。如笔者平时比较喜欢逛论坛。在论坛上有人提出一个问题,后面有很多数据库管理员会把相关的方案写出来。这些方案有些可能是数据库管理员已经知道了的;有些则是他们还没有想到的。此时数据库管理员需要对新的方案进行测试,因为也许这个新的解决方案能够在更短时间内解决故障。

以上几个要求是笔者日常工作中在备份还原测试方面对自己提出的几个要求。大家若认为觉得合理的话,则也可以这么去做。