数据库管理规范
数据库管理规范

数据库管理规范一、概述数据库管理规范是为了保证数据库系统的高效、安全、可靠运行而制定的一系列规范和标准。
本文将从数据库设计、权限管理、备份与恢复、性能优化等方面详细介绍数据库管理规范的要求和操作流程。
二、数据库设计规范1. 数据库命名规范- 数据库名应简洁明了,能够准确描述其所存储的数据内容。
- 数据库名使用小写字母,可以使用下划线作为分隔符。
- 避免使用数据库系统保留的关键字作为数据库名。
2. 表设计规范- 表名应具有描述性,能够清晰表达其所存储数据的含义。
- 表名使用小写字母,可以使用下划线作为分隔符。
- 表名避免使用数据库系统保留的关键字作为表名。
- 表中的字段名应具有描述性,能够清晰表达字段所存储数据的含义。
- 字段名使用小写字母,可以使用下划线作为分隔符。
- 字段名避免使用数据库系统保留的关键字作为字段名。
3. 数据类型选择- 根据数据的实际需求,选择合适的数据类型,避免浪费存储空间和性能。
- 避免使用过长的数据类型,例如使用INT代替BIGINT等。
4. 索引规范- 根据查询需求和数据量,合理选择索引类型和字段。
- 避免过多的索引,以免影响插入和更新操作的性能。
- 定期检查和优化索引,确保其有效性和性能。
三、权限管理规范1. 用户权限管理- 为每个用户分配最小权限原则,避免用户拥有不必要的权限。
- 定期审查和更新用户权限,确保权限的合理性和安全性。
- 禁止使用默认或弱密码,要求用户使用强密码并定期更换。
2. 角色权限管理- 根据用户的职责和权限需求,设定不同的角色。
- 角色应具有清晰的权限范围和权限等级,避免权限冲突和滥用。
- 定期审查和更新角色权限,确保权限的合理性和安全性。
3. 数据库审计- 启用数据库审计功能,记录用户的操作和访问日志。
- 定期审查和分析审计日志,发现异常操作和安全风险。
四、备份与恢复规范1. 定期备份- 根据业务需求和数据变更频率,制定合理的备份策略。
- 定期对数据库进行全量备份和增量备份,确保数据的完整性和可恢复性。
数据库管理规范

数据库管理规范一、概述数据库管理规范是为了确保数据库的安全、高效和可靠运行而制定的一系列规定和标准。
本文将详细介绍数据库管理规范的内容,包括数据库的命名规范、备份和恢复策略、权限管理、性能优化等。
二、数据库命名规范1. 数据库的命名应具有可读性和易于理解性,采用故意义的名称,避免使用简单的缩写或者无意义的字符组合。
2. 数据库的命名应该使用小写字母,单词之间可以使用下划线或者驼峰命名法进行分隔。
3. 数据库的命名应该避免使用特殊字符和空格。
三、备份和恢复策略1. 定期备份数据库是保证数据安全的重要措施。
建议每天进行全量备份,并根据需求进行增量备份。
2. 备份文件应存储在不同的物理设备上,以防止硬件故障导致数据丢失。
3. 定期测试数据库的备份和恢复过程,确保备份文件的完整性和可用性。
4. 对于重要的数据库,可以考虑使用灾备方案,将备份数据存储在远程地点,以防止灾难性故障。
四、权限管理1. 严格控制数据库的访问权限,只授权给需要访问数据库的用户。
2. 为每一个用户分配最小权限原则,避免过高的权限赋予造成安全风险。
3. 定期审查和更新用户权限,及时删除再也不需要访问数据库的用户账号。
4. 对于敏感数据,可以采用加密措施,确保数据的机密性。
五、性能优化1. 定期监控数据库的性能,包括查询响应时间、数据库连接数、磁盘空间使用等指标。
2. 根据监控结果进行性能优化,如索引优化、查询优化等。
3. 避免频繁的长事务和大事务,以减少数据库锁定和资源竞争。
4. 定期清理无用的数据和日志,以减少数据库的存储空间占用。
六、安全措施1. 定期更新数据库软件和补丁,确保数据库的安全性。
2. 启用防火墙和访问控制列表,限制数据库的访问来源。
3. 对数据库进行加密,保护数据的机密性。
4. 定期进行安全审计,发现并修复数据库的安全漏洞。
七、容灾和恢复1. 建立容灾计划,包括备份和恢复策略、灾难恢复测试等。
2. 定期进行灾难恢复演练,确保在灾难事件发生时能够快速恢复数据库。
数据库管理规范

