“什么是数据库管理员(DBA)或如何成为一名DBA?”这是我作为一名DBA时人们经常问我的问题。我已经担任DBA有一段时间了,非常喜欢这个职业的一切。这篇博客不仅回答了这两个问题,还分享了我是如何开始我的数据库职业生涯的经验。
什么是DBA?
DBA代表数据库管理员,他们负责以下列出的所有事项以及更多。要成为一名DBA,你应该至少对一种关系型数据库管理系统有实际操作的知识,包括但不限于以下几个职责:
- 数据库可用性:应用程序从数据库中提取数据以显示或生成报告。公司不能承受数据库离线的损失。没有数据库,应用程序也无法保持在线。数据库可用性是DBA的关键职责之一。
- 数据库备份:当你的硬盘损坏而没有重要文件的良好备份时会发生什么?每天备份现有数据库是非常重要的。制作备份的多个副本并将它们存放在不同的位置是一种好的做法。热备份和冷备份是两种数据库备份策略。数据库备份通常通过夜间或每周运行的计划任务自动化完成。
- 数据库恢复:恢复是从备份副本构建数据库的过程。备份是为了保护数据免受数据损坏、硬件/媒体故障或自然灾害的影响。DBA需要定期从备份中恢复数据库以练习恢复过程。成功的恢复过程验证了备份副本没有损坏,而这一点只有通过恢复才能知道。
- 数据库设计:良好的数据库设计可能需要一段时间,但它可以避免后续出现很多头痛的问题。应用程序开发人员应咨询DBA他们的设计,或尽早让DBA参与到设计过程中。良好的数据库设计使应用程序更加可扩展、更易维护、更加安全,并且运行更快。
- 数据迁移:组织有许多将数据从一个数据库迁移到另一个数据库的需求。最常见的请求是从生产数据库迁移到开发数据库,以便开发人员在将更改推送到生产之前测试他们的应用程序。有时数据迁移是为了归档历史表中的日期、备份现有数据或将数据存储在数据仓库中以供报告和分析之用。数据库链接、导入导出、物化视图、自定义脚本以及SSIS、Informatica等是目前广泛使用的提取转换加载(ETL)工具。
- 数据库升级:你们可能都有带有Android、Windows或iOS操作系统的智能手机。每年左右,他们会发布新的操作系统版本,并通知我们升级到最新最好的版本。新版本覆盖了旧版本存在的所有或大部分问题,并可能增加一些新功能。同样,DBA需要将数据库升级到更新版本。不过,我会等待几个月后再升级到新版本。如果数据库运行在旧版本上,Oracle和SQL Server将不会提供支持。
- 数据库补丁:数据库是一种软件,永远不会完美无缺。数据库公司不断努力改进或加强他们的产品。数据库供应商发布补丁以解决已知错误、添加功能或加强安全性。DBA需要监控这些供应商发布的补丁,测试它们并应用于自己的数据库。
- 培训开发人员:应用程序开发人员是你数据库的频繁使用者。开发人员是你的客户。他们在自己职位所标示的领域非常出色,但可能对数据库最佳实践缺乏足够的了解。数据库管理员应该是教育开发人员关于数据库最佳实践和标准、注意事项的人。正确的早期设计有助于DBA和开发人员长期合作。当数据库设计正确时,数据库和应用程序都更容易管理、更快捷且更安全。
- 查询调优:调优是使查询在不对数据库造成额外负担的情况下运行得更快的过程。SQL查询的调优是一门艺术,需要经验积累。遵循正确的数据库实践、了解数据和查询结果有助于编写最优化的查询。大多数数据库都带有显示数据库如何执行查询的工具。简单规则是避免表扫描,并尽可能让查询使用索引。这取决于数据量和查询结果。物化视图是另一种使查询更快的数据库对象。如何利用物化视图提高性能?并非所有查询都能通过物化视图变得更快速。那些进行计算的查询受益最大。而不是每次执行查询时都运行计算,物化视图会存储结果。查询重写、游标的使用、临时表或数据库重新设计是让查询运行得更好的几种方法。
- 数据库调优:这是一个优化数据库性能的过程。这严格由系统DBA在数据库和服务器级别执行。调整临时数据库大小、请求适当的内存、处理器、硬件和数据库配置是数据库调优的一些例子。这样做是为了让查询快速运行而不造成过多负担。这是一个持续的过程,DBA应始终寻找改善性能的方法。
- 数据库安全:安全性是任何公司的首要优先事项。你的数据库是否安全?你可能听说过索尼、塔吉特、eBay等公司的可怕故事。它们经历了包括信用卡、社会安全号码、电子邮件在内的客户账户泄露事件。DBA团队应始终与安全团队合作,确保遵守规定并且数据库对外部攻击和内部攻击都安全。创建具有最小权限的数据库用户账户是保护数据库免受内部数据库用户侵害的一种方式。安全是一个复杂的话题,如今大多数公司雇用全职DBA只是为了保护数据库免受漏洞、恶意软件和网络攻击。
- 容量规划:容量规划是为了适应未来的发展。发展可能是数据库用户、应用程序用户或数据本身的增加。DBA需要确保有足够的磁盘空间、内存、处理器和带宽来支持公司的发展。高估总比低估好。规划不当可能会导致失业,数据库可能无法以最佳状态运行,随时可能出现崩溃。
- 数据库监控:监控是为了确保数据库无故障运行。当我在运行复杂查询、建立索引、移动数据等时,通常会进行数据库监控。你可以监控数据库作业、表锁定、I/O和问题查询。监控是为了识别问题查询。每个数据库都带有监控工具,或者你可以使用市场上提供的免费或付费工具。
- 错误日志审查:错误日志是错误输出的地方,每个数据库管理系统都有。DBA应在早上和全天早些时候审查和监控错误日志。任何地方出现错误,都应该尽快修复。审查错误日志是发现问题查询的一种方式。一个好的DBA会在日志文件中记录“错误”一词时给自己或团队发送提醒。
- 还有更多:DBA的角色和职责不止于此。上述列出的要点只是DBA的一些核心职责。偶尔,DBA需要与其他IT部门如系统管理员、网络管理员合作以帮助解决问题。DBA应该具备操作系统和IT网络概念的良好知识。DBA需要了解如shell脚本、awk和Linux命令等脚本语言以自动化任务。了解公司开发人员使用的编程语言是一个巨大的加分项。
如何成为DBA?
定义DBA的角色和职责是比较容易的部分。现在,这部分将讨论你是如何掌握这些职责并成为一名DBA的。
- 数据库安装:想要学习数据库的每个人必须在家庭PC上安装一个关系型数据库管理系统,如Oracle、Sql Server或MySQL。这些都是市场上流行的几种关系型数据库。每家公司都会提供一个免费的轻量级版本供你试用,如Oracle Express、SQL Server Express或MySQL。决定你想学习哪一个并安装它。安装Express版很容易,你可以在它们的网站上找到安装说明,或者如果你更喜欢通过观看学习,也可以在网上搜索教学视频。
- 学习SQL:SQL代表结构化查询语言,用于访问数据库。学习SQL是成为数据库专业人士的第一步。你需要了解数据定义语言(DDL)和数据操作语言(DML)。DBA经常使用SQL。SQL是一种查询语言,适用于大多数可用的关系型数据库管理系统。在开始学习DBA工作之前,学习SQL的重要性怎么强调都不为过。W3Schools是我学习SQL的一站式圣经。我推荐W3Schools给任何希望学习的人,它易于跟随且完全免费使用。
- 数据库概念:什么是数据库概念?你已经选定了你的“马”,现在是时候驾驭它了。学习你安装的数据库架构。了解你的查询是如何处理和执行的。让自己熟悉诸如主键、外键、数据库完整性、数据库日志、索引、视图、同义词、备份和恢复错误代码和消息等数据库概念。我无法列出所有概念。我建议阅读有关数据库概念的书籍。书籍比其他资源更为系统化。