数据库运维都要做些什么?运维的工作内容是什么?有哪几种分类?

文章正文
发布时间:2024-10-17 21:38

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

项目生命周期

其中“规划”、“开发”、“实施”所要做的主要工作如下:

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

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

运维的工作内容是什么? 有哪几种分类? 下面和千锋广州小编一起来看看吧!

与联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7x24 小时为用户提供高质量的服务运维人员对公司互联网业务所依赖的基础设施、基础服务、线上业务进行定性加强,进行日常巡检发现服务可能存在的隐患,对整体架

构进行优化以屏蔽常见的运行故,多数据中接入提高业务的容灾能力.

通过监控、日志分析等技术手段,及时发现和响应服务故障,减少服务中断的时间,使公司的互联网业务符合预期的可用性要求,持续稳定地为用户提供务

在安全方面,运维人员需要关注业务运行所涉及的各个层面,确保用户能够安全、完整地访问在线业务。从网络边界划分、ACL管理、流量分析、DDoS 防御,到操作系统、开源软件的漏洞扫描和修补,再到应用服务的XSS、SQL注入防

从安全流程梳、代码白盒黑盒扫描、权限审计,到入侵行为检测、业务风险控制等.运维人员需要保障公司提供的互联网业 运行在安全、可控的状态下,确保公司业务数据和用户隐私数据的安全,同时还需要具备抵御各

种恶意攻击的能力

在确保业务稳定、安全的前提下,还需保障业务高效的运转,公司内快速的产出。运维工作需要对业务进行各方面优化.上如,10 优化提升数据库性能,图片压缩降低带宽使用量等,提供的互联网业务以较小的资源投入带来最大的用户价值和体验同时,还需要通过各种工具平台提升内部产品发布交付的效率,提升公司内运维相关的工作效率。工作分类运维

运维的工作方向比较多,随着业务规模的不断发展,越成熟的互联网公司,运维岗位会划分得越细.

当前很多大型的互联网公司,在初创时期只有系统运维,随着服务规模、服务质量的要求,也逐渐进行了工作细分。

系统运维

系统运维负责IDC、网络、CDN和基础服务的建设 (LVS、NTP、DNS) :负责资产管理,服务器选型、交付和维修,详细的工作职责如

1.IDC数据中心建设

收集业务需求,预估未来数据中心的发展规模,从骨工网的分布,数据中心建筑,以及intemet接入、网络攻击防御能力、扩容能力、空间预留、外接专线能力、现场服务支撑能力等方面评估选型数据中心。负责数据中心的建设、现场维护工作。

2.网络建设

设计及规划生产网络架构,这里面包括:数据中心网络架构、传输网架构、CDN网络架构等,以及网络调优等日常运维工作。

3.LVS 负载均衡和 SNAT 建设

LVS 是整个站点架构中的流量入口,根据网络规模和业务需求,构建负载均衡集群。完成网络与业务服务器的衔接,提供高性能、高可用的负载调度能力,以及统一的网络层防攻击能力。SNAT 集中提供数据中心的公网访问服务,通过集群化部署,保证出网服务的高性能与高可用。

4.CDN 规划和建设

CDN 工作划分为第三方和自建两部分。建立第三方 CDN 的选型和调度控制,根据业务发展趋势,规划CDN新节点建设布局,完善CDN业务及监控,保障CDI 系统稳定、高效运行。分析业务加速频道的文件特性和数量,制定最优的加速策略和资源匹配;负责用户劫持等CDN日常故障排查工作作.

5.服务器选型、交付和维护

负责服务器的测试选型,包含服务器整机、部件的基础性测试和业务测试,降低整机功率,提升机架部署密度等.结合对公司业务的了解,推广新硬件、新方案减少业务的服务器投入规模。负责服务硬件故障的诊断定位,服务器硬件监控、健康检查工具的开发和维护

6.0S、内核选型和 OS 相关维护工作

负责整本平台的 OS 选型、定制和内核优化,以及 Paich 的更新和内部版本发布,建立基础的YUM包管理和分发中心,提供常用包版本库;跟进日常各类 S 相关故障,针对不同的业务类型,提供定向的优化支持。

7.资产管理

记录和管理运维相关的基础物理信息,包括数据中心、网络、机柜、服务器、ACL、P等各种资源信息,制定有效的流程,确保信息的准确性,开放API接口,为自动化运维提供数据支持。

8.基础服务建设

业务对 DNS、NTP、SYSLOG 等基础服务的依赖非常高,需要设计高可用架构避免单点,提供稳定的基础服务。

应用运维

应用污维负责线上服务的变更、服务状态监控、服务容灾和教据备份等工作,对服务进行例行排查、故应急处理等工作。详细的工作职责如下所述。

1.设计评审

在产品研发阶段,参与产品设计评审,从运维的角度提出评审意见,使服务满足运维准入的高可用要求2.服务管理