数据库管理规范一、引言数据库是现代信息系统中重要的组成部份,对于数据的管理和维护至关重要。
为了保证数据库的安全性、稳定性和高效性,制定数据库管理规范是必要的。
本文旨在规范数据库管理的各项工作,确保数据库的正常运行和数据的完整性。
二、数据库命名规范1. 数据库名称应具有描述性,能够清晰地反映其所存储的数据内容。
2. 数据库名称应使用小写字母,不使用特殊字符和空格。
3. 数据库名称长度不超过50个字符。
三、表命名规范1. 表名称应具有描述性,能够清晰地反映其所存储的数据内容。
2. 表名称应使用小写字母,不使用特殊字符和空格。
3. 表名称长度不超过50个字符。
4. 表名称采用单数形式。
四、字段命名规范1. 字段名称应具有描述性,能够清晰地反映其所代表的含义。
2. 字段名称应使用小写字母,不使用特殊字符和空格。
3. 字段名称长度不超过30个字符。
4. 字段名称采用下划线分隔,例如:first_name。
五、数据类型规范1. 根据实际需求选择合适的数据类型,避免数据类型过大或者过小。
2. 尽量使用标准的数据类型,避免使用数据库特定的数据类型。
3. 在设计表结构时,考虑到数据的存储和查询效率,选择合适的数据类型。
六、索引规范1. 根据实际需求选择合适的字段创建索引,以提高查询效率。
2. 避免过多的索引,过多的索引会增加数据库的维护成本。
3. 定期对索引进行优化和重建,以保持索引的有效性。
七、数据备份规范1. 定期进行数据备份,以防止数据丢失或者损坏。
2. 数据备份应包括数据库结构和数据内容。
3. 数据备份的频率根据数据的重要性和变动情况来确定。
八、数据恢复规范1. 定期测试数据库的恢复能力,以确保在发生故障时能够及时恢复数据。
2. 对于重要的数据,可以使用冷备份、热备份和增量备份等多种备份策略。
3. 在进行数据恢复时,必须进行验证和测试,确保数据的完整性和正确性。
九、安全性规范1. 限制数据库的访问权限,只允许授权的用户进行访问和操作。
数据库管理规范

数据库管理规范引言概述:数据库管理规范是指在数据库设计、创建、维护和使用过程中应遵循的一系列规则和标准。
遵循数据库管理规范能够提高数据库的性能、安全性和可靠性,确保数据库的有效管理和使用。
本文将从数据库设计、备份与恢复、安全性、性能优化和维护五个方面详细阐述数据库管理规范的内容。
一、数据库设计1.1 数据库结构设计- 确定数据库的实体和关系,进行概念模型设计。
- 设计合理的表结构,避免冗余和重复数据。
- 设计适当的主键和外键,确保数据完整性和一致性。
1.2 数据库字段设计- 根据实际需求选择合适的数据类型和长度,避免浪费存储空间。
- 设置字段约束,限制数据的取值范围和格式。
- 为字段添加注释,提高代码的可读性和维护性。
1.3 数据库索引设计- 根据查询需求设计合理的索引,提高查询性能。
- 避免过多的索引,减少数据库的存储空间和维护成本。
- 定期对索引进行优化和重建,保持索引的有效性和性能。
二、备份与恢复2.1 定期备份数据库- 制定合理的备份策略,包括全量备份和增量备份。
- 选择合适的备份工具和存储介质,确保备份的可靠性和安全性。
- 定期测试备份的完整性和可恢复性,保证备份的有效性。
2.2 灾难恢复计划- 制定灾难恢复计划,包括备份数据的恢复流程和步骤。
- 定期演练灾难恢复计划,确保在紧急情况下能够快速恢复数据。
- 存储备份数据的地点要与数据库服务器分离,防止同时遭受灾难。
2.3 监控与报警- 监控数据库备份的执行情况,及时发现备份失败或者异常情况。
- 设置合理的报警机制,及时通知管理员备份异常情况。
- 定期检查备份日志,确保备份的完整性和可靠性。
三、安全性3.1 用户权限管理- 为每一个用户分配合适的权限,避免数据泄露和非法操作。
- 定期审查和更新用户权限,确保权限的合理性和安全性。
- 禁止共享账号和密码,每一个用户使用独立的账号进行操作。
3.2 数据加密- 对重要的敏感数据进行加密存储,保护数据的机密性。
数据库管理规范

