【作者】韩丹 银行架构师
一、引言
为什么要探讨这个问题?
随着数据量不断增长,企业对于数据库的需求也越来越高。Oracle数据库作为一款知名而成熟的商业数据库,虽然有着出色的性能和可靠性,但是在成本、许可证、增值服务等方面存在不小的问题。因此,越来越多的企业开始采用“PG技术路线+集中式存储”平替Oracle,以降低开销并达到更高的数据存储和管理效率。
由于PostgreSQL和Oracle在功能和使用方式上存在差异,因此在采用“PG+集中式存储”替换Oracle的过程中,需要考虑运维的改造,在运维人员技能、运维流程和工具、安全性管理等方面以确保新系统的稳定性和可靠性。
二、“PostgreSQL 技术路线 + 集中式存储”替换 Oracle 的优势
开源免费:PostgreSQL技术路线+集中式存储方案不会产生过高的许可证费用,相对而言,它是开源和免费的。这可以减轻压力并节省IT成本。
高度可扩展:PostgreSQL数据库采用了很多创新的技术,可以支持大规模数据集,管理大规模数据。此外,它还具有很多可扩展的功能,可以满足不同业务的需求。
容易使用:PostgreSQL借鉴了Oracle的一些经验,因此在使用上比其他数据库方便。并且,它支持直接上线升级,最大程度地减少了停机时间。
费用较低:相较于Oracle的许可证费用,PostgreSQL基本上是免费的。虽然在使用过程中可能会发生其他费用,但总体来说PG的成本更低。
三、“PostgreSQL 技术路线 + 集中式存储”替换 Oracle 的 IT 架构高效运维的准备事宜
深入熟练掌握PostgreSQL技术:在转向PostgreSQL数据库之前,需要对PostgreSQL技术有足够的了解和熟悉,以方便管理、迁移数据以及进行应急处理。
数据迁移策略:从Oracle数据库迁移到PostgreSQL数据库,迁移过程中要确保数据的完整、稳定和安全。需要考虑数据迁移的方法、迁移的时间、业务的可用性、数据的一致性等方面的问题,以确保数据无缝迁移。
统一的数据管理策略:集中式存储方案是一种高效的数据管理方式,需要对所有存储的数据进行统一管理,例如:规范数据、清洗数据、备份和恢复等。
安全人员培训:PostgreSQL数据库的安全架构与Oracle数据库不同。企业需要在转型过程中加强安全培训和管理,以实现更好的信息安全保障。
运维工具的选择:以“PG技术路线+集中式存储”平替Oracle为例,“集中式存储”需要考虑数据的大规模的存储管理以及存储的安全性等问题。在这方面,需要选择合适的运维工具,以保证数据管理的高效、安全和稳定。
四、“PostgreSQL 技术路线 + 集中式存储”平替 Oracle 的 IT 架构高效运维实施
概括的说,PG数据库的运维需求分为五个方面,日常监控、故障预警、自动化巡检、性能优化和故障诊断。
4.1 日常监控
主要包括满足日常监控数据库所需,了解数据库运行总体状态,专项护航使用,关键系统值守工具。
对于日常的监控,我们采用了 可视化的集成的运维系统,通过内置运维工具随时了解数据库实例的总体运行状态。
运维系统通过不定时采集分布于各个节点的数据库状态,总体展示数据库日常运行情况。采集的参数指标包括:
表1:日常监控参数指标
“日常监控”是一个十分有效的自动化运维工具,每天半夜针对数据库的运行数据以及一些规则自动做分析,并形成言简意赅的日检总结报告,运维人员上班后直接阅读这些报告就可以了解自己运维的数百个数据库实例中存在的一些常见问题,从而可以确定当天或者近期是否需要对某些数据库实例做相应的变更。
4.2 故障预警
故障预警主要还是集中在硬件和主从同步上面,通过埋点采集数据库的运行状态,当出现例如流复制阻塞,数据库集群中服务器异常,磁盘和内存等有异常的时候,将相关信息发送至自建的监控平台,在监控大屏幕中以高亮显示,并以短信形式通知到对应的系统的运维人员。此外海量的告警信息会让预警变得毫无意义。因此构建了基于故障模型的“运维经验告警”。通过专家经验与以往的经验构建的复杂的规则发出更精准的预警,也能让告警产生后,运维人员可以更加快速的定位问题,消除隐患。
我单位在实际的运维过程中,对于存储的物理故障,利用成熟可靠的企业存储提供的API或SNMP协议,能够全方位的实时监控磁盘温度、电压、功率、性能等,实现大规模磁盘的监控及慢盘的检测,提前发现IO Hang等问题。并在监控工具中,可以设置阈值告警,并根据不同级别的告警类型,实现邮件或短信通知相应的运维人员。
针对系统层面的磁盘/内存性能,监控工具中使用Prometheus+Grafana,收集系统层面的指标数据,并通过可视化界面展示出来。同时也可以设置阈值告警和通知。先安装并配置Prometheus以收集例如大量系统级别的指标数据,包括磁盘和内存性能数据。然后配置Prometheus的exporters以获取更详细的指标数据。例如:可以使用Node Exporter来获取更多关于服务器的指标数据。后续利用创建Grafana仪表板来显示磁盘和内存性能指标。在Grafana中,可以使用Prometheus作为数据源来创建各种类型的图表和仪表板。
通过在Grafana中设置警报以及可视化,快速了解系统是否出现问题。并可以基于阈值或其他条件进行设置报警,以通知管理员或团队,减少运维压力。
4.3 自动化巡检
自动化巡检,还是通过前期的内置脚本,形成每天必备的健康检查内容,对数据库进行相关的自动化检测。及时发现相关问题,避免发生故障事件。包括PG数据库集群状态是否正常,有无超过5S长SQL,有无锁等待及索引失效情况。
自动化巡检与日常监控相比,更加靠近于应用问题的快速排查。和发现系统隐患,防患于未然。
4.4 性能优化
对于日常监控和自动化巡检中发现的长时长的SQL语句,自动流转到性能优化人员,通过事先安装的auto_explain在数据库日志中记录下对应的执行计划,有针对性的对相关语句进行优化。同时在执行计划中对应用设计和软件本身进行适应性调整。
4.5 故障诊断
故障诊断的能力,能够快速准确地发现和解决问题,以保证系统的稳定性和可靠性。做到这一点是一个综合性工作。包括以下很多方面。
4.5.1 故障诊断的措施
监控系统是数据库运维中非常重要的一环,能够实时监测数据库的状态,及时发现异常情况,提高故障诊断的效率。常见的监控指标包括CPU负载、磁盘空间、内存使用率、网络带宽等。
日志记录是故障诊断的重要手段之一,可以记录数据库运行过程中的各种事件和错误信息,为后续的故障诊断提供有力的依据。PG数据库支持多种日志记录方式,包括文本日志、CSV日志、syslog等。
备份和恢复是保证数据库可靠性和数据安全的重要措施,也是故障恢复的关键手段。PG数据库支持多种备份和恢复方式,包括基于文件系统的备份、基于二进制日志的备份、基于归档日志的备份等。同时建议和集中式存储的企业级备份恢复能力结合,通过集中式存储的快照克隆能力提升备份/恢复的性能。
4.5.2 故障诊断的方法
故障排查,主要包括以下步骤:
1) 收集信息:收集相关的日志、监控数据和用户反馈等信息,了解故障发生的时间、地点、影响范围等。
2) 排除可能性:根据收集的信息,逐一排除可能导致故障的各种原因,如硬件故障、网络故障、配置错误等。
3) 分析问题:对剩余的可能原因进行分析和研究,找到故障的根本原因。
4) 解决问题:根据分析结果,采取相应的措施解决故障,如修改配置、修复代码、更换硬件等。
性能分析也是故障诊断的常用方法之一,通过对数据库运行过程中的各种指标进行分析和优化,提高系统的性能和稳定性。常用的性能分析工具包括pg_stat_statements、pgBadger、pgFouine等。
数据库监控 数据库监控是实时了解数据库运行情况的方法,可以帮助运维人员快速发现和解决问题。常见的数据库监控工具包括Zabbix、Nagios、Cacti等。
4.5.3 常见的PostgreSQL数据库故障诊断的工具
pgbouncer:一款轻量级的连接池工具,可以提高数据库的性能和可靠性,还可以通过统计信息和日志记录来帮助故障诊断。
pgAdmin:一款用于管理和监控PG数据库的图形化界面工具,可以实时监测数据库的状态、执行SQL语句、备份和恢复数据库等操作,还可以通过日志记录和统计信息来帮助故障诊断。
pgbadger:一个用于分析PG数据库日志的工具。
五、结语
本文来自议题 采用“PostgreSQL技术路线+集中式存储”平滑替换Oracle后如何开展IT架构高效运维? 首发于2023年
觉得本文有用,请转发或点击“在看”,让更多同行看到
资料/文章推荐:
欢迎关注社区 “数据库”技术主题 ,将会不断更新优质资料、文章。地址:https://www.talkwithtrend.com/Channel/179
*本公众号所发布内容仅代表作者观点,不代表社区立场