
DBA小A的班车梦
小A是民生银行的DBA,今天他打算下班后赶公司的班车回家,班车是下班后20分钟出发。然而,快要下班的时候,组长转过来一个数据库部署的工单,告诉小A下班后实施。
无奈的小A只好在下班后打开一个几十页的数据库部署文档,登陆到数据库服务器上,按照部署文档一页一页的操作,等到实施完成时,班车早已离开,小A的班车梦再次破碎……
上面的场景已经出现过很多次了,手动数据库部署步骤多、效率低,消耗了DBA大量的时间。然而,随着民生银行打造的自动化部署工具的上线,目前民生银行的数据库部署已经做到自动化实施,提升了DBA的效率,小A借助自动化部署工具部署完数据库之后,也能赶上班车啦。
民生银行的数据库自动化部署具有简单、高效、标准、安全等特点,需要DBA人工参与的部分少,目前已经全面覆盖测试和生产环境。并且基于自动化部署工具,在测试环境已实现数据库资源自服务,项目组如需要新的数据库资源,只需要在申请界面添写必要的信息,数据库即会自动部署与交付,全程不需要DBA参与。
传统数据库部署方式面临的挑战
数据库部署是新系统上线中非常重要的一个步骤,主要内容包括数据库产品安装、实例/数据库创建、用户创建与授权、高可用搭建等。在自动化部署之前,数据库主要采用手动执行命令以及使用脚本,这两种方式面临着以下缺点。
步骤繁多,效率低下
数据库部署步骤繁多,常见的步骤有安装前环境检查、修改操作系统配置、系统互信配置、获取安装介质、安装产品、创建实例和数据库、修改实例及数据库配置、创建表空间、创建用户及授权、搭建数据库高可用等,可能多达十几个步骤,全部执行完成可能需要数十分钟甚至数小时。以MySQL主从搭建为例,主要的步骤如图1所示。

无统一的标准,前期难部署,后期难维护
各个系统的文件系统名称、操作系统用户名及组名、数据库部分内部对象(比如缓冲池名称)、数据库配置、表空间大小和类型等都不一样,给数据库部署带来不少麻烦。更关键的是后期维护起来困难。
需要直接登录数据库服务器,容易引发误操作
因为都是手工操作,所以需要通过生产终端以root用户登录到数据库服务器直接执行命令,存在误操作可能,造成了一定的生产风险。
部署人员要求高
因为涉及的专业性强,数据库部署过程需要DBA来实施,比如DB2数据库实施需要专门的DB2 DBA来实施。
数据库部署标准化
标准化是自动化的基础,尤其是DB2数据库在民生银行使用时间较久,许多指标之前并无统一标准,给自动化实现带来很大困难,为了解决这个问题,我们对部分指标进行了标准化和简化,下面的表格1展示了DB2部署标准化/简化前后的指标,其中xxx的值在每套数据库上都不一样
| 指标名 | 标准化之前 | 标准化之后 |
|---|---|---|
| DB2数据目录 | /db2/xxxdb/data01 /db2/xxxdb/data02 /db2/xxxdb/data03 /db2/xxxdb/data04 | /db2data |
| DB2日志目录 | /db2/xxxdb/log_dir | /db2log |
| DB2归档目录 | /db2/xxxdb/arc_log | /db2arc |
| DB2临时目录 | /db2/xxxdb/tmp | /db2tmp |
| SYSADM_GROUP | dbxxxadm | dbadm |
| SYSCTRL_GROUP | dbxxxctl | dbctl |
| SYSMAINT_GROUP | dbxxxmnt | dbmnt |
| SYSMON_GROUP | dbxxxmon | dbmon |
| 表空间大小 | 固定值,不同表空间值不同 | 自动扩容 |
| 表空间页大小 | 各不相同,有4k/8k/16k/32k | 32k |
表1. DB2部署标准化前后对比
经过标准化之后,每套DB2数据库只有实例名、数据库名、应用用户名和表空间名这4个指标不同,实施时DB2相关的指标只需要修改这4个参数即可。
数据库自动化部署实践
民生银行iPaaS平台自动化引擎是一套基于Ansible的任务(流)管理平台之上的操作和管理多个项目的平台,可以通过任务管理的方式将执行脚本、分发文件等基础运维场景“任务化”,同时运用流程化的理念将单个任务串行化组成一个任务流。
通过iPaaS平台自动化引擎中的自动化项目模块,可以录入独立的脚本,并将不同的脚本串成流程,比如DB2客户端安装的流程如图2所示,它是由5个独立的子脚本构成:

