欢迎点开这篇文章,自我介绍一下哈,本人姑苏老陈 ,是一名JAVA开发老兵。
本文收录于 《MySQL数据库开发设计规范》专栏中,该专栏主要分享一些关于MySQL数据库开发设计相关的技术规范文章,定期更新,欢迎关注,谢谢 :-)
一、前言
在我们对数据库技术方案设计的时候,我们是否有自己的设计理念或者原则,还是更多的依据自己的直觉去设计,是否曾经懊悔线上发生过的一次低级故障,可能稍微注意点就可以避免,是否想过怎么才能很好的避免,规范的价值正是我们工作的检查清单,需要我们不断从错误中积累有效经验来指导未来的工作。
本文介绍MySQL数据库开发设计规范之行为流程规范。
PS:以下规范在大型互联网公司经过了充分的验证,尤其适用于并发量大、数据量大的业务场景。
二、行为规范
1.【强制】禁止使用应用程序配置文件内的数据库帐号手工访问线上数据库。
2.【强制】禁止非DBA对线上数据库进行写操作,提交的SQL语句必须经过测试;
说明:如果项目组没有配置专门的DBA,可以指定一个专门的主程或高级工程师负责;
3.【强制】禁止在线上做数据库压力测试;
4.【强制】禁止从测试、开发环境直连线上数据库;
5.【强制】禁止在主库进行后台统计查询操作,避免影响线上业务,可以在离线从库上执行;
三、流程规范
1.【强制】所有的建表需要确定建立哪些索引后才可以建表上线;
2.【强制】批量导入、导出数据需要DBA或相关人员进行审查,并在执行过程中观察服务运行情况;
3.【强制】禁止有super权限的应用程序账号存在;
说明:super权限是一种特殊的权限,具有最高级的权限级别,所以一般不能授予给应用程序;
4.【强制】在建新表加字段之前,要求至少要提前3天通知dba或相关人员进行评估、优化和审核;
5.【强制】隔离线上线下环境(开发测试程序禁止访问线上数据库);
6.【强制】在对大表做表结构变更时,如修改字段属性会造成锁表,并会造成从库延迟,从而影响线上业务,必须在业务低峰期执行,统一用工具pt-online-schema-change避免锁表且降低延迟执行时间;
说明:pt-online-schema-change 是一种无锁表修改表结构的工具;
7.【强制】批量更新数据,如update,delete 操作,需要DBA或相关人员进行审查,并在执行过程中观察服务运行情况;
8.【推荐】如果出现人为误操作导致数据丢失,需要恢复数据,请在第一时间通知DBA或相关人员,并提供准确时间,误操作语句等重要线索。
9.【强制】线上数据库的变更操作必须提供对应的回滚方案;
10.【强制】批量清洗数据,需要开发和DBA或相关人员共同进行审查,应避开业务高峰期时段执行,并在执行过程中观察服务状态;
11.【强制】数据订正如删除和修改记录时,要先select ,确认无误才能执行更新语句,避免出现误删除;
12.【推荐】所有的建表操作需要提前告知该表涉及的查询sql;
13.【推荐】所有的改表结构、加索引操作都需要将涉及到所改表的查询sql发出来告知DBA等相关人员;
14.【推荐】推广活动或上线新功能必须提前通知DBA进行流量评估;
15.【推荐】不在业务高峰期批量更新、查询数据库;
16.【推荐】核心业务数据库变更需在凌晨执行;
四、总结
以上介绍了软件项目中,数据库使用时,可以遵循的一些行为流程规范。希望对大家有帮助,谢谢 :-)
附本文参考资料:
- 阿里云官方知乎:https://www.zhihu.com/org/a-li-yun-97-77
- 阿里云开发者官方社区:https://developer.aliyun.com/
- 阿里开发者官方CSDN社区:https://blog.csdn.net/alitech2017?type=blog
- 阿里云云栖号CSDN:https://blog.csdn.net/yunqiinsight/category_10231626.html
- 阿里巴巴技术团队发布的《JAVA开发手册》泰山版
- 阿里云开发者官方微信公众号
如果您对文章中内容有疑问,欢迎在评论区进行留言,我会尽量抽时间给您回复。如果文章对您有帮助,欢迎点赞、收藏。您的点赞,是对我最大的支持和鼓励,谢谢 :-)