负责制定线上业务升级变更及回滚方案,并进行变更实施。掌握所负责的服务及服务间关联关系、服务依赖的各种资源。能够发现服务上的缺陷,及时通报并推进解决。制定服务稳定性指标及准入标准,同时不断完善和优化程序和系统的功能、效率,提高运行质量。完善监控内容,提高报警准确度,在线上服务出现故喧时,第一时间响应,对已知线上故障能按流程进行通报并按预案执行,未知故障组织相关人员联合排障。

3.资源管理

对各服务的服务器资产进行管理,梳理服务器资源状况、数据中心分布情况、网络专线及带宽情况,能够合理使用服务器资源,根据不同服务的需求,分配不同配置的服务器,确保服务器资源的充分利用。

4.例行检查

制定服务例行排查点,并不断完善。根据制定的服务排查点,对服务进行定期检查,对排查过程中发现的问题,及时进行追查,排除可能存在的隐患。

5.预案管理

确定服务所需的各项监控、系统指标的闻值或临界点,以及出现该情况后的处理预案。建立和更新服务预案文档,并根据日常故障情况不断补充完善,提高预案完备性。能够制定和评审各类预案,周期性进行预案演练,确保预案的可执行性.

6.数据备份

制定数据备份策略,按规范进行数据备份工作。保证数据备份的可用性和完整性,定期开展数据恢复性测试.

数据库运维

数据库运维负责数据存储方案设计、数据库表设计、索引设计和SQL优化,对数据库进行变更、监控、备份、高可用设计等工作。详细的工作职责如下所述。

1.设计评亩

在产品研发初始阶段,参与设计方案评审,从DBA的角度提出教据存储方案、库表设计方案、SQL开发标准、索设计方案等,使服务满足数据库使用的高可用、高性能要求。

2.容量规划

掌握所负责服务的教据库的容量上限,清楚地了解当前瓶领点,当服务还未到达容量上限时,及时进行优化、分拆或者扩容

3.数据备份与灾备

制定数据备份与灾备策略,定期完成数据恢复性测试,保证数据备份的可用性和完整性

4.

完善数据库存活和性能监控,及时了解数据库运行状态及故障,数据库安全建设数据库账号体系,严格控制账号权限与开放范围,降低误操作和数据泄露的风险,加强离线备份数据的管理,降低数据泄露的风险。

5.数据库高可用和性能优化

对数据库单点风险和政障设计相应的切换方案,降低故道对教据库服务的影响,不断对数据库整本性开行优化,包括新存储方案引进硬件优化,文件系统优化,数据库优化,SQL优化,在保障成本不增加或者少量增加的情况下,数据库可以支更多的业务请求

6.自动化系统建设

设计开发数据库自动化运维系统,包括数据库部署、自动扩容、分库分表、权限管理、备份恢复、SQL审核和上线、故障切换等功能,

7.运维研发

运维研发负责通用的运维平台设计和研发工作,如:资产管理、监控系统、运维平台、数据权限管理系统等。提供各种API供运维或研发人员使用,封装更高层的自动化运维系统。详细的工作职责如下所述

8.运维平台

记录和管理服务及其关联关系,协助运维人员自动化、流程化地完成日常运维操作,包括机器管理、重启、改名、初始化、域名管理、流量切换和故障预案实施等.

9.监控系统

负责监控系统的设计、开发工作,完成公司服务器和各种网络设备的资源指标、线上业务运行指标的收集、告警、存储、分析、展示和数据挖掘等工作,持续提高告警的及时性、准确性和智能性,促进公司服务器资源的合理化调配。

10.自动化部暑系统

参与部署自动化系统的开发,负责自动化部署系统所需要的基础数据和信息,负责权限管理、API开发、Web端开发。结合云计算,研发和提供PaaS相关高可用平台,进一步提高服务的部署速度和用户体验,提升资源利用率。

运维安全

运维安全负责网络、系统和业务等方面的安全加固工作,进行常规的安全扫描、渗透测试,进行安全工具和系统研发以及安全事件应急处理。详细的工作职责如下所述。

.安全制度建立

根据公司内部的具体流程,制定切实可行,且行之有效的安全制度。

2.安全培训

定期向员工提供具有针对性的安全培训和考核,在全公司内建立安全负责人制度.

3.风险评估

通过黑白盒测试和检查机制,定期产生对物理网络、服务器、业务应用、用户数据等方面的总体风险评估结果.

4.安全建设

根据风险评结果,加固最渔弱的环节,包括设计安全防线、部署安全设备、及时更新补丁、防御质毒、源代码自动扫描和业务产品安全咨询等。为了降低可能泄露数据的价值,通过加密、匿名化、混淆数据,乃至定期删除等技术手段和流程来达到目的。

5.安全合规

为了满足例如支付牌照等合规性要求,安全团队承担着安全合规的对外接口人工作。

6.应急响应建立安全报警系统,通过安全中心收集第三方发现的安全问题,组织各部门对已经发现的安全问题进行修复、影响面评估、事后安全原厌追查。运维工作发展过程

过渡段

