数据库管理规范.docx

上传人:b****1 文档编号:2964799 上传时间:2023-05-05 格式:DOCX 页数:13 大小:22.41KB
下载 相关 举报
数据库管理规范.docx_第1页
第1页 / 共13页
数据库管理规范.docx_第2页
第2页 / 共13页
数据库管理规范.docx_第3页
第3页 / 共13页
数据库管理规范.docx_第4页
第4页 / 共13页
数据库管理规范.docx_第5页
第5页 / 共13页
数据库管理规范.docx_第6页
第6页 / 共13页
数据库管理规范.docx_第7页
第7页 / 共13页
数据库管理规范.docx_第8页
第8页 / 共13页
数据库管理规范.docx_第9页
第9页 / 共13页
数据库管理规范.docx_第10页
第10页 / 共13页
数据库管理规范.docx_第11页
第11页 / 共13页
数据库管理规范.docx_第12页
第12页 / 共13页
数据库管理规范.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据库管理规范.docx

《数据库管理规范.docx》由会员分享,可在线阅读,更多相关《数据库管理规范.docx(13页珍藏版)》请在冰点文库上搜索。

数据库管理规范.docx

数据库管理规范

数据库管理规范

版本号:

V1.0

信息科

2017年4月

数据库管理规范

1规范说明3

2维护管理安全规范.3

3设计规范4

4.SQL编写规范6

5.数据库备份与恢复策略规范7

6开发测试与上线安全规范9

7监控9

8连接池使用规范10

9数据库重要级别划分.10

10数据库安装规范.11

11业务上线数据库部分规范12

1规范说明

本规范是针对数据库使用,维护管理,设计开发等。

2维护管理安全规范

2.1数据库版本使用规范【强制】

MYSQ使用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.1mysql数据库高可用

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索引命名:

1_表名_字段名(如果存在多字段索引,取每字段前三个字符加下划

线组合,如:

在hyid,hyname,hymobile上建立联合索引,命名:

I_表名_hyi_hyn_hym,如

果前三个截取字符相同,就从字段名称中不同的字符开始取三个字符加下划线组合,如:

在zhyid,zhyname,zhymobile上建立联合索弓丨,命名:

1_表_id_nam_mob)

3.1.7唯一索引命名:

