自动化:数据库管理任务的秘密武器


数据库对每个组织都至关重要,数据库管理员和数据库资源也是如此。今天的业务范围已经超过了公司保持竞争力的所有以前的水平,现在我们每天都要处理数十亿字节的数据,分布在多个位置,包括私有数据中心和公共云。数据库管理员不仅要处理数据库和数据,还要确保法规遵从性、安全性、成本、数据保护、可用性、灾难恢复、迁移和升级(仅举几个例子)都得到处理。

有了这么多完全不同的数据,聪明的数据库管理员必须通过尽可能多地自动化来“克隆”自己。但是,当这还不够时,因为有太多的数据库需要管理,对于数据库管理员来说,寻找能够为他们所有的数据库自动化需求提供自助服务、单窗口管理终端的工具是一个更聪明的做法。

推动变革可能很复杂

当您的应用程序依赖于多个数据源并且需要保持高可用性以满足服务级别协议并提供快速响应时间时,建立和管理数据库是一个复杂的过程。当您运行从开发和UAT到生产的多个环境时,您可以快速轻松地对开发或UAT环境进行结构性更改,如逻辑和物理数据库结构,但在生产中实现这样的转变是不一样的。

然后,有一些简单的数据库管理任务需要数据库管理员的能力,但是数据库管理员在某个时间可能无法执行。您可能刚刚完成了一次令人难以置信的数据库修改,需要在prod上对数据库进行完整备份。或者,假设您的开发团队已经确认修复了一个在UAT数据库上认证的错误。

如果数据库管理员很聪明,并且在产品部署脚本变得不可用之前拥有自动化任务(如产品部署脚本),则信息技术团队不必等待发布完成,因为数据库管理员已经为生产部署自动化了数据库脚本。这样,通过自动化数据库任务,数据库管理员不仅减轻了他们的负担,还帮助信息技术团队按时交付。

是的,数据库可能很复杂;但是他们很关键。Automation允许您标准化开发、UAT和生产环境中的数据库更改过程,然后在最终进入生产环境之前,可以对这些更改进行测试和认证。这大大减少了新产品发布的时间,这样你就可以在竞争中保持领先,并自由创新。

自动化触手可及

那么今天自动化的艺术到底在哪里?对于许多数据库引擎,有些数据库管理任务已经实现了自动化。例如,Oracle提供了维护窗口,在此窗口中可以执行自动清理活动和收集数据库统计信息,还可以进行存储和其他资源利用。

您可以编写自己的shell脚本来执行特定的数据库管理员任务,例如进行备份、将归档日志从一个存储移动到另一个高密度存储等。数据库管理员还可以创建脚本,这些脚本是从数据库到数据库的代码变更的有用部署。

但是在云数据中心时代,将自动化选项限制在只有数据库管理员的范围内可能会导致无法按时交付。因为您可能有多个数据库和多个环境,每个环境运行不同的软件解决方案,具有不同的可用性和性能要求,所以当您需要时,您可能根本没有所有可用的资源。

我们将研究两种自动化数据库管理任务的方法:传统方式另一种方法是使用新的创新工具,引导您了解未来的数据库自动化方法

数据库管理任务:旧学校自动化

传统上,有几种方法和工具可以自动化大多数数据库管理任务。其中一些被构建到数据库中,而其他的则由数据库管理员和开发人员通过shell脚本或数据库代码来执行,并由配置管理人员使用不同环境的不同版本来维护。

许多数据库管理员任务都是使用脚本执行的,应该进行版本维护,这样它们就不会产生任何冲突。这些任务涵盖了从数据库活动(如创建逻辑数据库结构,包括表、视图、索引过程和触发器)到数据库管理员任务(如添加或扩展表空间和数据文件的逻辑存储、创建关于整体数据库利用率的警报以及在出现故障时恢复数据库)的所有内容。

最佳实践是尽可能以应用程序为中心创建数据库代码,这样当您从开发转移到UAT进行生产时,就可以轻松完成,并且可以缩短上市时间以获得最佳结果。代码和数据是两个最关键的方面,需要与数据库管理任务分开处理。

