1.项目开发制度流程
办公司开发环境----办公测试环境----IDC测试环境----IDC正式环境,通过这种较完善的项目开发制度及流程控制能防止潜在的问题隐患发生
2.数据库更新流程
开发人员提交需求----开发主管审核----部门领导审核----DBA(运维)审核执行项目开发制度及流程控制的数据库更新步骤(每个步骤都要测试),最后在IDC正式环境执行
3.DBA参与项目数据库设计
在项目开发环节上,DBA或资深运维人员最好参加数据库设计与审核工作,这样可以从源头上减少降低不良的数据设计及不良SQL语句发生,还可以做所有语句的审核工作,包括select,但是这个需要评估工作量是否允许,一般的互联网公司实施全审核比较困难。
4.各种操作申请流程
1.开发等人员权限申请流程
2.数据库更新执行流程
3.烂SQL语句计入KPI考核
5.定制对内部人员培训
定期给开发及相关人员培训,目的还是从源头上降低不良数据库设计及不良SQL语句的发生,并通过培 训让大家知晓大家数据库性能的重要性,让他大家提升开发时照顾数据库性能的意识。
1.数据库设计规范及制度。
2.SQL语句执行优化,性能优化技巧等
3.数据库架构设计等内容。
6.账户权限控制
内部开发等人员权限分配
1)权限申请流程要设置规范、合理,让需求不明确者知难而退(比如老男孩老师的曽经公司开发就有上百人)
2)办公开发和测试环境可以放开权限,idc测试和正式环境要严格控制数据库写权限,并且读权限和对 外业务服务离。
3)开发人员正式环境数据库权限分配规则:给单独的不对外服务的正式从库只读权限,不能分配线上 正式主库写权限
4)特殊人员(如领导),需要权限时,我们要问淸楚他做什么,发邮件回复,注明用户名、密码、权 限范围,多提醒操作注意事项,如果有可能由DBA人员代替其操作。
5.特权账号(allprivliges),由DBA控制,禁止在任何客户端上执行特权账号操作(如只能localhost,或其他策略)
7.web账户权限分配制度
1.写库账号默认权限为select,insert, update, delete。不要给建表改表(create, alter)等的权限, 更不能all权限
2.读库帐号默认权限为select (配合mysql read-only参数用)。确保从库对所有非super权限是只读的
3.最好专库专账号,不要一个账号管理多个库。碎库特别多的小公司根据情况特殊对待处理。
4.如果是lamp, lnmp—体在一台服务器的环境,db权限主机要设置为localhost,避免用root用户 作为web连接用。
5.web和数据库分离的服务器的授权可以根据web服务数量多少按IP或网段来授权。
6.安全性和管理方便,总是互相矛盾的,需要达到一个较好平衡状态,如何平衡就要根据具体公司和 业务来衡量了。
停留在世界边缘,与之惜别