热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

0.数据库运维做些什么

一.数据库生命周期结合软件生命周期、项目的开展,数据库的生命周期大致可分为这么几个阶段。1.规划在立项后,对于数据库平台的软硬件选型,以及大致的数据库架构。1.1配置多少台服务器,服务器的内存大小磁盘空间、IOPSCPU核数网络带宽等;1.2

一. 数据库生命周期 结合软件生命周期、项目的开展,数据库的生命周期大致可分为这么几个阶段。 1. 规划 在立项后,对于数据库平台的软硬件选型,以及大致的数据库架构。 1.1 配置多少台服务器,服务器的内存大小/磁盘空间、IOPS/CPU核数/网络带宽等; 1.2

一. 数据库生命周期
结合软件生命周期、项目的开展,数据库的生命周期大致可分为这么几个阶段。


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. 如果都没有找到,那么就中奖了,自己分析不出就团队分析,团队分析不出找官方支持,当然有的时候,官方支持也不是一定能解决。

注意:对于在线系统,这么慢慢查下去,时间可能消耗太久,会影响用户体验。通常是优先快速解决问题,那怕只是用临时应急方案,以保证系统的可用性,然后再去分析根本原因,以彻底解决,防止下次再发生。

推荐阅读
  • 本文探讨了在Windows Server 2008环境下配置Tomcat使用80端口时遇到的问题,包括端口被占用、多项目访问失败等,并提供详细的解决方法和配置建议。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 使用Pandas高效读取SQL脚本中的数据
    本文详细介绍了如何利用Pandas直接读取和解析SQL脚本,提供了一种高效的数据处理方法。该方法适用于各种数据库导出的SQL脚本,并且能够显著提升数据导入的速度和效率。 ... [详细]
  • 自己用过的一些比较有用的css3新属性【HTML】
    web前端|html教程自己用过的一些比较用的css3新属性web前端-html教程css3刚推出不久,虽然大多数的css3属性在很多流行的浏览器中不支持,但我个人觉得还是要尽量开 ... [详细]
  • MySQL DateTime 类型数据处理及.0 尾数去除方法
    本文介绍如何在 MySQL 中处理 DateTime 类型的数据,并解决获取数据时出现的.0尾数问题。同时,探讨了不同场景下的解决方案,确保数据格式的一致性和准确性。 ... [详细]
  • 本文详细介绍了Wi-Fi Portal认证协议的原理、流程和相关技术细节,涵盖用户上线认证、下线流程以及数据报文格式等内容。 ... [详细]
  • 本文介绍如何在PostgreSQL数据库中正确插入和处理JSON数据类型,确保数据完整性和避免常见错误。 ... [详细]
  • 本文探讨了Microsoft OLE DB Provider for SQL Server错误80004005的成因与解决方法,详细分析了SQL Server连接失败的原因,并提供了多个有效的解决方案。 ... [详细]
  • 深入理解T-SQL中的NULL与三值逻辑
    本文探讨了SQL Server中的三值逻辑,解释了谓词计算结果为TRUE、FALSE和UNKNOWN的规则。通过具体示例,详细说明了如何正确处理NULL值,并探讨了在不同约束条件下的行为。 ... [详细]
  • 本文介绍如何在Qt应用程序中让QLineEdit控件获得输入焦点,通过简单的代码示例和解释,帮助开发者更好地理解和使用这一功能。 ... [详细]
  • 数据结构入门:栈的基本概念与操作
    本文详细介绍了栈这一重要的数据结构,包括其基本概念、顺序存储结构、栈的基本操作(如入栈、出栈、清空栈和销毁栈),以及如何利用栈实现二进制到十进制的转换。通过具体代码示例,帮助读者更好地理解和应用栈的相关知识。 ... [详细]
  • 探讨如何从数据库中按分组获取最大N条记录的方法,并分享新年祝福。本文提供多种解决方案,适用于不同数据库系统,如MySQL、Oracle等。 ... [详细]
  • 本文介绍如何在SQL Server中对Name列进行排序,使特定值(如Default Deliverable Submission Notification)显示在结果集的顶部。 ... [详细]
  • 在尝试用另一台电脑的MySQL文件替换本地D:\xampp\mysql目录后,MySQL服务无法启动。错误提示显示MySQL意外关闭,可能是由于端口冲突、依赖缺失、权限问题或崩溃等原因引起。 ... [详细]
  • SQL查询指定时间段内票数总和并按降序排列
    本文介绍如何使用SQL语句查询特定时间段内的票数总和,并按照票数从高到低进行排序。通过实际案例和详细解释,帮助读者理解SQL查询的实现方法。 ... [详细]
author-avatar
育诚家瑋逸群
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有