【工作实践】利用Oracle ADG 实现读写分离

业务背景

        随着公司业务的飞速发展,我们面临着一个前所未有的挑战:订单数据量的急剧上升
        以往,我们通过定期清理历史数据来维护数据库性能,能够满足日常性能需要。
        但现在由于客户需求的变化,他们要求我们能够长期保留订单数据。这一新需求使得原有的数据管理方案不再适用,我们必须寻找新的解决办法。

问题分析

        业务高峰期间,大量的查询和写操作需要同时执行,这对数据库性能造成了严重的影响。我们分析SQL后发现,一些大型查询操作对数据库性能消耗巨大——在高并发场景下,读操作和写操作争夺资源导致了数据库响应时间的增加,进而影响了用户体验。

解决方案:读写分离

        为了解决这个问题,我们决定引入读写分离技术,将耗时的大查询操作转移到备份数据库上执行,从而减轻主数据库的压力,确保写操作的稳定性。

技术选型

ADG 介绍

        ADGOracle11g企业版的新特性,需要单独的License.可以打开Physical standbyread only模式,standby可以用来做报表系统、查询、排序或Web站点。实时读写分离,以此来分担primary DB的压力。

ADG特性
  • 实时查询:可以打开Physical standbyread only模式并实时应用redo data
  • 启用RMAN block-change tracking:用户利用RMANprimary的增量备份恢复到standby,性能最高可提升20倍。
  • Database只读模式
    • 允许操作
      SELECT操作,包括需要大量临时段的查询
      ALTER SESSION,ALTER SYSTEM
      SET ROLE
      ● 调用Procedure
      ● 使用DBLINK写数据到远程数据库
      ● 通过DBLINK调用远程数据库的Procedure
      ● 在事务级别读一致性使用SET TRANSACTION READ ONLY
      ● 执行复杂的查询,如:GROUPING SET,WITH查询语句等
    • 不支持的操作
      ● 任何DMLDDL操作
      ● 访问本地序列的查询
      ● 对本地临时表的DML操作
ADG启用
  • 查询是否启用ADG
select database_role ,open_mode from v$database
  • 启用ADG
alter database open read only;
recover managed standby database disconnect using current logfile;
ADG 延迟原因

CPU处理能力不足
● 网络延迟
● 带宽限制

技术实践

实施前的准备

1.环境评估:

审核当前的硬件环境,确保备库服务器的配置能够支撑预期的读操作负载。分析网络带宽和延迟,以确保数据同步的实时性和可靠性。

2.软件和许可:

确保拥有`Oracle 11g`的合适版本以支持`ADG`,同时检查`Oracle`许可证以确认`ADG`功能的可用性。

3.数据一致性检查:

在主库上执行数据一致性检查,确保在开始同步之前数据无误。

4.备份与恢复策略:

制定并测试备份与恢复策略,以防在实施过程中出现数据丢失或其他故障。
查询逻辑代码的修改

1.增加线程参数

增加一个线程参数来标志是否标记是否是查询备库

2.修改查询逻辑

备库查询前设置线程参数,查询结束后去除线程参数

3.修改获取数据库链接逻辑

根据线程参数是否为备库查询来获取不同的数据库链接
实施步骤

1.安装和配置ADG

在备库上安装`Oracle`软件,并配置为`ADG`模式。设置数据文件、归档日志文件和参数文件的传输。

2.数据同步:

从主库同步数据到备库,确保数据的一致性和完整性。

3.角色转换测试:

进行主备库的角色转换测试,以验证故障转移和数据一致性。

4.读写分离策略:

在应用程序层实施读写分离逻辑,确保读操作被重定向到备库。

5.性能调优:

监控系统性能,根据需要调整`ADG`配置和服务器资源分配。
注意事项

1.监控与维护:

持续监控`ADG`的状态和性能,确保同步延迟在可接受范围内。定期检查和维护索引,以优化查询性能。

2.故障处理:

制定详细的故障恢复流程,确保在出现问题时可以迅速响应。

3.安全性:

确保适当的安全措施到位,保护数据在传输过程中的安全。
技术实践的成果

1.性能提升:

.通过将读操作重定向到备库,主库的负载显著减少,写操作的性能得到了改善。

2.高可用性:

`ADG`的引入增强了数据库的高可用性,故障转移过程更加平滑,业务连续性得到保障。

3.业务支撑:

随着订单数据量的增长,系统能够更好地支撑业务需求,用户体验显著提升。

4.维护便利性:

数据库的维护和升级变得更加方便,因为可以在不影响读服务的情况下对主库进行维护。

5.成本效益:

尽管引入`ADG`需要一定的前期投资,但从长远来看,由于系统性能的提升和维护成本的降低,整体拥有成本效益。

        通过以上技术实践,我们成功地实现了Oracle 11gActive Data Guard来做到读写分离,极大地提升了数据库系统的性能和稳定性。这一变更不仅解决了当前的业务痛点,也为未来的扩展提供了坚实的基础。

都看到这里了 不妨点个赞吧!!!
如果有其他看法,欢迎在评论区交流!!!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伯子南

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值