里期的运维团队在人员较少的情况下,主要是进行数据中心建设、基础网络建设、服务器采购和服务器安装交付工作。几乎很少涉及线上服务的变更、监控、管理等工作。

这个时候的运维团队更多的属于基础建设的角色,提供一个简单、可用的网络环境和系统环境即可,随着业务产品的逐渐成熟,对于服务质量方面就有了更高的要求。这个时候的运维团队还会承担一些服务器监控的工作,同时会负责LVS、Nginx 等与业务逻辑无关的 4/7 层运维工作作

这个时候服务变更更多的是逐台的手工操作,或者有一些简单批量脚本的出现。监控的焦点更多的在服务器状态和资源使用情况上,对服务应用状态的监控几乎很少,监控更多的使用各种开源系统如Nagios、Cacti等

由于业务规模和复杂度的持续增加,运维团队会逐渐划分为应用运维和系统运维两大块。应用运维开始接手线上业务,逐步开展服务监控梳理、数据备份以及服务变更的工作。

随着对服务的深入,应用运维工程师有能力开始对服务进行一些简单的优化。同时,为了应对每天大量的服务变更,我们也开始编写各类运维工具,针对某些特定的服务能够很方便的批量变更。

随着业务规模的增大,基础设施由于容量规划不足或抵御风险能力较弱导致的故障也越来越多,迫使运维人员开始将更多的精力投入到多数据中心容灾、预案管理的方向上

业务规模达到一定程度后,开源的监控系统在性能和功能方面,已经无法满足业务需求,大量的服务变更、复杂的服务关系,以前靠人工记录、工具变更的方式不管在效率还是准确性方面也都无法满足业务需求.

在安全方面也出现了各种大大小小的事件,迫使我们投入更多的精力在安全防御上。逐渐的,运维团队形成之前提到的5个大的工作分类,每个分类都需要有专精的人才。

这个时候系统运维更专注于基础设施的建设和运维,提供稳定、高效的网络环境,交付服务器等资源给应用运维工程师。应用运维更专注于服务运行状态和效率

数据库运维属于应用运维工作的细化,更专注于数据库领域的自动化、性能优化和安全防御。运维研发和运维安全提供各类平台、工具进一步提升运维工程师的工作效率,使业务服务运行得更加稳定、高效和安全

image.png

手工管理阶段:

业务流量不大,服务器数量相对较少,系统复杂度不高。对于日常的业务管理操作,大家更多的是逐台登录服务器进行手工操作,属于各自为战,每个人都有自己的操作方式,缺少必要的操作标准、流程机制,比如业务目录环境都是各式各样的。

工具批量操作阶段:

随着服务规模、系统复杂度的增加,全人工的操作方式已经不能满足业务的快速发展需要。因此,运维人员逐渐开始使用批量化的操作工具,针对不同操作类型出现了不同的脚本程序.

但各团队都有自己的工具,每次操作需求发生变化时都需要调整工具。这主要是因为对于环境、操作的规范不够,导致可程序化处理能力较弱。此时,虽然效率提升了一部分,但很快又遇到了瓶颈

操作的质量并没有太多的提升,甚至可能因为批量执行而导致更大规模的问题出现。我们开始建立大量的流程规范,比如复查机制,先上线一台服务器观察10分钟后再继续后面的操作,一次升级完成后至少要观察20分钟等。

这些主要还是靠人来监督和执行,但在实际过程中执行往往不到位,反而降低了工作效率.

平台管理阶段:在这个阶段,对于运维效率和误操作率有了更高的要求,我们决定开始建设运维平台,通过平台承载标准、流程,进而解放人力和提高质量

这个时候对服务的变更动作进行了抽象,形成了操作方法、服务目录环境、服务运行方式等统一的标准,如程序的启停接口必须包括启动、停止、重载等。通过平台来约束操作流程,如上面提到的上线一台服务器观察10分钟。

在平台中强制设定暂停检查点,在第一台服务器操作完成后,需要运维人员填写相应的检查项,然后才可以继续执行后续的部署动作

系统自调度阶段:

更大规模的服务教量、更复杂的服务关联关系、各人运维平台的林立,原有的将批量操作转化成平台操作的方式已经不再适合,需要对服务变更进行更高一层的抽象

将每一台服务器抽象成一个容器,由调度系统根据资源使用情况,将服务调度、部署到合适的服务器上,自动化完成与周边各个运维系统的联动,比如监控系统、日志系统、备份系统等

通过自调度系统,根据服务运行情况动态伸缩容量,能够自动化处理常见的服务故障,运维人员的工作也会前置到产品设计阶段,协助研发人员改造服务使其可以接入到自调度系统中.

在整个运维的发展过程中,希望所有的工作都自动化起来,减少人的重复工作,降低知识传递的成本,使我们的运维交付更高效、更安全,使产品运行更稳定。对于故障的处理,也希望由事后处理变成提前发现,由人工处理变成系统自动容灾。

上文就是小编为大家整理的数据库运维都要做些什么?运维的工作内容是什么?有哪几种分类?

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。