《王鹏冲-银行复杂架构下的数据库敏捷运维(55页).pdf》由会员分享,可在线阅读,更多相关《王鹏冲-银行复杂架构下的数据库敏捷运维(55页).pdf(55页珍藏版)》请在三个皮匠报告上搜索。
1、 全球敏捷运维峰会 广州站银行复杂架构下的数据库敏捷运维演讲人:王鹏冲 全球敏捷运维峰会 广州站平安银行总行科技运营中心数据库技术总监王鹏冲个人简介:16年数据库领域工作经验,历任多家公司数据库技术负责人、团队总监Oracle 10g OCP,MySQL OCP2015-2017连续三届PostgreSQL全国大会演讲嘉宾2018年MongoDB中文社区演讲嘉宾GOPS、dbaplus、Gdevops等技术社区分享讲师微信公众号数据库技术圈发起人CONTENT目 录1 1概论2 2开发3 3运维4 4展望 全球敏捷运维峰会 广州站01概论Database DevOps 全球敏捷运维峰会 广州站
2、01概论银行数据库架构有多复杂?1DB类型10-20种DB类型不同,人员技能、开发设计、发布部署、配置规范、运维工具、变更方案、自动化流程等,都会有差异2实例规模数以万计生产、同城、异地、开发、测试、灰度等不同环境的大量实例,带来的是运维管理的复杂度、标准化落地的难度3DB版本新旧并存新旧版本并存,对补丁管理、安全漏洞、迁移升级等都带来挑战4OS类型Unix、Linux、Windows不同平台的配置基线、采集监控、报警指标、应急处理等都要有针对性设计5开发模式外购+自研大量外购商业软件的存在,使得对DB的应用层的优化手段有限,DB重构、去IOE困难重重6DB架构集中式、分布式分布式架构的数据库
3、运维带来与传统集中式架构不一样的需求与问题,比如审核、灰度发布、批量回滚等。全球敏捷运维峰会 广州站数据库怎样融入DevOps基因 全球敏捷运维峰会 广州站传统数据库开发、发布方式存在的问题 全球敏捷运维峰会 广州站将数据库集成到DevOps流水线的挑战 全球敏捷运维峰会 广州站企业实施DevOps的阻碍因素 全球敏捷运维峰会 广州站DevOps谁说了算?全球敏捷运维峰会 广州站02DevOps:面向开发打造涵盖数据库开发设计、代码审核、部署测试、生产发布的一条龙生产流水线 全球敏捷运维峰会 广州站以前的发布流程:1.开发人员将应用程序打包,并按顺序汇总并整理数据库发布脚本。线下传递脚本或缺乏
4、审核。2.DBA拿到数据库发布脚本检查、备份、执行,以完成数据库发版。3.部署人员拿到应用部署包,备份、替换,以完成应用程序发版。引入DevOps之后的发布流程:1.开发人员将应用程序、DB代码在CI工具中完成上传、代码审核、打包。2.部署人员拿到部署任务,在发布系统中完成DB发版以及应用包部署。全球敏捷运维峰会 广州站建模工具生成DDL、DML代码库集成发布平台Lotus数据库审核与发布工具DBgo测试环境集成测试平台移交发布生产环境数据库制品流水线数据库制品流水线 全球敏捷运维峰会 广州站 支持逻辑模型和物理模型的可视化建模,快速编辑表,字段,主外键索引,视图等对象,支持模型全生命周期管理
5、设计驱动开发 先设计、再开发,根据设计结果生成数据库部署脚本 确保数据库开发规范落地数据标准落地 与数据标准库、词根库拉通,可实现数据标准智能发现及数据标准引用,提升建模质量。模型共享 模型可以跨系统、团队共享,支持多方参与 数据标准的定义,制定业务规则。快速建模缺少统一工具支持建模与数据标准脱节数据模型无法共享问题目标一一、数据建模工具数据建模工具-DDM-DDMDDL的现状及问题DDLDDL当前主要流程当前DDLDDL现状p 手工书写 使用excel建模,手工书写DDL;p DDL校验放在开发环节之后 即将转测试或者即将发版时进行DDL的校验;p DDL相关的工具或平台没有互通 数据库相关
6、的模型设计,脚本编写,脚本上传,脚本执行分别要在多个工具之间进行切换(Excel/文版编辑器/gitbash/dbgo平台/邮件/PLSQL等)。导致的问题p 质量问题、效率问题 质量参差不齐,手写效率低;p 返工风险高,风险后置 即将转测试或者即将发版时进行校验才发现问题,一旦发现问题就要返工,如果涉及代码修改,返工成本更高;p 多工具切换,效率低 用户的DDL的完成及校验部署需要在多个平台/或工具中切换,使用复杂,效率低,多工具维护复杂,实时性差。DDL手工手工/gitbash运维邮件设计GitlabLOTUS等Dbgo校验生产环境Excelpowerdesigner需求设计-评审环节开发
7、测试发布DDL不规范被打回DDL不规范被打回DDM工具DDM工具方案及收益模型设计模型产出一站式工具DBgo平台数据库(逆向抽取模型)Excel需求设计环节开发测试发布自动生成DDL逻辑模型物理模型模型1模型2模型NDBgo校验上传Gitlab生产环境收益p 批量生成,高效高质量工具批量自动一键生成,避免人为疏忽导致的问题。提高效率,提高质量;p 提前感知风险,提前解决与Dbgo平台对接,将DDL规则校验前置,提前察觉问题,提前解决问题;并且达到实时校验实时修改,提高脚本质量,降低投产风险;p 一站式开发,减少开发成本建模,校验,修改,上传Git库,部署(部分开发环境及测试环境)全部都在DDM
8、工具内一站式完成,提高开发效率,降低开发成本。通过不通过提供校验服务导入 逆向DDM工具-1 快速建模1.Excel导入2.手工新建3.逆向工程 导出模板;完善模板;导入数据字典;新建;选择数据库类型;逆向;输入数据库连接串;选择表;DDM工具-2 模型落标1.直接引用内置标准库的数据标准2.自动使用内置词根进行翻译3.直接使用共享模型 全球敏捷运维峰会 广州站lotus完成1000万封版移交生产发布zipzip01_.sql解压缩数据库预审检查语法检查语义检查规范检查性能检查空间检查通过豁免测试环境顺序执行生产环境顺序执行否否否否是是是是dbgo二、二、DBDB发布发布工具工具总览总览02_
9、.sql03_.sql发布完成 全球敏捷运维峰会 广州站人工执行环境混乱回退时间过程记录背景说明常在河边走,哪能不湿鞋。人工执行脚本容易出现人为错误指定错误环境执行的风险高通常发版出错,如果进行回退,时间会很长,窗口无法保证非平台发布,无法保证执行过程被完整记录,追溯困难随着银行业务高速发展,越来越多的系统的上线,数据库版本发布的局限性越来越突出,风险越来越高,构建一个高可用、自动化、安全可控、规则可扩展的数据库脚本发布平台越来越重要。01030204二、数据库发布工具二、数据库发布工具DBgoDBgo(1 1)全球敏捷运维峰会 广州站高可用平台7*24小时稳定运行打造7*24小时高可用的自动
10、化部署平台。01自动化任务提交时设定执行时间,到点自动化执行安全可控用户只可查看或执行与授权的菜单或操作可扩展可以根据需要添加或修改响应检验规则版本任务可编排,若出现任务按照时间窗口自动执行问题,自动智能回滚。根据权限最小化原则,适当分配各种角色用户的权限,严格控制权限,杜绝安全隐患。SQL解析规则引擎的规则,可以根据需要动态添加、修改、删除,方便查询。020304二、数据库发布工具二、数据库发布工具DBgoDBgo(2 2)建设目标 全球敏捷运维峰会 广州站DDL新增1、只发DDL、不发DML2、只做备份、不做回滚3、只做新增,不做删改DDL其他1、DDL修改DML1、INSERTDML1、
11、DELETE2、exec procedure、func3、匿名块plsql1、只发DDL,以及简单的DML2、只做备份,不执行回滚,所有回滚操作都是触发通知到人工判断、执行。3、一期只做新增,不做删、改(比如只做create,或alert*add;不做alter*drop、alter*modify、rename、drop、truncate)1期3期2期4期二、数据库发布工具二、数据库发布工具DBgoDBgo(3 3)2、DDL删除 2、UPDATE分步实现 全球敏捷运维峰会 广州站1 文件命名序号_属主_SQL类型_动作类型_对象类型_表名_UMID001_dbgodata_ddl_creat
12、e_table_t_order_rocky068.sql7 属主前缀每个文件里面,对象前面必须要包含属主前缀8 文件内容Dml语句内容不要太多,不要超过500个语句,解析比较慢9 事务提交文件里面不能存放commit3 压缩包支持多个文件,以压缩包的形式发布文件编码格式需要统一成:UTF-8格式二、数据库发布工具二、数据库发布工具DBgoDBgo(4 4)10 多表拆分对多个表的操作,不要放到一个sql文件中4 DDL/DML拆分DDL与DML语句拆分开成2个文件5 不能包含任何DROP/DELETEDrop、alter drop、delete语句不允许6 操作数据条数1000条11 不支持多
13、表关联多表关联语句不支持2 文件编码格式设计要点 全球敏捷运维峰会 广州站0102050403解析SQLType根据数据库类型和SQL语句两个参数,解析出sql类型拆分SQL不同sql类型的语句,使用不同方法分解成若干小零件,最终组合成易于程序理解的JSON串静态检查对SQL文本解析出来的JSON串,根据预定义的规则进行检查,并返回检查结果及违规描述确认检查状态如果结果JSON串判断返回方式动态检查连接到数据库,对解析出来的JSON串,根据预定义的规则进行检查对比DB内的实际数据,返回检查结果及违规描述二、数据库发布工具二、数据库发布工具DBgoDBgo(5 5)SQLParser工具原理 全
14、球敏捷运维峰会 广州站预检查部分,静态检查:检查语法、语义等不连库的规则;动态检查:检查需要连库查的空间、性能等1.pre_check确定该语句是否需要备份2.backup确定该语句是否需要回滚4.rollback确定语句是否执行成功5.after_check二、数据库发布工具二、数据库发布工具DBgoDBgo(6 6)3.run按顺序执行语句工具流程二、数据库发布工具二、数据库发布工具DBgoDBgo(7 7)oraclecreate_tablestaticprecheck1 create_as_exist检查create table as select直接reject,由dba审核orac
15、lecreate_tablestaticprecheck2 owner_exist检查表名前面是否有属主前缀 CREATE TABLE UOPDATA.T_ABC若无,则rejectoraclecreate_tablestaticprecheck3 name_lowerline_exist检查表名是否至少包含一个_(规范)若无,则rejectoraclecreate_tablestaticprecheck4 key_exist检查主键是否存在 PRIMARY KEY(A),ALTER TABLE ADD CONSTRAINT PRIMRY KEY如不包含,则reject,可请dba审核是否豁免
16、oraclecreate_tabledynamicprecheck5 name_exist_indb检查库表、同义词、视图或物化视图在库级别是否存在对于表:1、本owner下存在,就reject2、其他owner下,则提示,进入dba审核对于同义词、视图或物化视图,存在则rejectoraclecreate_tablestaticprecheck6 tablespace_exist检查是否有tablespace语句,不可包含tablespace如包含,rejectoraclecreate_tablestaticprecheck7 initrans6_exist检查是否有initrans 6如不
17、是,则rejectoraclecreate_tablestaticprecheck8 varchar_over3col检查多余3个字段以上所有字段varchar/varchar2字段是否一样长如是,则rejectoraclecreate_tablestaticprecheck9 4keepcol_exist是否包含create_date,create_by,update_date,crete_by字段若不包含,则提示oraclecreate_tablestaticprecheck10 colnum_over100字段数量是否超过100超过,提示oraclecreate_tablestaticp
18、recheck11 varcol_over2wvarchar或varchar2总长度是否超过20000如超过,提示oraclecreate_tablestaticprecheck12 bloblong_exist判断是否包含blob,long类型如包含,则rejectoraclecreate_tablestaticprecheck13 clob_over2clob=2如超过2个,则reject,可请dba审核是否豁免oraclecreate_tablestaticprecheck14 foreign_uniq_check_const_exist判断是否包含外键、唯一、检查约束如包含,则reje
19、ct,请dba申请是否豁免oraclecreate_tablestaticprecheck15 default_null_exist判断是否包含default 和default null如包含,则reject,请dba申请是否豁免oraclecreate_tablestaticprecheck16 if_pk_notnull判断primary key是否定义成not null如未定义,则reject,可请dba审核是否豁免oraclecreate_tablestaticprecheck17 pk_name_prefix主键约束命名规则:pk_表名如是命名的primary key constra
20、int,若名称不以pk_开头,则rejectoraclecreate_tablestaticprecheck18 range_contain_inteval若是范围分区,且分区字段是date或timestamp类型,则必须包含interval,若无interval,则rejectoraclecreate_tablestaticprecheck19 list_contain_default若是list分区,则必须包含default分区若不包含,则rejectoraclecreate_tablestaticprecheck20 over_128若是hash分区,则必须是2的n次方幂,且不超过128
21、个若非n次方,或超过128个,则rejectoraclecreate_tablestaticprecheck21 notnull_set分区列必须定义成not null若非,则reject审核规则样例 全球敏捷运维峰会 广州站违规记录SQL审核记录SQL编码及创建审核工单SQM审核与优化未通过测试流程控制点SQM自动动态审核比对投产/运行审核记录比对EasyDB监控低效SQL测试阶段开发阶段生产阶段隐患SQL驳回DBA审批通过豁免规则开发处理未找到匹配记录创建生产缺陷工单提交审核未通过生成测试隐患SQL流程控制点流程控制点投产版本管理流程控制点工单关联版本DLM系统SQM系统EASYDB系统优
22、化通过三、SQL代码审核流程集成三三、SQSQMM审核规则举例审核规则举例创建好工单后,导入将要审核的SQL。可用直接添加SQL语句、excel文件格式、SQL*.sql文件格式、MyBatis xml格式和MyBatis zip压缩包文件格式导入,可参考模板格式。三三、SQSQMM审核工具审核工具:支持多种格式的:支持多种格式的SQLSQL导入导入三、三、SQL SQL审核工具:隐患审核工具:隐患SQLSQL监控监控03DevOps:面向运维打造融合不同DB类型的一站式数据库自动化运维平台DBDB自动化运维工具生态圈自动化运维工具生态圈DBDB自动化运维数据架构图自动化运维数据架构图 全球敏
23、捷运维峰会 广州站2、自动化运维海量数据库的运维,靠工具1,配置信息、监控报警配置信息是基石,标准化是基础监控报警的重点是如何避免遗漏、如何收敛3、自愈-AIops状态类、容量类的报警,实现自愈4,一站式查询DB10几种数据库、数千名开发运维人员,如何满足他们访问DB的日常需求 全球敏捷运维峰会 广州站监控大屏监控大屏 全球敏捷运维峰会 广州站敏捷入口敏捷入口 全球敏捷运维峰会 广州站2、自动化运维海量数据库的运维,靠工具1,配置信息、监控报警配置信息是基石,标准化是基础监控报警的重点是如何避免遗漏、如何收敛3、自愈-AIops状态类、容量类的报警,实现自愈4,一站式查询DB10几种数据库、数
24、千名开发运维人员,如何满足他们访问DB的日常需求 全球敏捷运维峰会 广州站 全球敏捷运维峰会 广州站 全球敏捷运维峰会 广州站2、自动化运维海量数据库的运维,靠工具1,配置信息、监控报警配置信息是基石,标准化是基础监控报警的重点是如何避免遗漏、如何收敛3、自愈-AIops状态类、容量类的报警,实现自愈4,一站式查询DB10几种数据库、数千名开发运维人员,如何满足他们访问DB的日常需求 全球敏捷运维峰会 广州站背景:目前对于日常告警的分析及消除,仍需要人工介入,存在夜间及节假日可能处理不及时、工具使用不熟练等人为原因造成处理延迟或引发生产故障的风险。为进一步深化自动化运维,并逐步向AIOps转型
25、,本项目在DBA已积累的日常运维经验知识库基础上,探索并实践基于决策树模型的故障自愈解决方案。本项目的主要目标是通过机器学习的方式,基于运维知识库,迭代生成数据库常见故障或告警的原因分析及告警消除的决策树,并通过调用一系列现有的集成工具接口实现故障的自愈操作以及告警的自我消除。主要过程:1)根据运维知识库的内容梳理形成常见故障的决策表;2)导入决策表并通过机器学习迭代生成决策树;3)对接kafka告警工作流,获取对应类型的紧急告警,触发自愈系统;4)通过对接一系列实时接口获取系统运行状态,组合生成测试集通过决策树获取解决方案及辅助根因分析;5)对接变更流程及自动化工具接口,对告警对象进行干预,
26、实现告警消除。AIOpsAIOps的一小步的一小步 全球敏捷运维峰会 广州站FRA使用率ARCH是否有空余空间DATA是否有空余空间备份是否成功是否有大量数据更新策略90%YesNoYYNoAction90%NoNoYNNoAction=90%YesYesNNIncrease-FRA&调起备份=90%NoYesYYMigrate_to_DATA&发送具体SQL=90%YesYesNNIncrease-FRA=90%NoNoYY调起备份&发送具体SQL以以OracleOracle数据库数据库FRAFRA区的空间使用率报警为例区的空间使用率报警为例 全球敏捷运维峰会 广州站 全球敏捷运维峰会 广州
27、站 全球敏捷运维峰会 广州站 全球敏捷运维峰会 广州站2、自动化运维海量数据库的运维,靠工具1,配置信息、监控报警配置信息是基石,标准化是基础监控报警的重点是如何避免遗漏、如何收敛3、自愈-AIops状态类、容量类的报警,实现自愈4,一站式查询DB10几种数据库、数千名开发运维人员,如何满足他们访问DB的日常需求 全球敏捷运维峰会 广州站问题背景1开发运营人员申请权限经理审批进入操作间登陆远程桌面打开客户端执行查询END问题描述:1、只读的用户,一月申请一次;非只读的,每次使用均需走一遍流程2、审批时效慢3、在工位上无法处理,要去操作间room4、不同种类数据库,打开不同terminal、不同
28、客户端5、只能做录屏、字符审计,无法做到结构化审计、不利于事后追查6、无容易做到表级的访问权限控制、敏感信息屏蔽登陆堡垒机 全球敏捷运维峰会 广州站功能需求2安全审计、操作日志、行为分析便于分析统计操作趋势等避免低效sql影响生产性能一站式的工具多种类型的库快速切换查询避免反复提单的工作量随时查询以方便工作支持 全球敏捷运维峰会 广州站 全球敏捷运维峰会 广州站 全球敏捷运维峰会 广州站 全球敏捷运维峰会 广州站04展望AI+DevOps 全球敏捷运维峰会 广州站1.运维不做背锅侠 变更要有回滚方案 生产要有应急预案 容量要有预测机制 工具要有防呆机制2.开发是友军 践行DevOps不是一句口号 运维要更多、更密切地跟开发并肩战斗 全球敏捷运维峰会 广州站THANK YOU!