数据库运维流程(工作流标准)20150721
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库运维流程
工作流标准
文件修订记录表
日期作者修订类型修订内容版本2015.7.20 新增制定本方案 1.0
目录
数据库运维流程 (1)
工作流标准 (1)
目录 (2)
服务器配置标准 (2)
安装标准 (3)
监控标准 (3)
业务保障标准 (4)
慢查询标准 (4)
配合开发评估SQL标准 (4)
故障处理流程和故障报告标准 (5)
备份数据库标准 (6)
数据批量处理流程标准 (7)
灾备、高可用标准 (7)
数据库访问权限管理标准 (8)
服务器配置标准
根据DBA提出的需求来采购、安装、配置数据库服务器,
硬件标准如下:
2U机架式;
CPU 型号INTEL Xeon系列2.4GHz或以上;数量2颗;
内存32GB 或64GB;
硬盘600GB*6块10KB SAS硬盘,RAID 10;
如果IO存在瓶颈,可以配置PCIe SSD固态硬盘;
软件标准如下:
CentOS release 6.6 (Final) 2.6.32 x86_64 GNU/Linux
安装标准
用户名称
Oracle数据库用户为:oracle
Mysql数据库用户为:mysql
安装位置:
Oracle软件:/oracle/product/11.2.0/db_1
Oracle数据:/oracle
Mysql软件:/data/womai/mysql
Mysql数据:/data
内存使用(32GB)
Oracle SGA使用20GB
Oracle PGA使用3GB
Mysql buffer_pool 使用20GB
Mysql key_buffer 使用512MB
监控标准
1.系统自动收集数据库中告警日志中的错误信息,以邮件形式发送至邮箱,数据库管理员需每日查看该邮件,并及时处理。
2.每日查看Nagios数据库告警信息。
3.当手机信息、邮件收到Nagios告警信息时,需第一时间告知领导和相关项目人员,并及时进行处理。
具体监控项目如下:
Check current users logged in;
Check load average;
Check disk;
Check processes;
Check net bps;
Check cpu utilization;
Check memory;
Check swap;
Check iostat;
Check tcp stats;
Check ssh login;
Check database port
Check database Uptime;Threads;Opens;locks
Check database sessions;
业务保障标准
根据业务优先级划分如下:
一类业务:网站、手机。建议在五分钟内恢复业务;
二类业务:CC 。建议数据库故障不要影响接电话,并在十五分钟内恢复业务;三类业务:WMS。建议在十五分钟内恢复业务;
四类业务:其他业务建议在六十分钟内恢复业务;
慢查询标准
Oracle部分慢查询定义,抓取每个类别的top 3,然后进行优化。
SQL ordered by Elapsed Time
SQL ordered by CPU Time
SQL ordered by Executions
SQL ordered by Parse Calls
Mysql部分慢查询定义,抓取每个类别的top 3,然后进行优化。
SQL ordered by Record Count
SQL ordered by Elapsed Time
SQL ordered by Lock Time
SQL ordered by Fetch Back
配合开发评估SQL标准
(1) sql语句尽可能简单
大的sql想办法拆成小的sql语句(充分利用QUERY CACHE和充分利用多核CPU)
(2) 事务要简单,整个事务的时间长度不要太长
(3) 避免使用触发器、函数、存储过程
(4) 降低业务耦合度,为sacle out、sharding留有余地
(5) 避免在数据库中进行数学运算(MySQL不擅长数学运算和逻辑判断)
(4) 不要用select *,查询哪几个字段就select 这几个字段
(5) sql中使用到OR的改写为用IN() (or的效率没有in的效率高)
(6) in里面数字的个数建议控制在1000以内
(7) limit分页注意效率。Limit越大,效率越低。可以改写limit,比如例子改写:
select id from tlimit 10000, 10; => select id from t where id > 10000 limit10;
(9) 使用union all替代union
(10) 避免使?大表的JOIN
(11) 使用group by 分组、自动排序
(12) 对数据的更新要打散后批量更新,不要一次更新太多数据
(13) 减少与数据库的交互次数
(13) 注意使用性能分析工具
Sql explain / showprofile / mysqlsla
(14) SQL语句要求所有研发,SQL关键字全部是大写,每个词只允许有一个空格
(15) SQL语句不可以出现隐式转换,比如select id from 表where id='1'
(16) IN条件里面的数据数量要少,我记得应该是500个以内,要学会使用exist代替in,exist 在一些场景查询会比in快
(17) 能不用NOT IN就不用NOTIN,坑太多了。。会把空和NULL给查出来
(18) 在SQL语句中,禁止使用前缀是%的like
(19) 不使用负向查询,如not in/like
(19) 关于分页查询:程序里建议合理使用分页来提高效率limit,offset较大要配合子查询使用
(20) 禁止在数据库中跑大查询
(21) 使用预编译语句,只传参数,比传递SQL语句更高效;一次解析,多次使用;降低SQL 注入概率
(22) 禁止使用order by rand()
(23) 禁止单条SQL语句同时更新多个表
故障处理流程和故障报告标准
数据库负责人职责梳理:
1、数据库出现故障后,由相关责任人进行处理。
2、第一责任人负责准备切换文档,并登录远程服务器,执行切换任务;