暂无图片
暂无图片
12
暂无图片
暂无图片
暂无图片

【专家有话说第七期】DBA是否需要掌握自动化运维技能?有哪些推荐场景?

原创 墨天轮编辑部 2025-06-23
2141

DBA的日常工作常常都是很具体的运维问题:半夜被报警叫醒、手动备份几十台服务器、反复处理同样的性能问题,有些还是重复性的工作。于是有些DBA便开始诉诸自动化工具来提高工作效率。那么你或许会问:哪些运维场景最值得优先实现自动化?又该用什么工具上手?需要专门花时间去学习自动化运维技能吗?交给自动化工具又是否会增大运维风险?

墨天轮《专家有话说》第七期围绕这一议题,邀请到了戴明明皇甫晓飞芬达樊武振(潇湘秦)四位资深DBA专家,分享自己对自动化运维技能的看法、运维中可用自动化提效的场景乃至推荐的实用工具,希望能帮助大家少走弯路。

🎙️戴明明

1.png

现在的数据库技术发展方向有着非常明显的变化,10年前,掌握Oracle和MySQL就可以满足绝对大多数企业的数据库需求。 但是从最近5年来看,数据库技术已经朝着合久必分的方向发展,目前看到的有3个方向:

  1. 传统的存量市场:当前还有很多行业(比如制造业、医疗)是重度使用Oracle、MySQL、PG数据库,这部分行业还是会继续要求对3 种数据库的要求。

  2. 信创市场:特殊的背景下,要求对国产数据库的技能掌握,比如:达梦、电科金仓、HaloDB等。

  3. 分布式市场:目前主要就那么几家,比如OceanBase、TiDB、TDSQL、GaussDB、GoldenDB等。

从学习成本来说,DBA 是很难全面掌握这些数据库技能的。 对于规模大一些的企业,使用的数据库类型一般不会少于 5 种,相对与Oracle和MySQL的生态,国产数据库还不够完善:

  1. 官方文档不完善:文档更新不及时,不准确,出现一些错误时,可能就无从下手,只能依赖原厂提供支持。

  2. 技术社区不完善:目前在技术社区建设这块做的比较好的,分布式的有OceanBase、TiDB,传统的国产数据库目前只看到:电科金仓,金仓的【金仓社区・拾光速递】,会通过定期邮件,将金仓近期的热门活动、精选的优秀文章推送给订阅的人。 这些企业在用户生态建设上是花了很多时间和经历,愿意和用户进行沟通,交流,协助解决问题,是一个正向的循环过程。

介绍完背景,回到主题:数据库运维必须掌握自动化技能。 现在的国产数据库基本都是自带监控管理平台的,但是如果业务使用的数据库类型较多,运维就会比较分裂,提升了运维的复杂度。所以在当前数据库类型较多的情况下,必须考虑建设一个综合的监控管理平台

  1. 掌握数据库的关键性能指标参数,能用SQL获取这些信息。

  2. 掌握Prometheus和Grafana的部署和配置,采集数据库相关的关键指标,并确定告警的阈值。

  3. 开发自己的运维小工具,可以使用Python或者Go开发,将数据库运维常用的命令封装到工具中,实际处理问题时,通过运维工具可以快速定位问题,提升效率。 如下是以前写的一个达梦运维小工具,可以参考:https://www.cndba.cn/dave/article/3723

当然以上讲的是自研的情况,在有预算的情况下,也可以采购商用的监控平台,比如恩墨的 zCloud,现在第三方的监控平台可以直接纳管不同的国产数据库,也比较方便。

🎙️皇甫晓飞

2.png

我认为DBA和应用运维人员应该学习和掌握自动化运维技能,当前大客户和中小企业都在使用和完善自动化运维平台或工具。