Ul_表名_字段名(如果存在多字段唯一索引,取每字段前三个字

符加下划线组合,如:

在hyid,hyname,hymobile上建立唯一索引,命名:

Ul_表名

_hyi_hyn_hym,如果前三个截取字符相同,就从字段名称中不同的字符开始取三个字符加下划线组合,女口:

在zhyid,zhyname,zhymobile上建立唯一索引,命名:

Ul_表

_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.10Sequenee命名:

SEQ_I名—列名(或者根据需要另取名字)

3.2设计原则

3.2.1表的设计

【强制】每个表,都必须要有主键。

主键是每行数据的唯一标识,保证主键不可随意更新修改,在不知道是否需要主键的时候,请加上主键,它会为你的程序以及将来查找数据中的错误等等,提供一定的帮助;

【强制】所有的MySQL数据库除历史原因外,都必须采用UTF8编码

【建议】一个表的某列与另一表有关联关系的时候,请在应用程序维护外键关系,如

果在数据库建立外键约束请遵循以下几点:

尽量少使用外键,在高并发下数据库会增加较大开销;

不要以数据操作不方便为理由而不建外键。

加上外键以后,一些数据操作变得有些麻烦,但是这正是对数据一致性的保护

以缺省的方式建立外键(即用deleterestrict方式),以达到保护数据一致性的目的;

【强制】外键一定要建立索引。

【建议】单表行数超过500万行或者单表容量超过2GB,才推荐进行分库分表

3.2.2列的设计

【强制】字段命名必须用英文来定义,如果太长可用缩写;

【强制】相应类型数据存入相应类型字段(如:

数字=>NUMBER日期

=>DATE定长字符=>CHAR变长字符=>VARCHAR等)否则会自动进行不必要的类型转换,降低性能,破坏数据完整性

【强制】表达是与否概念的字段,必须使用is_xxx的方式命名,数据类

型是unsignedtinyint(1表示是,0表示否)

【强制】小数类型为decimal,禁止使用float和double

【建议】varehar是可变长字符串,不预先分配存储空间,长度不要超过5000,如果存储长度大于此值,定义字段类型为text,独立出来一张表,

用主键来对应,避免影响其它字段索引效率

【建议】字段的宽度要在一定时间内足够用,但也不要过宽,占用过多的存储空间;

【建议】除非必要,否则尽量不加冗余列。

所谓冗余列,是指能通过其他列计算出来的列,或者是与某列表达同一含义的列,或者是从其他表复制过来的列等等。

冗余列需要应用程序来维护一致性,相关列的值改变的时候,冗余列也需要随之修改,而这一规则未必所有人都知道,就有可能因此发生不一致的情况。

如果是应用的特殊需要,或者是为了优化某些逻辑很复杂的查询等操作,可以加冗余列;

323索引的设计

【强制】业务上具有唯一特性的字段,即使是组合字段,也必须建成唯一索引

【强制】超过三个表禁止join。

需要join的字段,数据类型保持绝对一致;多表关联

【强制】查询时,保证被关联的字段需要有索引

【强制】在varchar字段上建立索引时,必须指定索引长度,没必要对全字段建立索引,

【强制】页面搜索严禁左模糊或者全模糊,如果需要请走搜索引擎来解决

【强制】如果有orderby的场景,请注意利用索引的有序性。

orderby最

后的字段是组合索引的一部分,并且放在索引组合顺序的最后,避免出现file_sort的情况,影响查询性能。

正例:

wherea=?

andb=?

orderbyc;索弓丨:

a_b_c

【强制】建组合索引的时候,区分度最高的在最左边

【建议】性能测试阶段收集90%SQI后,统一设计建立索引

【建议】根据实际文本区分度决定索引长度。

说明:

索引的长度与区分度是一对矛盾体,一般对字符串类型数据,长度为20的索引,区分度会高达90%以上,可以使用count(distinetleft(列名,索引长度))/count(*)的区分度来确定。

4.SQL编写规范

Hint只能由DBA审核后添加。

…forupdate。

【强制】禁止开发人员在SQL中添加Hint,

【强制】禁止使用悲观锁定,即读锁select

【强制】禁止在开发代码中使用DDL语句,比如truncate,altertable…等。

【强制】禁止使用与系统环境相关的mysqlinside函数,列如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:

selectcol1,col2fromtbl1,tbl2

wheretbl1.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

#ThisisaShellScriptForAutoDBBackup

DBName=xgw-global-10-

BackupPath=/data/mysqlbak/daybak

LogFile=/data/mysqlbak/daybak/db.log

cd/data/mysqlbak/daybak

NewFile=$DBName$(date+%Y%m%d-%H-%M).tar.gz

DumpFile=$DBName$(date+%Y%m%d-%H-%M).sql

#OldFile=$DBName$(date+%Y%m%d-%H-%M--date='7daysago').tar.gz

#

if[!

-d$BackupPath];then

mkdir$BackupPath

fi

echo"">>$LogFile

echo$(date+"%y-%m-%d%H:

%M:

%S")>>$LogFile

echo"">>$LogFile

#DeleteOldFile

if[-f$OldFile];then

rm-f$OldFile>>$LogFile2>&1

echo"[$OldFile]DeleteOldFileSuccess!

">>$LogFile

else

echo"[$OldFile]NoOldBackupFile!

">>$LogFile

fi

#CreateNewFileif[-f$NewFile];then

echo"[$NewFile]TheBackupFileisexists,Can'tBackup!

"else

/usr/local/mysql/bin/mysqldump--single-transaction-A--master-data=2

--opt--all-databases>$DumpFile

tarczvf$NewFile$DumpFile>>$LogFile2>&1echo"[$NewFile]BackupSuccess!

">>$LogFilerm-rf$DumpFile

fi

echo"

">>$LogFile

cp/data/mysqlbak/daybak/$NewFile/data/dbbak/sitebak/>>$LogFile2>&1find/data/dbbak/sitebak/*-mtime+7-execrm-rf{}\;

find/data/mysqlbak/daybak/*-mtime+7-execrm-rf{}\;

5.2恢复策略

数据库恢复采取专有数据库恢复账号进行

数据库恢复要先制定失败回退计划并保证其可行

数据库如果是对已有业务数据库换进行时,必须先对现有数据库环境进行备份数据库恢复必须进行测试验证

数据库恢复后要进行全面的数据和业务验证

数据库恢复成功后,必须立即及逆行那个一次全面的数据库备份

6开发测试与上线安全规范

开发测试期间,数据库由DBA维护,所有开发账号由DBA统一建立,开发人员拥有数据库的增删改查以及库结构表结构变更权限

测试完毕正式上线前,由DBA统一进行数据库结构及数据上线部署,所有数据库权限统

一收回并按照实际需求进行授权部署

生产数据库中应用程序账号只赋予最小增删改查权限,不赋予变更数据库设置库结构以

及表结构权限,只有DBA具有最高权限

生产数据库任何库结构表结构索引结构以及数据库对象建立删除修改都需要经过DBA

操作

7监控

【强制】所有生产库必须加入监控系统,不加入监控系统不得上线生产

【强制】MYSQI监控项有CPU内存,I/O,MYSQ进程,MYSQ复制状态,MYSQI复制延迟,MYSQ端口,MYSQ锁等待

【强制】MONGODB控项有CPU内存,I/O,MONGODB程,MYSQ复制集状态,MONGODB

端口

8连接池使用规范

建议在性能测试阶段进行连接池最优设置连接池必须开启autoconnect设置最小连接数设置为50-100

最大连接数设置为500-1000

连接池idletime设置为10000-20000

9数据库重要级别划分

目前根据数据库存储数据的安全重要程度暂时将数据库从高到低划分为三个级别(A

级,B级,C级)

A级数据库

B级数据库

C级数据库

备份恢复

增量备份,数据库恢复要求达到任意指定时间点恢复,备份至少保留本地和异地两份

增量备份或全库逻辑备份,备份至少保留本地和异地两份

全库逻辑备份,备份至少保留本地和异地两份

咼可用

7X24小时高可用

7X24小时高可用

非7X24小时高可用,允许服务一小时以内中断

审计

重要数据增删改查需要审计

不需要

不需要

数据存储

每表空间独立数据文件,数据与索引独立存储

每表空间独立数据文件,数据与索引独立存储

不要求

备份恢复测试间隔

每月

每季度

半年

各级别数据类型指导

财务交易类数据

运宫类数据

日志记录类数据

10数据库安装规范

--basedir=/usr/local/mysql

数据库安装一律采用解压安装方式,具体步骤如下:

mkdir-p/data/mysql/datamkdir-p/data/mysql/logsgroupaddmysqluseradd-gmysqlmysqlchown-Rmysql:

mysql/data/mysqlcd/usr/localtar-zxvfmysql-5.6.36-linux-glibc2.5-x86_64.tar.gzln-smysql-5.6.36-linux-glibc2.5-x86_64mysqlcdmysqlscripts/mysql_install_db--user=mysql

--datadir=/data/mysql/datachown-Rroot.

chown-Rmysqldatachgrp-Rmysql.

cpsupport-files/mysql.server/etc/rc.d/init.d/mysqld

cpbin/mysql/usr/bin/chkconfig--addmysqld

/etc/rc.d/init.d/mysqldstart

/usr/local/mysql/bin/safe_mysqld--skip-grant-tables&usemysql

deletefromuserwhereuser='';

usemysql

updatemysql.usersetpassword=password("root")whereuser="root";

flushprivileges;

11业务上线数据库部分规范

业务上线如果涉及数据库操作,需要提前半天邮件通知DBA有数据库操作,并且将升级的脚本发给DBA由DBA进行审查

DBA审核后,如无问题先在预发布环境进行数据库升级,升级完通知业务部门进行预发布测试

业务部门测试没有问题后,由DBA在晚上升级时间点进行生产数据库升级

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2