数据库管理规范引言概述:数据库管理规范是指在进行数据库设计、建立和维护过程中,遵循一定的标准和规范,以保证数据库的高效性、可靠性和安全性。
本文将从六个大点阐述数据库管理规范的重要性和具体内容。
正文内容:1. 数据库设计规范1.1 数据库结构设计- 合理划分表和字段,避免冗余和过度设计。
- 设计适当的主键和外键,确保数据的完整性和一致性。
- 使用规范的命名规则,方便维护和理解。
1.2 数据类型和长度选择- 根据实际需要选择合适的数据类型和长度,减少存储空间的浪费。
- 避免使用过长或过短的数据类型,提高查询效率。
1.3 索引设计- 根据查询需求合理创建索引,加快查询速度。
- 避免创建过多的索引,降低写操作的性能。
2. 数据库建立规范2.1 安全设置- 给数据库和表设置合适的权限,限制用户的访问和操作范围。
- 设置合适的密码策略,防止未授权访问。
2.2 数据备份和恢复- 定期进行数据备份,确保数据的安全性和可靠性。
- 测试备份的恢复过程,以防止意外情况下的数据丢失。
2.3 数据库性能调优- 监控数据库的性能指标,及时发现和解决性能问题。
- 优化查询语句和索引,提高数据库的响应速度。
3. 数据库维护规范3.1 定期清理无用数据- 删除过期数据和无效数据,减少数据库的存储空间。
- 清理日志文件和临时文件,提高数据库的性能。
3.2 定期更新和升级- 及时安装数据库的补丁和更新,修复已知的安全漏洞。
- 考虑升级数据库版本,以获得更好的性能和功能。
3.3 监控和预警- 设置合适的监控工具,实时监控数据库的运行状况。
- 配置预警机制,及时发现并解决潜在的问题。
总结:数据库管理规范是确保数据库高效、可靠和安全运行的重要保证。
通过合理的数据库设计、建立和维护,可以提高数据库的性能和可靠性,减少数据丢失和安全风险。
同时,定期的备份和维护工作可以保证数据库的持续可用性。
因此,遵循数据库管理规范是数据库管理人员必须要重视和遵守的。
数据库管理规范

数据库管理规范标题:数据库管理规范引言概述:数据库管理规范是确保数据库系统正常运行和数据安全的重要指南。
通过采取一系列的规范和最佳实践,可以提高数据库的性能、可靠性和安全性。
本文将从五个方面详细阐述数据库管理规范。
正文内容:1. 数据库设计规范1.1 表设计规范- 使用适当的数据类型和字段长度,避免浪费存储空间。
- 设计合理的主键和外键,确保数据关系的完整性。
- 使用标准的命名规范,方便维护和理解数据库结构。
1.2 索引设计规范- 根据查询需求和数据访问模式,选择合适的字段作为索引。
- 避免创建过多的索引,以减少维护开消和提高写入性能。
- 定期优化和重建索引,以保证查询性能。
1.3 视图和存储过程规范- 使用视图简化复杂查询,提高查询效率和代码复用。
- 使用存储过程实现业务逻辑,增加数据安全性和可维护性。
- 定期检查和更新视图和存储过程,确保其与底层数据的一致性。
2. 数据库访问规范2.1 用户权限管理规范- 为每一个用户分配适当的权限,限制其对数据库的访问和操作。
- 定期审查和更新用户权限,确保权限的合理分配和数据的安全性。
- 记录和监控用户的数据库操作,及时发现和阻挠潜在的安全威胁。
2.2 数据备份和恢复规范- 定期备份数据库,保护数据免受硬件故障、人为错误和灾难性事件的影响。
- 测试和验证备份的可用性,以确保数据能够及时恢复。
- 制定详细的恢复计划,包括恢复时间目标(RTO)和恢复点目标(RPO)。
2.3 数据库性能优化规范- 监控数据库的性能指标,如响应时间、吞吐量和并发连接数。
- 定期进行性能调优,包括索引优化、SQL优化和硬件优化。
- 优化数据库配置参数,以适应不同的工作负载和访问模式。
3. 数据库安全规范3.1 数据加密规范- 使用适当的加密算法和密钥管理策略,保护敏感数据的机密性。
- 加密数据库备份和传输过程中的数据,防止数据泄露。
- 定期更新加密算法和密钥,以保持数据的安全性。
数据库运行管理规范