一、自动化工具的带来的好处

  1. 能够有效落实运维分工。以我这些年主要服务过的金融行业客户为例,不同的部门在运维过程中有着不同的分工,结合应用运维,DBA的运维分工,在自动化工具或平台中根据工作内容设置用户权限,落实运维分工实现权限分离。

  2. 能够保证运维规范的执行。数据库运维规范的制定和执行是日常工作的重要内容。比如日常运维中常见的扩容,创建用户等制定好规范,通过工具来实施能够保证规范的执行。当然自动化工具也能实现运维前置,将问题或隐患在开发测试阶段解决,比如SQL审核工具。

  3. 提高运维效率。当前大部分组织的生产环境数据库同时运行着传统,开源,国产等多种类型,数据库种类比较多,自动化工具平台可以提高工作效率。

  4. 降低运维风险操作。通过自动化工具进行日常运维能够大大降低人为误操作带来的运维风险。

二、借助自动化工具运维提高运维效率,保证生产安全性

  1. 做好工具或平台的选择和建设。每种数据库基本都有自己的管控平台,这些平台可以实现自动化运维。将多种数据库在一个统一运维平台管控效率更高,可以选择商用的数据库管控平台或者结合实际情况进行自研。

  2. 发挥自动化工具和平台作用。起初阶段可以从安装部署,监控告警等最基本的运维场景开始。

  3. 学习好经验。学习和借鉴行业头部客户在自动化运维中的经验,借鉴经验,可以减少自动化运维过程少走弯路。

🎙️芬达

3.png

一、DBA是否需要掌握自动化运维技能?

自动化运维是每个人都需要的技能,哪怕普通的文员也需要自动化工具来提高效率。但对运维DBA而言,真正的问题在于:DBA到底应该掌握什么样的自动化技能?

对于大多数运维DBA,自动化的核心价值是“解放自己”,而非停留在“发邮件、发短信、打电话”这种简单的提醒。以往被称为“自动化”的做法往往只是监控层面的自动提醒,DBA仍然要手动介入解决问题,这远远不够。真正的DBA自动化运维,必须追求“故障自愈”的闭环自动处理能力。

此外,运维DBA是否需要掌握CI/CD呢?在绝大多数情况下,运维DBA并不需要深入掌握CI/CD流程。CI/CD作为一种自动化方法论,更适合开发、DevOps和基础架构运维团队,运维DBA了解这些固然有助于提升工作视野,但并非必备技能。运维DBA的自动化更多是围绕数据库生命周期的管理,从部署、变更、备份、监控到回滚,每个环节都可以通过自动化来实现。

自动化并不仅仅是编写简单的Shell或Python脚本,而更是:

  • 脚本化:将常见的数据库操作转为脚本执行,减少人为失误。
  • 流程化:多个脚本操作整合成流程,确保一致性和可审计性。
  • 系统化:将流程进一步整合成具备自动故障修复、自愈能力的完整系统。

在这个背景下,掌握自动化工具已经成为DBA的必修课。Ansible、Terraform等工具是DBA实施自动化运维的重要抓手,而像Orchestrator、Zabbix等工具,虽然并不比Ansible更高级,但它们在实现数据库高可用与监控自愈方面具有极高的价值,帮助DBA真正实现故障的自动闭环处理。

值得注意的是,自动化运维本质上是平台化运维的前置阶段。自动化运维强调的是运维流程与操作的标准化、自动化与自愈化,而平台化运维则是在自动化运维基础上,进一步实现全面的自助化与服务化。只有掌握了自动化运维技能,才能顺利向更高阶的数据库平台化运维迈进。

二、推荐的自动化运维场景及工具

