数据库环境标准化管理的初步规划

一般来说,业务能够稳定运行,大家主要聚焦的是线上环境的管理,相反对于其他环境的管理不够重视,而现实情况是这些环境的管理更需要标准化,通过统筹管理减少一些潜在隐患,才能在一定程度上减少线上环境的隐患。

假设其他环境是一条条行车道,而线上环境是红绿灯控制,如果道路严重阻塞甚至不可用,那么要让交通能够稳定运行起来,是很危险的。

数据库环境的标准化管理也是如此,是一个大家容易忽略但是关系重大的事情。

首先我们需要明确一下所说的数据库产品,比如提供的数据库产品有标准版,集群版,单机版,如此一来,对于环境的管理模式也有所不同。比如标准版是需要考虑高可用的,而集群版底层的数据分片节点其实就是标准版,从管理模式上来说就涉及分布式集群管理和高可用管理。

然后再来说下相关的数据库环境。

开发环境,通常是在开发端自行使用的,主要目的就是高效。

测试环境,需要和测试服务器对应,会根据线上环境的类别 (单机版和集群版) 来做一定比例的适配,主要目的还是高效,当然同时需要兼顾安全。

预发布环境,和线上环境具有同样的权限配置,具有单独的预发布应用服务器,是发布到线上验证的关键一站。

线上环境,重中之重,是在稳定运行的基础上来提高效率,保证安全,也是业务稳定运行的命脉。

此外,还有数据统计分析环境,大数据分析环境等,因为如此展开的面会更大,就不再赘述。

有了这些信息,我们看下基础环境的管理设计图。

其实这是一条链路,能够把数据从头到尾连接起来,而左侧的部分值得一提,那就是数据库资源交付,我们几乎很少能够想起来给开发同学交付了哪些测试数据库资源,一般来说这些工作大都可以通过创建数据库自助实现,所以资源交付的部分着重要解决线上环境快速交付的问题,比如你后端执行了 1 分钟,但是前端从准备环境到开发完成需求提交用了 20 分钟,那么同样的这个交付效率仍然是要打问号的。而开发环境的管理就更为散乱了,有的开发组是自行购买服务器搭建环境,有的是开发环境,测试环境混用等。

而预发布环境很多开发同学则觉得有些麻烦,导致预发布环境成为一个鸡肋,可能还差点,不中看不中用。

所以环境标准化管理主要做哪些事情呢,这就需要引出标准化管理的范围。总体来说,我们规划了如下的几个部分。

  • 数据库版本统一规划和升级,比如线上环境是 5.7,那么测试环境也应该是同一个版本,同理,其他环境之间的版本管理也应该同步
  • 操作系统标准化管理,操作系统,文件系统和命令使用模式,在不同的操作系统和版本下也有所不同,需要能够统一,参考稳定且较新的版本
  • 备份恢复全覆盖,无论是测试环境还是线上环境,都需要考虑备份恢复,这是备份的粒度和恢复的能力有所不同。
  • 数据库拓扑关系支持,对于一主一从,一主多从的环境如何进行拓扑的有效管理,是高可用管理的核心,当然行业内的开源软件也有自己的实现方式,个人觉得能够把握住最本质的拓扑管理是重中之重。
  • 元数据生命周期管理,元数据如果没有生命周期管理,会比较尴尬,比如一台 10.10.10.10 的服务器下线后,重新申请服务器,IP 还是 10.10.10.10,如果元数据在多个维度的管理不善,就会产生误导甚至误操作。
  • 安全审计,开发业务同学如何正确的使用线上环境,涉及环境的安全规范,并在一定程度上开发有限的使用权限,所有的过程提供审计支持。

在上面的基础上,我总结了当前的环境管理的问题,也发现了诸多问题,红色的部分是我特意标明需要重点改进的部分。

而通过任务重点的的拆解,再加上时间计划,就会推导出这个工作方向要做的一些事情和可行性。

当然,重要的一点是环境的标准化管理是一个持续推进的工程,总体能够达到一种合理的平衡为最佳。