数据库工单模块设计
一 功能:为研发提供自审核执行,加快应用上线速度,减轻DBA的工作量二 核心工具:inception三 环境: test 测试环境 beta 预发环境 online 线上环境四 设计 一 权限设计 1 按照组分类,每组成员可以查询相应的线上从库数据 2 按照组分类,每组组长能审批各组成员具体sql,并且执行 二 事务相关 1 sql预处理 1 格式化sql本身,美化输出,可以对sql语句的标点符号处理 2 sql语法校验,可以查看是否sql本身语法合法 3 单表多DDL的语句合并 这里推荐soar工具,能实现以上功能 2 sql事务提交 1 提供DML事务提交审核,提交给相应组长 三 DDL语句 1 操作目标过滤 1 create 建表,可交与研发执行建表操作,一旦经过审核,便可执行,对线上影响不大 2 alter 更改表,inception会调用percona操作对大表进行处理,理论上也没问题 2 相关功能 DDL的问题 1 警告功能:由于DDL操作对数据库压力可能会很大,所以要制定数据库负载检测功能,当数据库负载高于一个制定阈值时,提出警告,告知研发者 2 进度条功能:DDL操作提供执行进度条,可供研发者观察进度,当长时间不动时需要联系DBA进行数据库进行观察 3 DDL合并功能:一定要使用sql预处理合并多DDL单表的语句,能减少操作的成本 3 其他操作 对于drop truncate等功能,建议由DBA进行执行 四 数据字典 1 汇总线上所有库表和对应关系,形成可快速定位目标 2 自动扫描 当数据库库表变更时触发对数据字典进行更新,保证数据字典的最新有效 五 回滚语句 1 通过inception备份库进行查询回滚语句,展示在前端 2 通过回顾语句进行执行进行数据修复 六 账号功能 1 当研发执行完sql语句需要验证数据时建议提供一个主库查询账号 因为一般大批量的sql工单处理完时从库都会有延迟,这个主库查询账号由各组组长负责,进行功能验证七 思考问题 1 inception问题 1 不合规的sql可能包括哪些方面 对于事务操作,影响和扫描行数过多,但是又有特殊需求 对于DDL操作, 建表不符合规范,但是又有特殊需求 2 如果研发提出的sql平台无法通过,有两个解决办法 1 对于 事务操作利用主键拆分,进行批量执行 2 对于 建表操作,建议绕过平台执行七 线上实施的问题 1 一定要保证 测试 预发和线上的审核规则统一 2 和研发多沟通,制定一个严格但是能符合实际的sql审核规范,确保业务正常发布 3 工单的提交一定要DML操作和DDL操作进行拆分分别执行4 制定一个使用规范,放置在平台上,供研发进行观看
八 总结 暂时就想到这么多,有问题再补充