数据库运行管理规范篇一:数据库管理制度数据库管理制度第一章总则第一条为加强天津中诚资信评估(以下简称“公司”)数据库管理,保障评级数据库正常、有效运行,确保数据库安全,使数据库能更好地服务于评级工作,特制定本管理制度。
第二条公司系统管理员负责评级数据库的日常维护和运行管理。
第三条公司总经理负责对数据库使用者进行权限审批。
第二章数据的录入第四条各业务部门的评级分析师负责评级数据库的数据录入工作,部门负责人为本部门评级业务数据录入工作的责任人。
第五条评级项目组负责人是其负责项目的评级信息录入工作的责任人。
评级项目组在现场考察和访谈结束后5个工作日内,应将该评级项目的相关评级信息输入评级数据库。
跟踪评级时资料有更新的,应在跟踪评级工作结束前将更新资料录入数据库。
在资料归档前,评级项目负责人应对录入的数据资料进行格式和内容核查。
第六条录入的数据源主要包括宏观经济信息、行业信息、发行人基本信息、证券的基本信息、发行人生产经营情况和财务数据等,其中发行人基本信息和财务数据是必须录入的数据。
第七条数据库数据应严格按系统管理员下发的录入模板标准进行采集和录入。
第三章数据库的使用第八条根据评级业务对数据库用户管理的要求,公司应制定数据库用户管理制度和数据库操作规程。
第九条根据公司总经理授权,数据库用户权限级别分三种:普通用户、录入用户、高级用户。
第十条普通用户拥有查询、浏览、使用数据库中公开发布的各类数据的权利。
第十一条录入用户除拥有普通用户权限外,拥有录入数据和修改本人录入的数据的权利。
第十二条高级用户除具有录入用户的权限外,经授权还具有修改本部门数据的权限。
第十三条根据工作需要经公司总经理批准用户权限级别可变更。
特殊用户的权限设置应由公司总经理批准。
第十四条系统管理员负责按审批规定办理具体用户的授权、变更权限和注销等管理工作。
第十五条用户的密码管理应遵循如下规定:用户密码必须通过复杂性检验,位数不少于6位,并不得以数字开头;密码应定期更改;用户名和密码为个人专用,不得泄露给他人,特殊情况需要他人以自己的用户名和密码进入数据库时,应取得部门负责人同意,并在工作完成后及时修改密码。
数据库安全管理规范

