用一个简单的定义,DevOps是一个必须以“开发人员的方式”执行操作职责的人。这就像软件开发和系统或数据库管理这两个世界的融合,用于快速开发以改善向最终用户的服务交付。在使用数据库时,有多个领域会直接影响DevOps团队的效率,我们将与您联系,以帮助您准备DevOps团队。
DevOps首选数据库供应商和版本
首先是要知道他们需要哪种数据库系统(DBMS),供应商和版本。他们需要执行事务处理(OLTP),分析处理(OLAP)还是同时执行两者?工作负载类型是首先要确定的重要方面,它直接影响系统的体系结构设计。取决于预算和限制,开源DBMS可能是最好的选择,因为其拥有成本较低,并且不会锁定特定的供应商或品牌。
随着应用程序的增长,使用正确的数据库供应商和版本,您很可能不需要将数据移动或迁移到另一个数据库系统/供应商即可满足您的应用程序需求。某些数据库管理系统具有对高可用性和可伸缩性的内置支持,这使您可以扩展数据库而完全不会对数据库服务造成任何干扰。
一旦您对所选的DBMS感到满意,那么迁移到另一个DBMS可能为时已晚,而且成本很高,有时重新学习一切都不值得。从长远来看,尽早找到合适的DBMS将是有益的。花一些时间研究适合您需求和要求的最佳DBMS,并确保它物有所值。
DevOps数据库管理工具
数据库管理任务可能会根据您的环境,策略和要求而有所不同。数据库的一些常见管理任务是:
- 备份管理(完整,部分,差异,增量备份,存储,压缩,加密)
- 还原管理(还原,存储)
- 配置管理(配置更改,运行时,配置文件)
- 数据库软件管理(升级,降级,存储库,权限,所有权)
- 服务控制(启动,停止,重启,引导,滚动重启)
- 用户/模式管理(数据库对象管理-用户,模式,表,视图,特权)
- 安全管理(证书,密钥,加密,访问控制列表,审核)
- 群集/复制管理(拓扑更改,群集配置,扩展)
管理工具对于缩短DevOps团队在配置和维护活动上花费的时间很重要。备份和还原是数据库中最重要的事情(但是最麻烦的事情),因为在数据库世界中数据丢失是一件大事。一个好的备份机制涉及许多备份变量的配置,例如备份方法,调度,目标,保留期,加密密钥和压缩级别。必须完美调整这些变量,以使您免受数据库服务器的其他问题困扰。您可能想查看此博客文章,以提供一些有关如何为数据库设计好的备份策略的想法。
一个好的管理工具应提供一个工具集来管理我们要控制的所有组件。对于本地基础结构,Chef,Puppet,Ansible和SaltStack都是流行的配置管理工具,旨在在现有服务器上安装和管理软件。流行的术语“基础结构即代码(IaC)”是通过机器可读的定义文件而不是物理硬件配置或交互式配置工具来管理和配置计算机数据中心的过程。IaC帮助DevOps最大限度地减少人为错误并简化管理和部署过程。但是,这需要更高的学习曲线和脚本知识,才能为整个基础架构的管理任务编写定义文件。对数据库使用其他专用管理工具,例如ClusterControl,MySQL Workbench或SQLyog将缩短学习曲线,但是其中一些工具需要额外的支持和订阅费用。
如果您有更多的财务预算并且对计算机的控制更少,则可以选择DBaaS云产品,例如Amazon RDS,Google Cloud SQL和Azure SQL数据库。市场上几乎所有的云DBaaS产品都提供了自己的管理工具集(或自动化),用于备份,配置管理,升级,置备和扩展。
DevOps数据库监控工具
应该为DevOps团队提供一个主动的监视工具来监视数据库。主动式监视工具不仅可以深入了解数据库和应用程序的关键性能指标(KPI),还应该能够检测到任何异常情况,执行自动恢复,并针对过高或过低的参数提供建议以及预测分析。这将有助于团队快速了解应用程序和数据库的状况,并为容量规划提供基础依据,同时有助于指导DevOps查找问题的根本原因或瓶颈。
对于警报和通知,DevOps必须始终获得有关数据库集群状态的通知。出色的监控工具不仅可以通过电子邮件通知用户,而且还可以与其他协作工具集成,例如事件管理系统(PagerDuty,OpsGenie,ServiceNow),消息传递工具(电报,Whatsapp,Signal,微信),团队沟通工具(Slack,Microsoft Teams,Discord)以及任何其他外部集成的webhooks集成。例如,由ClusterControl触发的所有数据库事件都可以转发到其他消息工具,例如Telegram通道。考虑以下数据库集群和事件:

触发的事件将被推送到已配置的电报通道。这是一个示例,说明如果集群出现问题(取决于您所订阅的事件),您将在频道中得到什么:

并非所有DevOps成员都是经过培训的专业人士,拥有一个良好的主动式监视系统可以真正帮助他们清楚地了解数据库的运行状况,最终避免中断和计划外的停机时间。
DevOps数据库自动化工具
管理数据库基础架构生命周期涉及许多风险和重复性的任务,需要专业知识和经验。人类有感情。他们的日子不好过,有个人问题,对结果的压力很大,而且会分心。通常会忘记执行步骤或错开破坏性命令,特别是在日常重复性任务中。定义明确的配置可创建稳定的过程,并且机器绝不会错过任何一个步骤。
重复性任务在多层体系结构设置中很常见。每个层都有自己的一组管理,部署和扩展任务,这些任务必须以自己的方式执行。例如,在更改群集范围的数据库参数之后,必须进行数据库滚动重新启动(一次重新启动一个节点),以加载新更改,而不会导致服务中断和停机。这些重复性任务应自动执行,以减少人为错误的风险,但同时,必须能够正确处理意外问题。
可以使用Terraform,Heat(OpenStack)或CloudFormation(AWS)等基础设施配置工具以及Ansible,Chef,Salt或Puppet等配置管理工具来自动执行诸如部署,配置管理,备份,还原和软件升级之类的重复任务。但是,总是缺少一些自定义脚本或命令(如故障转移,重新同步,恢复,缩放等)来弥补缺少的部分。开源Runbook自动化工具Rundeck可用于管理所有自定义脚本,这使我们更接近实现完全自动化。
完全自动化的数据库基础架构要求所有重要组件一起同步工作,例如监视,警报,通知,管理,扩展,安全性和部署。ClusterControl是一个非常先进的自动化工具,用于部署,管理,监视和扩展MySQL,MariaDB,PostgreSQL和MongoDB服务器。它通过受支持的DBMS提供的各种数据库集群和复制技术来支持复杂拓扑的处理。ClusterControl具有所有必要的工具来替换专用的DBA,以维护您的数据库基础结构。我们认为,现有的sysadmin或DevOps团队以及ClusterControl足以应付数据库基础结构的大部分运营负担。
DevOps数据库专业培训
投资于专业的数据库培训是对解决方案管理的投资,最终可以减少与数据库紧急情况和问题解决相关的成本。与任何IT运营领域一样,数据库管理技能也基于经验,专业知识和知识。DevOps团队中拥有这些技能的人越多,他们就能更快地诊断问题,排除故障并实施解决方案。
从在线培训到由您的机构在讲师指导的现场课程中提供多种选择,通常由数据库负责人,供应商或任何认证的培训提供者提供。还提供实时虚拟课程,您可以像正常课程一样参加培训,无需离开工作站即可直接与讲师和其余参与者进行互动。
培训课程通常侧重于数据库基础知识,数据库配置知识,参考体系结构,经验共享,调整,备份和恢复技术,这些技术旨在支持您的应用程序需要帮助,并确保您的数据始终可用于企业和客户。培训参与者通常会在完成培训后最终清楚地了解对/错,做与不做,了解误解和最佳实践。
大多数组织和企业实际上将培训视为一项投资,但将其视为一项支出。培训中获得的知识对于长期运行是有益的。仅仅花几天时间参加培训课程,作为回报,DevOps团队在支持关键系统方面的技能,知识和信心提升可能会持续数年甚至数十年。
结论
DevOps是IT运营的骨干力量,必须得到所有必要工具的支持,以提高业务连续性的生产率,效率和有效性。
作者:Ashraf Sharif
文章来源:https://severalnines.com/database-blog/how-support-your-devops-team-their-database-needs