作为运维DBA,我们的核心工作可以总结为以下几个场景,而这些场景均可通过自动化极大提升效率与可靠性:

  • 部署/交付
    自动化运维的第一步始于部署:一条命令在3分钟内即可启动标准化、可追溯的MySQL实例,建立稳固的自动化基础,支撑后续的自动化管理。

  • 备份与恢复演练
    数据备份绝不只是简单的“备份一下”,而必须保证每一次备份的恢复性。通过自动化备份与恢复演练,确保灾难发生时能够快速恢复数据与业务,降低数据丢失风险。

  • 高可用性与故障切换
    高可用的核心是自动化故障切换。使用MHA、Orchestrator等工具可实现秒级的自动主备切换,确保业务稳定运行,保障SLA(服务水平协议)。

  • 监控自愈
    监控不仅要“发现问题”,更要“自动解决问题”。例如,使用Prometheus + Alertmanager配合自动化脚本,可实现超过60%常见故障(如重启服务、kill慢查询、清理过期连接等)的自动闭环处理,显著降低人工介入。Zabbix则直接提供了成熟的监控自愈功能,这也是其作为主流监控工具的重要优势之一。

  • 其他自动化运维场景推荐:

    • 自动巡检
      使用自动化巡检脚本定期检查数据库运行状态,提前发现隐患。

    • 账号与密码轮换
      自动化生成强口令、批量更新数据库密码、删除离职人员账号,确保数据库安全性与合规性,避免人工操作带来的安全风险。

    • 容量预测与弹性扩缩
      结合监控数据,通过Terraform等工具实现容量的自动预测与弹性扩缩,降低资源浪费与成本,确保业务高负载时的稳定运行。

    • 慢SQL自动分析
      自动化定期分析SQL性能数据,生成详细的慢查询报告并主动推送给开发团队,推动系统优化。

这里再打个小广告,作为长期专注数据库自动化运维的DBA,我开发了基于Ansible的自动化运维工具——dbops,专门用于MySQL和openGauss的自动化部署,能够帮助DBA轻松实现高效、标准化的数据库运维自动化。更多信息请访问 dbops 官网

最后一句话。自动化运维不仅是一项锦上添花的高级技能,更是DBA的基本生存技能。掌握自动化,才是真正将自己从日常繁琐重复劳动中解放出来,腾出精力去面对更高阶的挑战,持续提升系统的可靠性与性能。

🎙️樊武振(潇湘秦)

4.png

我认为DBA是一定要掌握一些自动化运维技能的。以我个人为例,我在一家大型制造型企业任职DBA,一个人运维超过200个实例,如果每天的routine work都是人工来做的话,那么一个人肯定是忙不过来的;这就必须依赖自动化运维工具来实现routine work的自动处理。

以一个最常见的例子来说:检查Oracle数据库表空间的使用率,上百套库如果手动检查,一天就要浪费至少半小时以上的时间,现在我使用自动化脚本来自动检查,达到阈值自动添加数据文件,这就大大减少手工介入的工作量。同理还有其他的日常检查,比如alert日志报错自动推送、CRS集群服务状态异常推送、数据库异常wait event推送、ADG同步异常推送等等,可以做到routine work自动处理,有异常自动推送。利用现在强大的AI能力,让一个人运维上百套实例也是可以轻松实现。之前我在博客分享了一些自动化运维脚本,这里也分享给大家:


本期【专家有话说】专栏中,四位专家都不约而同认为DBA应当需要掌握自动化运维技能,无论是戴明明提出的综合监控平台建设,还是皇甫晓飞强调的分工与规范落地,亦或芬达倡导的 “故障自愈” 闭环与潇湘秦实践的AI辅助运维,都指向同一个共识:但DBA将重复性操作交给工具,便可真正聚焦更重要的事情、提高运维效率和质量。

当前,自动化可以应用在DBA的备份、监控、故障处理等多个工作场景中,大家大可以抱着积极的态度于实践中尝试使用,争取做到“少动手、多思考”,把精力分配给架构决策层面、或是可以提高自身核心技能这些更重要的事情上。

本文已收录至【论道数据库 解读新发展】墨天轮专家邀稿合辑,点击可阅读前六期专家专栏文章及其他邀稿。

最后修改时间:2025-06-23 16:32:18
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论