例如,逻辑结构的更改可能很容易在开发中执行,但是在部署之前,您可能需要在产品上执行几个步骤,例如在一个简单的情况下添加一个带有非空约束的列。另一方面,您可能对DEV有与产品环境不匹配的存储要求,因此您保留不同版本的脚本来自动化它们。

传统上,您将使用工具或调度程序来自动化这些任务,例如UC4、外壳脚本和cron作业、Oracle调度程序和企业管理器控制台。但是,当您必须处理多个数据库时,管理起来会非常麻烦。

幸运的是,有几种数据库编排和自动化工具可以通过提供自助服务和完全自动化的环境来为任何数据库管理员带来好处,在这种环境中,从安装、设置和部署到备份和监控等任务都是自动化的,并通过单窗口系统进行监控。

数据库智能:自动化创新

当您作为开发人员或数据库管理员执行可以使用脚本和调度程序自动执行的数据库管理活动时,由于冗余和低效,您基本上是在浪费您和您的组织的时间。比尔·盖茨说:“我总是选择一个懒惰的人去做一件困难的工作,因为他会找到一个简单的方法去做。”当然,这里的假设是懒惰的人是聪明的;非常聪明。这就是自动化的来源。

为了节省时间,您可能已经或者可能还没有自动创建过程和某种代码,但是当面对管理不同口径的多个数据库时,完全集成自动化的真正好处是,您甚至不需要太多的DBA background来实现这个特性。

通过像厨师、木偶和盐栈这样的开发工具,您只需点击几下鼠标,就可以建立和管理一个私有云,例如内部部署的AWS数据库管理员。这些工具不仅让您的数据库团队的生活更加轻松,还提高了应用程序和交付过程的性能。对懒人来说,这就是音乐。现在,让我们仔细看看如何实现这些新工具。

开发工具:自动化走向未来

如果您每天都在处理数据库挑战,那么您必须知道,有些复杂性不能仅仅通过手动自动化或基本的内置工具来处理。以应用程序中的一个新KPI为例,它要求您在将数据库对象(如包、过程、表和所有相关的源代码)部署到应用程序中之前,先对它们进行更改。

可能有多个人员在数据库部分工作,以使这个新的关键绩效指标在应用程序中工作,因为数据库包含重要信息,这些信息也需要成为任何新变更的一部分。因此,在部署过程中可能会丢失一项信息,导致无法按时部署。不是一件好事。

DevOps工具可以从单窗口选项处理这些更改,并且不允许从移动到生产的更改。他们甚至可以生成关于需要部署什么的详细报告,提供关于部署的见解,并允许您自动执行continuous delivery

上面提到的帮助解决这一挑战的两个很好的DevOps工具是Chef和Puppet,这两个工具都专注于平台自动化,并通过其单窗口配置实现连续交付,允许您管理变更配置、可扩展性、合规性自动化和可用性。

让我们来看看如何通过大厨重新定义开发人员服务的运营:

  • 构建:通过提供开发人员所需的按需自助基础架构,降低管理和维护基础架构的成本。
  • 部署:通过部署的自动测试提供对基础设施变更的管理,使开发人员能够以降低的风险快速交付高质量的软件。
  • 管理:提供简单的单窗口配置和全面监控,以便您的组织降低软件和配置风险;还提供了关于速度和效率以及降低交付错误风险的见解。
  • 协作:通过在团队中分离职责来实现完整的堆栈透明性和管理,从而减少团队之间的摩擦,以促进成功的协作,并轻松交付已配置的基础架构。

摘要

数据库管理员和开发人员肩上的负担越来越重,因为从业务运营到信息技术基础设施,组织正变得越来越有活力,并广泛分布在多个职能部门。

只有能够快速交付新解决方案的公司才会成功,这就要求他们有专人和开发工具来负责持续交付。市场上有许多DevOps工具可以帮助您实现数据库的连续交付自动化。