一. 数据库生命周期
结合软件生命周期、项目的开展,数据库的生命周期大体可分为这么几个阶段。
1. 规划
在立项后,对于数据库平台的软硬件选型,以及大体的数据库架构。
1.1 配置多少台服务器,服务器的内存大小/磁盘空间、IOPS/CPU核数/网络带宽等;
1.2 选择的操做系统/数据库产品/第三方工具,及相应版本;
1.3 总体架构,好比是否考虑:HA, Scale out, load balance, 读写分离等策略。数据库
2. 开发
开发的工做,一般是在开发/测试环境上进行的,测试结束后搬到生产环境。
2.1 数据库设计;
2.2 SQL编程及调试;
2.3 开发过程当中的SQL优化。编程
3. 实施
开发的数据库程序到生产环境的部署。到这里,基本是项目上线了。后面就进入了运维阶段。
3.1 前期规划时数据库物理架构的部署;
3.2 开发/测试完成的数据库程序部署。性能优化
二. 运维作些什么
从上面的图来看,运维是项目上线后的工做。看看从项目上线开始,运维都作了什么。
1. 部署环境
1.1 数据库安装(若是服务器太多,能够选择静默安装);
1.2 参数配置(操做系统、数据库实例、数据库参数);
1.3 权限分配(登陆、数据库用户权限)。服务器
2. 备份/还原
对于数据库来讲,有个可用的备份是很是重要的,防止有数据损坏,用户误操做等形成的数据丢失。保证了数据的存在,运维才有意义,不然其余工做作的再好也是白搭。网络
3. 监控
对于运维来讲,首先要保证数据库的运行,而后就是运行中系统的性能。因此监控主要分为这两点:
3.1 数据库运行状态,有没有什么数据库中断或异常、错误或警告?
3.2 数据库性能,有没有什么性能问题或者性能隐患?架构
4. 故障处理
在监控过程当中发现,或者系统用户反馈出来的数据库错误或者警告,进行诊断并修复。运维
5. 性能优化
在监控过程当中发现,或者系统用户反馈出来的数据库性能问题,进行优化。数据库设计
6. 容灾
容灾只是手段,最终仍是为了保证系统的可用性,一般选择的策略有:故障转移集群、镜像、日志传送、异地备份等。
若是在实施时,已经部署了容灾策略,那么这时只要作一些状态监视便可。
也有系统是在上线一段时间以后,才补充部署容灾策略的。工具
7. 升级/迁移
7.1 升级
一般是在本机进行,硬件不变,好比:更换操做系统、数据库的版本、打补丁;
7.2 迁移
一般是须要升级硬件,好比:更换新的服务器,因此把数据库搬到新的服务器上;
也有在本机“迁移”,只是为了移动数据库文件的位置。
7.3 迁移+升级
不过不少时候,都是在迁移中作升级,也就是换了新的服务器,也换了软件版本。性能
8. 健康检查
一般叫作巡检或者Health Check。多是天天、每个月、每一年的。
事实上若是把巡检的内容作到天天、每小时、甚至每X分钟,那就是一个准实时的系统监控。
9. 系统用户反馈的数据库问题
用户反馈出来的任何数据库问题,须要DBA去作处理,即使有时诊断出来并不是数据库的问题。
从广义上来看,除去数据库开发外的其余任务,都应该算在运维职责以内。
问:那么数据库运维到底都有哪些平常任务?
答:把上面的每项任务要作的事情一个个罗列出来就能够了。
好比,3.1 数据库运行状态监控包括:
(1) 数据库服务器是否可用;
(2) 数据库服务是否启用/中断;
(3) 磁盘空间;
(4) 错误日志检查;
(5) 数据库一致性检查;
(6) 做业运行状态;
(7) 索引碎片检查
(8) ……
后面会逐个分解各项任务的详细清单。
三. 运维过程当中的问题解决
运维过程当中遇到问题时,若是可以经过本身/他人的经验解决,那么当然好;
但若是没有解决思路的话,一般是这样去查:
1. 查日志:操做系统/数据库/应用程序日志中,有没有相关的错误/信息提示;
2. 查错误号:官方文档/网友分享中,有没有解决方案;
3. 若是都没有找到,那么就中奖了,本身分析不出就团队分析,团队分析不出找官方支持,固然有的时候,官方支持也不是必定能解决。
注意:对于在线系统,这么慢慢查下去,时间可能消耗过久,会影响用户体验。一般是优先快速解决问题,那怕只是用临时应急方案,以保证系统的可用性,而后再去分析根本缘由,以完全解决,防止下次再发生。