作为一个DBA(Database Administrator:数据库管理员),你的技能,服务,专业知识,以及你的时间都是必需的。你只能拿出有限的一些时间,这一点是无法改变的,所以有效地利用这些可用的时间就变得至关重要了。我向你保证,这是所有优秀的DBA都信奉的一个基本原则。
自动化的重要性
我经常发现数据库管理员在持续不断地进行着维护,我把这种情况称为“救火模式”。这就是说,他们在和持续不断增长的工作负载做斗争,他们一直在被动地进行维护,只是从最重要的任务过度到下一个任务而已,并没有对全局做出自己的判断。这样的DBA通常可以在遭遇所谓的“Technical Debt”的环境中找到,Coding Horror(Jeff Atwood)在他的博文《Paying Down Your Technical Debt》中讨论了“Technical Debt”的代价。现在,让我告诉你,这样的工作是无法容忍的,无论是系统还是DBA,最终都会崩溃的,通常用不了多久,就会走上这条路了。不要试图做一个DBA英雄,把难题都留给自己,这样的话,你很快会精疲力尽的。你需要做的事情是让工作变得更智能,而不是让工作变得更困难。
(关于Jeff Atwood的博文《Paying Down Your Technical Debt》,具体可以参考:http://www.codinghorror.com/blog/2009/02/paying-down-your-technical-debt.html)
理解时间的价值并承认它对成功的DBA的重要性是利用它的强大魔力的第一步。作为一个DBA,你应该采取一些措施,让你可用的时间最大化,这样的话,可以让你把主要精力集中在那些可以给你的企业增加更多的价值的任务上,也可以让你的运维处于“主动模式”之中。简而言之,为了成为一个高效率的数据库管理员,你必须要“挤”出时间来。
这才是自动化的秘密,也是它可以提供给DBA的好处。自动化的任务,系统和流程越多,你就有越多的时间来主动处理那些可以给你的企业(和你)创造更多的价值的任务。
让每一件事情自动化
你没有听错,我说的的确是每一件事情。你应该坐下来,花一些时间来考虑一下这个问题。当你考虑那些有可能自动化的流程和任务的时候,要反复地考虑这个问题。现在,把“可能”这个词从你的字典中剔除掉,考虑一下你怎样让你做的“每*一*件*事*情”都自动化。
即使你认为你必须要重复某个特定的任务的可能性很小,也要勇往直前,让它自动化!可能当你必须要再次重复这个流程的时候,有人催着你尽快完成它,或者更好一点的情况是你有更重要的“主动模式”的任务/项目需要完成,例如:为了通过MCM认证而努力学习,观看免费的MCM视频(具体可以参考:http://technet.microsoft.com/en-us/sqlserver/ff977043.aspx),以此来提高自己的专业技能。(你可以信任这个认证,在使用PowerShell的自动化方式中,它同样是有用的,具体可以参考这个视频:http://www.englishtosql.com/english-to-sql-blog/2010/12/15/mcm-readiness-video-downloads.html,这主要是 @anonythemouse的功劳。)
至少,要给你的步骤创建一个流程,然后把你的脚本都保存起来,这样的话,你就可以重用你的劳动成果了。
实现自动化的方式有很多,从显而易见的选择(例如:SQL Server Integration Services(SSIS)和PowerShell ),到你选择的任何一门编程/脚本语言,你可以从中选择合适的方式来实现自动化。我甚至开发了一个小的Java应用程序(我过去是一个开发人员,在过去生活的感召下,我开发了这个小程序,但是我没有告诉我们公司的开发人员。),让一些管理任务自动化。自动化的关键和典型的DBA实践刚好相反,那就是虽然未必要使用对某项工作来说最合适的工具或技术,但是一定要使用可以让这项工作自动化并完成的工具。
我敢打赌,针对你的任务和问题,你一定已经实现了一些真正具有创新性的自动化解决方案。你可以在评论中分享你关于自动化的想法,技巧和理念。
从现在开始管理你的时间
让你的任务自动化,可以让你最大限度地利用你最有价值的资产(时间),同时,可以让你把精力集中在那些可以给你的企业创造更多的价值的任务上。从今天开始,让每一件事情都自动化吧!