### MySQL数据库使用规范详解 #### 一、概述 在企业级应用中,MySQL数据库作为重要的数据存储工具之一,其合理规范地使用对于保障系统的稳定性和提高运维效率至关重要。本规范旨在指导开发人员遵循最佳实践,避免不当操作带来的风险,确保数据库高效运行。 #### 二、数据库设计规范 1. **命名规范:** - DB和表的名字应控制在32个字符以内。 - 分库分表名称格式采用“库名_编号”|“表名_编号”。 2. **字符集设置:** - 创建数据库时明确指定字符集,例如:`CREATE DATABASE oa_gallery DEFAULT CHARACTER SET utf8;` 3. **注释与引擎:** - 创建的表必须添加comment。 - 显示指定engine类型,通常使用InnoDB。 4. **字段设置:** - 表内auto_increment列使用bigint类型。 - 对于选择度较小的列,建议使用tinyint或smallint类型。 - IP地址字段使用int类型,并利用INET_NTOA()和INET_ATON()函数进行转换。 - 所有字段必须为NOT NULL,若允许为空,则指定默认值。 5. **InnoDB表要求:** - 必须有主键列,且为主键自增长类型。 - 主键列禁止更新。 - 可以支持主键的删除操作。 6. **索引规范:** - 普通索引使用“idx_”开头,unique key使用“uq_”开头。 - 单个索引长度不超过64KB。 - 单个表上的索引个数不超过8个。 - 分区表的分区字段必须有索引,或者是组合索引的第一列。 - 分区个数不能超过1024,建议不超过12个。 - 单个分区表文件大小不能超过3GB。 7. **临时表与备份表:** - 临时表以“tmp_”开头,备份表以“bak_”开头。 - 定期清理临时表和备份表。 8. **字符集一致性:** - 数据库库表字符集与前端程序、中间件保持一致。 9. **其他注意事项:** - 禁止使用外键、临时表、视图、UDF、routine、trigger等特性。 - 不建议使用enum、set、blob、text等字段类型。 #### 三、安全规范 1. **账号权限管理:** - 生产环境程序账号权限必须分类: - 读写账号,实现读写分离。 - DDL账号。 - 具有特殊权限的账号,如replication client、show databases等。 - 监控和管理程序账号。 - 一个账号对应一个数据库模块,且账号名包含模块名。 - 禁止开发人员直接SSH登录DBA机器。 - 禁止程序账号具有file、super等高危权限。 2. **数据导入导出安全:** - 禁止程序使用LOAD DATA,改为使用LOAD DATA LOCAL。 - 若无LOAD DATA需求,则关闭服务器的--local-infile选项。 3. **账号命名规则:** - 临时账号包含“tmp”字样,线下账号包含“offline”等可识别字样。 - 同一集群内所有账号和密码必须统一。 - 新建账号、授权权限、修改密码必须使用GRANT语句。 - 收回权限必须使用REVOKE或DROP USER语句。 - 数据库参数old_passwords必须设为OFF。 #### 四、SQL编写规范 1. **SELECT语句:** - 禁止写SELECT *,明确指定查询字段。 - 不建议使用UNION,推荐使用UNION ALL,个数限制在7个以内。 2. **INSERT语句:** - 明确指定插入字段名称,避免使用INSERT...VALUES(...)形式。 3. **JOIN操作:** - 表JOIN数限制在3个以内。 - 不建议使用关联子查询。 - 禁止在DML语句中使用JOIN。 4. **IN语句:** - IN值列表限制在800以内。 5. **事务处理:** - 写入和事务发往主库,只读SQL尽量发往从库。 - DML语句必须有WHERE条件,并且使用索引查找。 - 事务涉及到的表必须全部是InnoDB表。 - 事务里批量更新数据需要控制数量,进行必要的程序或DB端sleep,做到少量多次。 6. **其他注意事项:** - 禁止使用EVENT。 - 禁止使用用户自定义变量。 - WHERE条件里的等号左右字段类型必须一致。 - 使用mysqldump和loaddata时必须显示指定字符集与数据库一致。 #### 五、集群部署规范 1. **授权一致性:** - 同一集群内授权必须全部一样。 2. **同步参数设置:** - 禁止使用REPLICATE-DO-DB和REPLICATE-IGNORE-DB,改用REPLICATE-WILD-IGNORE-TABLE。 3. **主从部署架构:** - 实现跨机房冗余。 - 集群各个实例要求位于不同C网段。 - 同一集群内MySQL实例版本必须一致。 - 主库的直接从库不超过14个,级联层不超过3层。 4. **监控与备份:** - 集群上线前必须部署监控,并验证有效性。 - 集群主从关键项必须监控。 - 集群日志若打开,必须定时切割和备份。 - 集群必须有备份,备份方法包括全备、增量备份、冷备、热备等。 5. **变更流程:** - 任何开发人员进行线上数据库变更,必须经过DBA审核。 - 任何人为发起的更改线上数据之前,必须先备份库表数据。 通过以上规范的实施,能够有效提升MySQL数据库的使用效率、安全性及稳定性,确保企业级应用的顺利运行。































剩余8页未读,继续阅读


- 粉丝: 128
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 如何通过东吴交易软件购买风险警示和退市整理.docx
- 进口木材电子商务及物流成本研究.docx
- 《数据库应用技术》复习资料.doc
- 智能家居安全监控系统设计.doc
- Android平台的校物多功能交易系统设计方案.doc
- 无线网络建设方案.docx
- 第7节网络文明与安全.doc
- 基于超星学习通平台的计算机应用基础教学研究.docx
- 基于自主学习的开放教育网络教学资源用户需求研究.docx
- 5G医疗保健中的区块链安全与隐私解决方案
- Orcad使用及原理图数据库建设维护技巧.ppt
- 网络视频监控打造平安体育场馆-公共场所其他.docx
- 基于单片机电容测量仪方案设计书.doc
- 浅析互联网+新媒体下的档案宣传工作.docx
- 密码学中加密算法的研究与实现.docx
- 网络犯罪的管辖问题研究.docx


