线上变更规范
本规范旨在帮助开发人员逐步建立合理使用数据库的意识,对数据库相关的资源申请、业务规范使用等提供规范性的指导,从而为公司业务系统稳定、健康地运行提供保障。
[TOC]
线上变更规范
[强制] - 提交工单
生产和uat环境涉及数据库的变更流程,必须符合如下规范:
- 数据的增删改 必须提交工单,口头通知视为无效,可参考《阿里云-dms使用规范》或《华为云-das使用规范》
- 不便提交工单的变更,可发送邮件申请
[不推荐] - 邮件申请
邮件规范:
- 邮件发送给DBA,并抄送双方主管;
- 脚本必须格式清晰,方便DBA审阅;
- 脚本开头请注明数据库所在的域名或ip地址,以便DBA快速定位实例;
- 脚本开头请加上 USE xxx,以便DBA快速定位数据库;
- 脚本开头注明预计受影响的行数及耗时,涉及大批量数据更新的,必须先与DBA做沟通;
- 脚本中sql以分号隔开、不要有任何的注释;
- 脚本必须遵循相关的规范,否则DBA将直接打回;
- 脚本中必须写好备份及回滚语句,以便DBA快速执行;
- 禁止将数据备份到主库,可用bak工具库;
邮件模板:
Reason: 由于用户银行卡信息历史问题,需要更新银行的城市和真实姓名.
Server: 172.17.10.30
Result: 预计受影响1行,主管已审核
#.backup first
USE xxx;
CREATE TABLE bak.BankAccounts_20201208_yuxiukai LIKE BankAccounts;
INSERT INTO bak.BankAccounts_20201208_yuxiukai SELECT * FROM BankAccounts WHERE userid = 58464;
#.begin update
update BankAccounts set BankCityId = 261, RealName = '马云辉' where userid = 58464;
操作窗口的设定
随着公司业务的高速增长,数据库的数据量及访问压力都在不断增加,为保证系统稳定运行,对于后续数据库相关的线上变更将规定数据库操作窗口期,对线上一些危险系数较高的操作,DBA团队将全部放到操作窗口期内执行。
具体操作范围
操作类型 | 具体包括 |
---|---|
DDL | 新增字段或注释、删除字段或注释、变更字段类型、新增索引、重建索引、删除索引、字符集变更等 |
DML | 大表或核心业务表的数据清洗、数据导入导出等 |
操作窗口期规定
- 普通业务表:晚上21点后
- 大表或访问压力大的表:凌晨时间段(研发或业务同事给出业务低峰期)。
说明:对于大表或核心业务表的变更需要研发同事梳理影响范围并提前通知到相关的业务方,并需要在操作时对线上业务做实时监控。
关于大表或核心业务表的说明
- 数据量超过1000万或者占用空间超过5G。
- 涉及核心业务的库表,如交易业务、用户等(需要由研发或业务同事明确告知DBA团队)。
特殊情况
特殊情况包括
- 需要紧急上线的业务需求。
- 线上生产环境出现紧急问题依赖相关DDL操作解决的。
说明:对于上述特殊情况,流程规范同运维紧急发布规范,除正常工单之外请另起邮件申请并抄送Team Leader、主管业务的研发总监、DBA团队、运维团队、SQA团队,经Team Leader、总监审批同意,DBA团队进行合理性评估后,方可在线上执行。
敏感数据的线下拉取
针对 >1000条 敏感数据的线下拉取,必须经由研发总监、安全、内审等同事的邮件确认之后,再由DBA对数据进行openssl加密之后,将压缩文件和密码单独发送给需求方。相关加密手段及方案如下:
数据保护措施
加密方式:
- 加密:openssl enc -aes-256-cbc -in abc.txt -out abc.jiami
- 解密:openssl enc -aes-256-cbc -d -in abc.jiami -out abc.txt
- 密码:**
文件传输过程
- DBA:将原始txt文件通过 OPENSSL AES-256-DBC 加密[1],密码长度16位,包含大小写+特殊字符;
- DBA:将加密后的文件提供给pm,将密码[1]通过企业微信告知;
- PM:若要提供给第三方,由pm将加密后的文件用rar压缩,压缩过程设置密码[2]。此时,密码[1]由DBA直接告知外部客户(不再告知pm),pm再将密码[2]和rar文件发送给第三方;
第三方运维拿到加密文件后
- 下载加密的rar包;
- 利用pm提供的rar密码,完成rar解压;
- 利用dba提供的openssl密码,完成txt解密;
附:openssl解密可参考:openssl enc -aes-256-cbc -d -in abc.jiami -out abc.txt