数据库安全管理规范数据库是现代信息系统的重要组成部分,它存储并管理着各种重要的数据信息。
为了保护这些数据的机密性、完整性和可用性,数据库安全管理显得至关重要。
本文将介绍一些数据库安全管理规范,以确保数据在存储和使用过程中的安全性。
一、访问控制1. 用户权限管理为了限制数据库的访问权,应该对用户进行统一管理并分配相应的权限。
管理员应该根据用户的职责和需要,为其赋予最小化权限,减少潜在的风险。
同时,每个用户的权限应在必要时进行审查和更新。
2. 角色管理通过角色的方式进行权限管理是一种高效的方法。
管理员可以根据用户的职责、部门等设置相应的角色,并将权限分配到角色上,而不是直接分配给个人用户。
这样可以简化权限管理,降低出错率。
3. 口令策略对于数据库的登录口令,应要求用户使用复杂且不易被猜测的密码。
口令应定期更换,并且不允许使用过于简单的口令。
此外,还可以采用多因素身份验证方式,提高账户的安全性。
二、数据加密1. 数据传输加密在数据传输过程中,特别是通过网络进行传输时,应采用加密协议,如SSL/TLS协议等。
这样可以保证数据传输的机密性,防止数据被恶意窃取或篡改。
2. 数据存储加密对于数据库中重要的敏感数据,可以采用加密算法进行存储加密。
加密后的数据即使在被非法获取的情况下,也无法直接读取其内容。
同时,对于数据库备份等操作,也需要采用相应的加密方式保护数据的安全。
三、漏洞管理1. 定期更新与补丁管理数据库厂商会不定期发布各种漏洞修复补丁,管理员应及时关注并进行修复。
同时,还要定期对数据库进行版本升级,以利用最新的安全技术和措施。
2. 审计日志管理数据库应开启审计日志功能,对用户的操作进行记录和审计。
通过审计日志,可以及时发现并追踪异常操作,保障数据库的安全。
3. 异常检测与防护管理员需要配置合适的安全策略和防火墙等设备,对数据库进行异常检测与防护。
当发现异常操作或攻击事件时,应及时发出警报并采取相应的措施。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库管理规范版本号:V1.0信息科2017年4月数据库管理规范1 规范说明 (3)2 维护管理安全规范 (3)3设计规范 (4)4. SQL编写规范 (7)5. 数据库备份与恢复策略规范 (8)6开发测试与上线安全规范 (10)7 监控 (10)8连接池使用规范 (11)9 数据库重要级别划分 (11)10 数据库安装规范 (12)11 业务上线数据库部分规范 (13)1 规范说明本规范是针对数据库使用,维护管理,设计开发等。
2 维护管理安全规范2.1数据库版本使用规范【强制】MYSQL使用5.6.39社区版本2.3数据库账户安全与管理规范2.3.1 密码安全【强制】●密码不少于8位,应包含数字,字母,字符●密码不应该和用户名一致●删除数据库默认空用户账户●必须修改root密码2.4账户安全管理【强制】●为应用程序设立独立访问账户●禁止开发工程师通过应用帐号登录生产数据库●禁止QA申请线上账号与使用账号登陆线上环境进行测试●数据库只有root用户具有最高管理权限●备份数据库用户要单独建立,并专属备份恢复操作●数据库安装后删除或锁闭不需要使用的数据库账号●数据库管理员账户可以锁定和解锁其他用户●数据库管理账户在空闲5分钟以上会自动退出●数据库管理权限账号不能超过2个2.5数据库日志管理规范【强制】windows、linux 下的日志管理●Windows系统应开启日志功能,记录系统和系统中各个进程的相关信息●linux的操作系统要开启系统日志●Mysql数据库如果使用了innodb引擎必须打开二进制日志●Mysql必须打开慢日志,并且将慢日志阀值设置为1-2秒之间●对Mysql的错误日志等要进行定期查看,定期清理和定期备份管理2.6数据库架构规范【强制】2.6.1 mysql数据库高可用●MYSQL 采用复制+第三方心跳软件或者第三方集群架构(经测试后)实现近7X24小时高可用性要求,数据库架构必须能够实现故障自动迁移,满足业务7X24小时持续服务要求3设计规范3.1命名规范【强制】3.1.1表的命名表的名称在T_后增加一个或者多个后缀,表名、字段名必须使用小写字母或数字;禁止出现数字开头,禁止两个下划线中间只出现数字。
数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑。
3.1.2视图命名:V_相关表名(或者根据需要另取名字)3.1.3存储过程命名:PRO_存储过程名(用英文表达存储过程意义)3.1.4函数命名:FUN_函数名称(用英文表达函数作用)3.1.5触发器命名:TRI_触发器名称(用英文表达触发器作用)3.1.6索引命名:I_表名_字段名(如果存在多字段索引,取每字段前三个字符加下划线组合,如:在hyid,hyname,hymobile上建立联合索引,命名:I_表名_hyi_hyn_hym,如果前三个截取字符相同,就从字段名称中不同的字符开始取三个字符加下划线组合,如:在 zhyid,zhyname,zhymobile上建立联合索引,命名:I_表_id_nam_mob)3.1.7唯一索引命名:UI_表名_字段名(如果存在多字段唯一索引,取每字段前三个字符加下划线组合,如:在hyid,hyname,hymobile上建立唯一索引,命名:UI_表名_hyi_hyn_hym,如果前三个截取字符相同,就从字段名称中不同的字符开始取三个字符加下划线组合,如:在zhyid,zhyname,zhymobile上建立唯一索引,命名:UI_表_id_nam_mob)3.1.8主键命名:PK_表名_字段名(如果存在多字段主键,取每字段前三个字符加下划线组合,如:在hyid,hyname,hymobile上建立主键,命名:PK_表名_hyi_hyn_hym,如果前三个截取字符相同,就从字段名称中不同的字符开始取三个字符加下划线组合,如:在zhyid,zhyname,zhymobile上建立主键,命名:PK_表_id_nam_mob)3.1.9外键命名:FK_表名_主表名_字段名3.1.10Sequence命名:SEQ_表名_列名(或者根据需要另取名字)3.2设计原则3.2.1表的设计●【强制】每个表,都必须要有主键。
主键是每行数据的唯一标识,保证主键不可随意更新修改,在不知道是否需要主键的时候,请加上主键,它会为你的程序以及将来查找数据中的错误等等,提供一定的帮助;●【强制】所有的MySQL数据库除历史原因外,都必须采用UTF8编码●【建议】一个表的某列与另一表有关联关系的时候,请在应用程序维护外键关系,如果在数据库建立外键约束请遵循以下几点:尽量少使用外键,在高并发下数据库会增加较大开销;不要以数据操作不方便为理由而不建外键。
加上外键以后,一些数据操作变得有些麻烦,但是这正是对数据一致性的保护以缺省的方式建立外键(即用delete restrict方式),以达到保护数据一致性的目的;●【强制】外键一定要建立索引。
●【建议】单表行数超过 500万行或者单表容量超过 2GB,才推荐进行分库分表3.2.2列的设计●【强制】字段命名必须用英文来定义,如果太长可用缩写;●【强制】相应类型数据存入相应类型字段(如:数字=>NUMBER,日期=>DATE,定长字符=>CHAR,变长字符=>VARCHAR2等)否则会自动进行不必要的类型转换,降低性能,破坏数据完整性●【强制】表达是与否概念的字段,必须使用 is_xxx的方式命名,数据类型是 unsigned tinyint( 1表示是,0表示否)●【强制】小数类型为 decimal,禁止使用 float和 double●【建议】varchar是可变长字符串,不预先分配存储空间,长度不要超过5000,如果存储长度大于此值,定义字段类型为 text,独立出来一张表,用主键来对应,避免影响其它字段索引效率●【建议】字段的宽度要在一定时间内足够用,但也不要过宽,占用过多的存储空间;●【建议】除非必要,否则尽量不加冗余列。
所谓冗余列,是指能通过其他列计算出来的列,或者是与某列表达同一含义的列,或者是从其他表复制过来的列等等。
冗余列需要应用程序来维护一致性,相关列的值改变的时候,冗余列也需要随之修改,而这一规则未必所有人都知道,就有可能因此发生不一致的情况。
如果是应用的特殊需要,或者是为了优化某些逻辑很复杂的查询等操作,可以加冗余列;3.2.3 索引的设计●【强制】业务上具有唯一特性的字段,即使是组合字段,也必须建成唯一索引●【强制】超过三个表禁止join。
需要join的字段,数据类型保持绝对一致;多表关联●【强制】查询时,保证被关联的字段需要有索引●【强制】在 varchar字段上建立索引时,必须指定索引长度,没必要对全字段建立索引,●【强制】页面搜索严禁左模糊或者全模糊,如果需要请走搜索引擎来解决●【强制】如果有 order by的场景,请注意利用索引的有序性。
order by 最后的字段是组合索引的一部分,并且放在索引组合顺序的最后,避免出现file_sort的情况,影响查询性能。
正例:where a=? and b=? order by c; 索引:a_b_c●【强制】建组合索引的时候,区分度最高的在最左边●【建议】性能测试阶段收集90%SQL后,统一设计建立索引●【建议】根据实际文本区分度决定索引长度。
说明:索引的长度与区分度是一对矛盾体,一般对字符串类型数据,长度为20的索引,区分度会高达90%以上,可以使用count(distinctleft(列名, 索引长度))/count(*)的区分度来确定。
4. SQL编写规范●【强制】禁止开发人员在SQL中添加Hint,Hint只能由DBA审核后添加。
●【强制】禁止使用悲观锁定,即读锁select …for update。
●【强制】禁止在开发代码中使用DDL语句,比如truncate,alter table …等。
●【强制】禁止使用与系统环境相关的mysql inside 函数,列如UUID(),USER(),sysdate()这些函数,这样可能会导致主从同步不一致。
●【强制】禁止在充当读角色的mysqld上执行写操作(写操作指update,delete,insert),因为可能导致同步中断或者数据不一致。
●【强制】不要使用count(列名)或count(常量)来替代count(),count()就是SQL92定义的标准统计行数的语法,跟数据库无关,跟NULL和非NULL无关。
●【强制】说明:count(*)会统计值为NULL的行,而count(列名)不会统计此列为NULL值的行●【强制】使用ISNULL()来判断是否为NULL值。
注意:NULL与任何值的直接比较都为NULL●【强制】禁止使用存储过程,存储过程难以调试和扩展,更没有移植性●【强制】在表查询中,一律不要使用* 作为查询的字段列表,需要哪些字段必须明确写明●【强制】表连接操作中,作为连接条件的字段的数据类型严格一致。
●【强制】如果表连接字段数据类型不一致,在SQL中用显示用类型转换,具体情况咨询DBA。
示例正确用法1:select col1, col2 from tbl1, tbl2where tbl1.col3 = tbl2.col4;其中“tbl1.col3”与“tbl2.col4”数据类型严格一致。
●【建议】必须正确开启事务并且显式关闭事务●【建议】使用域名连接数据库。
禁止线上应用使用IP地址连接数据库。
●【建议】in操作能避免则避免,若实在避免不了,需要仔细评估in后边的集合元素数量,控制在1000个之内。
●【建议】禁止DML语句的where条件中包含恒真条件(如:1=1)5. 数据库备份与恢复策略规范5.1 备份策略●数据库备份需要在本地,从库,存储至少三个地方保留,确保备份不丢失●数据库备份周期根据业务需求,默认采取每日备份,保留7天,每周周一备份,保留30天,每月一号备份,保留100天三个维度进行●数据库备份方式采取mysqldump方式进行每日备份或根据需要进行INNODB增量备份●数据库备份采取每天业务负载低峰时段的凌晨3-5点进行备份●数据库备份用户使用专有备份用户,权限仅仅为可以进行备份和恢复●数据库备份必须保留两个以上存储点,避免因误操作或磁盘损坏丢失备份文件●数据备份设置保留周期,周期以外的数据库备份文件视其需要进行刻盘归档处理●数据库备份采取每月定期验证备份文件有效性的验证测试备份脚本如下:#!/bin/bash#This is a ShellScript For Auto DB BackupDBName=xgw-global-10-BackupPath=/data/mysqlbak/daybakLogFile=/data/mysqlbak/daybak/db.logcd /data/mysqlbak/daybakNewFile=$DBName$(date +%Y%m%d-%H-%M).tar.gzDumpFile=$DBName$(date +%Y%m%d-%H-%M).sql#OldFile=$DBName$(date +%Y%m%d-%H-%M --date='7 days ago').tar.gz#if [ ! -d $BackupPath ]; thenmkdir $BackupPathfiecho "-------------------------------------------" >> $LogFileecho $(date +"%y-%m-%d %H:%M:%S") >> $LogFileecho "--------------------------" >> $LogFile#Delete Old Fileif [ -f $OldFile ]; thenrm -f $OldFile >> $LogFile 2>&1echo "[$OldFile]Delete Old File Success!" >> $LogFileelseecho "[$OldFile]No Old Backup File!" >> $LogFilefi# Create NewFileif [ -f $NewFile ]; thenecho "[$NewFile] The Backup File is exists,Can't Backup! "else/usr/local/mysql/bin/mysqldump --single-transaction -A --master-data=2 --opt --all-databases > $DumpFiletar czvf $NewFile $DumpFile >> $LogFile 2>&1echo "[$NewFile]Backup Success!" >> $LogFilerm -rf $DumpFilefiecho "-------------------------------------------" >> $LogFilecp /data/mysqlbak/daybak/$NewFile /data/dbbak/sitebak/ >> $LogFile 2>&1find /data/dbbak/sitebak/* -mtime +7 -exec rm -rf {} \;find /data/mysqlbak/daybak/* -mtime +7 -exec rm -rf {} \;5.2 恢复策略●数据库恢复采取专有数据库恢复账号进行●数据库恢复要先制定失败回退计划并保证其可行●数据库如果是对已有业务数据库换进行时,必须先对现有数据库环境进行备份●数据库恢复必须进行测试验证●数据库恢复后要进行全面的数据和业务验证●数据库恢复成功后,必须立即及逆行那个一次全面的数据库备份6开发测试与上线安全规范●开发测试期间,数据库由DBA维护,所有开发账号由DBA统一建立,开发人员拥有数据库的增删改查以及库结构表结构变更权限●测试完毕正式上线前,由DBA统一进行数据库结构及数据上线部署,所有数据库权限统一收回并按照实际需求进行授权部署●生产数据库中应用程序账号只赋予最小增删改查权限,不赋予变更数据库设置库结构以及表结构权限,只有DBA具有最高权限●生产数据库任何库结构表结构索引结构以及数据库对象建立删除修改都需要经过DBA操作7 监控●【强制】所有生产库必须加入监控系统,不加入监控系统不得上线生产●【强制】MYSQL监控项有CPU,内存,I/O,MYSQL进程,MYSQL复制状态,MYSQL复制延迟,MYSQL端口,MYSQL锁等待●【强制】MONGODB监控项有CPU,内存,I/O,MONGODB进程,MYSQL复制集状态,MONGODB端口8连接池使用规范●建议在性能测试阶段进行连接池最优设置●连接池必须开启autoconnect设置●最小连接数设置为50-100●最大连接数设置为500-1000●连接池idletime设置为10000-200009 数据库重要级别划分●目前根据数据库存储数据的安全重要程度暂时将数据库从高到低划分为三个级别(A级,B级,C级)10 数据库安装规范数据库安装一律采用解压安装方式,具体步骤如下:mkdir -p /data/mysql/datamkdir -p /data/mysql/logsgroupadd mysqluseradd -g mysql mysqlchown -R mysql:mysql /data/mysqlcd /usr/localtar -zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gzln -s mysql-5.6.36-linux-glibc2.5-x86_64 mysqlcd mysqlscripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data chown -R root .chown -R mysql datachgrp -R mysql .cp support-files/mysql.server /etc/rc.d/init.d/mysqldcp bin/mysql /usr/bin/chkconfig --add mysqld/etc/rc.d/init.d/mysqld start/usr/local/mysql/bin/safe_mysqld --skip-grant-tables &use mysqldelete from user where user='';use mysqlupdate er set password=password("root") where user="root";flush privileges;11 业务上线数据库部分规范●业务上线如果涉及数据库操作,需要提前半天邮件通知DBA有数据库操作,并且将升级的脚本发给DBA,由DBA进行审查●DBA审核后,如无问题先在预发布环境进行数据库升级,升级完通知业务部门进行预发布测试●业务部门测试没有问题后,由DBA在晚上升级时间点进行生产数据库升级。