伴随着民生银行iPaaS平台自动化引擎的上线,民生银行数据库部署也开启了自动化部署的时代。目前支持的自动化部署架构如图3所示。

目前自动化部署已覆盖支持民生银行主要使用的数据库类型及架构,只需要在界面添写简单的数据库信息,并选择需要执行的机器。提交审批后,点击执行即可。
DB2自动化部署
DB2自动化部署支持单机部署、HADR架构部署、HA架构部署,以及DB2客户端部署。其中HA架构使用的是操作系统的高可用架构。
DB2服务器的自动化流程界面中的参数列表如图4所示,需要填写的信息有安装类型、主机IP、备机的IP列表、实例名、数据库名、应用用户名、浮动IP即可,剩下的参数都有默认值,如果无特别需求,不需要改动,其中安装类型可以选择HA,HADR或者单机架构:

填写完成之后,选择需要安装的机器列表并提交、通过审批即可执行。程序会自动判断机器角色并根据角色执行所需要的步骤。
Oracle自动化部署
Oracle 自动化部署支持单机部署、Dataguard架构部署、HA架构部署,以及Oracle客户端部署。
图5是部署dataguard架构需要添写的参数文件示例。默认情况下需要添写Oracle实例名、主机IP列表、浮动IP、主库主机名、从库主机名。

MySQL自动化部署
MySQL自动化部署支持单机部署和主从架构部署。主从架构部署时需要添写的参数有4个必填参数、3个默认参数和一个参数文件userinfo.txt,如图6所示:

参数文件负责描述建库授权信息,包括用户名/用户IP、用户权限列表。
自动化部署优势
相比手动部署及脚本,自动化部署有以下优势:
- 智能:部署流程可以自主判断数据库架构、当前机器角色,部署的数据库在主机发生重启或者故障时能够自动恢复或者切换。
- 高效:每套数据库实施的时间原来需要数十分钟甚至数小时,使用自动化部署之后,短则只需几分钟,最长的也只需要几十分钟。目前测试和生产环境所有标准数据库部署均是通过自动化部署来实现的。
- 简单:通过自动化流程封闭了繁琐的安装步骤,降低了对实施人员的技能要求,所有DBA均可部署上述3种类型的数据库。
- 标准:采用自动化部署的数据库对数据库参数配置、数据库端口、数据库内部对象等采用了统一的标准,降低了部署和维护难度。
- 安全:无需登录服务器,加上审核机制,可以避免误操作风险。自从自动化部署上线以来,未有因为数据库部署而造成的误操作及风险事故。
数据库资源自服务
数据库作为一种基础资源,为了进一步提高申请效率,测试环境推出的基础资源的自助服务流程已经支持上述3种数据库资源的自动化实施。
对于各应用系统配额内的资源,无需审批自动实施和交付,配额外的资源由系统管理中心基础环境管理员进行评估和审批。此流程替代了IT运维管理系统中变更工单的部分功能。以MySQL资源为例,项目组只需要在选择资源类型为“数据库/MySQL”:

之后在详细配置页面填写主机名、端口、用户信息,提交之后会后台调用数据库自动化部署流程:

通过自服务,数据库部署完全不需要DBA参与,项目组即可自助获取数据库资源,进一步提升了数据库部署效率。
总结
通过两年多的建设,民生银行实现了数据库自动化部署,极大提升了数据库部署效率,满足了快速增长的新系统上线需求,截止目前,已经在生产环境部署超过300套数据库(含客户端)。
作者简介

苗庆松:IBM认证高级数据库管理员,MySQL OCP。曾任职于IBM全球技术服务部技术支持中心,2018年加入中国民生银行信息科技部系统管理中心,负责数据库运维相关工作。

李宁宁:Oracle OCM及MySQL OCP,有多年数据库运维经验。现任职于民生银行信息科技部系统管理中心,主要负责SQL审核推广及 MySQL运维相关工作。

张群飞:Oracle OCP及MySQL OCP,现任职于民生银行信息科技部系统管理中心,负责数据库运维相关工作。

作者:苗庆松、李宁宁、张群飞
编辑:民生文化建设小组
本文介绍了民生银行数据库自动化部署。传统部署步骤繁多、无统一标准、易误操作且对人员要求高。民生银行对部分指标标准化后,借助iPaaS平台自动化引擎实现DB2、Oracle、MySQL自动化部署,具有智能、高效、简单、标准、安全等优势,还实现了数据库资源自服务。
3811

被折叠的 条评论
为什么被折叠?



