使用Oracle GoldenGate 的迁移/升级数据库的例子

本文永久地址 https://www.askmac.cn/?p=16819

 

 

  • 通过引入GoldenGate所带来的实际成绩与效果
  • 迁移/升级所需要的东西以及产生的问题
  • 作为解决问题的途径之一的 GoldenGate

–减少停机时间

–迁移切换后的切回

–迁移阶段/确认阶段/并行执行

 

迁移/更新的结果

实际成绩与效果

在机器上计算需要30分钟的切换停止时间缩短为6分钟

成功大幅减少由于减少停机时间锁造成的机会损失

可以在10分钟之内切回之前认为无法实现的切回。

估计人工可以在144人/月的一半以下(有GoldenGate 相关的追加)

通过有效活用资源,成功减少成本

不需要购入、架构用于保存、实验ST的18台机器

成功将偶然性风险限制在最小

 

灵活使用经验

实现必要条件解决问题实际成绩与效果

「最小化机会损失」「风险最小化」「缩减成本」

  • 有怎样的必要条件以及课题?
  • 怎样解决、实现的?

–为了实现目的所需要的结构

–围绕着解决所采取的idea以及tips

为何这么麻烦而困难?

 

迁移/更新的需求以及产生的问题

项目概要

  • 项目概要:

–伴随着机器变更的版本提升

  • 升级的范围:

–OS/DB/Middleware/外部机器等

  • DB相关的结构:

–4节点Oracle Real Application Cluster

  • 应用特性:

–24小时365日online

  • 其他:

–迁移时机中的应用没有更改

 

oggz1

项目中的迁移需求

目标与实现

项目中的迁移需求

 

实际成绩以及结果的考察

需求・问题以及 GoldenGate

  • 可以一口气解决多个需求问题的有潜力的产品
  • 根据技术人员idea可以扩展可能性的产品
  • 如何高效使用、如何解决问题以及需求

关于到底应该如何活用GoldeGate的具体内容

我将介绍使用案例image

 

缩短停机时间

  • 定义停机时间
  • 缩短停机时间的途径
  • 事例中实际应用的整体图

迁移任务以及停机时间

为何需要较长的停机时间

为了保障所做的各种操作所需要的时间

  • 行迁移需要较长时间
  • 依赖数据量以及环境数、尺寸等会增加
  • 迁移后确认所需要的时间

停机时间是指什么
无法提供服务的期间
服务停止到重新启动的时间,那么为何需要停止服务呢?

oggz2

 

迁移任务以及停机时间

缩短的途径

oggz3

  • 缩短停机时间的途径
    • 从当天的工作中去除
      • 从关键路径中排除
  • 缩短当天作业
    • 分割・并行・自动化・最优化

 

缩短途径后的image

oggz4

 

实现执行数据前提

将任务Serialize化的理由

考察问题点

oggz5

数据迁移以及停机

一些较难实现的要点

  • 需要识别同步开始的要点
  • 需要仅仅抽出半自动差分事务(数据)
  • 对于重复事务(数据)的需要认真设计以及控制
  • 控制的设计较难

 

为了实现的结构

GoldenGate 的增量同步

  • 可以同步特定时间以及事务后的数据

–实现对大量时间进行初期迁移/执行更新

  • 可以解决重复事务(HANDLECOLLISIONS)
  • 指定的schema以及对象,可以通过详细分割列以及行等来实现同步

 

oggz6

oggz7

HANDLECOLLISIONS 参数

  • 试着解决重复记录、失踪记录的错误
  • 检测重复记录・错误

–由于变更记录的造成的覆盖(我们判断为适用变更更加安全)

  • 检测失踪数据、错误

–排除变更记录

 

No. 1 2 3 4 5 6 7 8
Source  发行操作 Update
PK
Update
PK
Update
PK以外
Update
PK以外
Insert Insert Delete Delete
Target 同样的Key

有没有记录

没有 没有 没有 没有
OGG Replicat的操作

(一般操作)

对Insert 变更

(一般操作)

舍弃Update 对Update变更

(一般操作)

(一般操作)

舍弃Delete (内部解决Err )

※ 这是有主key的操作概要。主key相关的需要考虑的问题请参考以下内容。

对于没有「KROWN# 153607 [GG]主key、唯一key的表,请注意使用HANDLECOLLISIONS

 

oggz8

 

数据迁移以及停机时间

较难实现的要点

  • 需要识别同步开始的要点
  • 需要仅仅抽出半自动差分事务(数据)
  • 对于重复事务(数据)的需要认真设计以及控制
  • 控制的设计较难
  • 活用GoldenGate 来轻松地使用

 

解决问题以及GoldenGate

事先执行数据迁移

活用GoldenGate 的结构可以简单安装

仅对增量Transaction

从关键路径中排除数据迁移

不需要设计增量抽出,以及精细制作

 

oggz9

事先执行数据完整性比较

 

将任务Serialize化的理由

考察问题点

oggz10

比较完整性以及停机时间

比较难实现的要点

  • 需要比较、确认完整性的断面使其一致

–要用怎样的单位来比较

–处理中的事务该如何处置?(提供24小时服务)

 

oggz11

 

为了实现的结构

Database 以及 GoldenGate

oggz12

 

GoldenGate Tokens 选项

设定时操作的概要

  • 对于已指定的对象,可以抽出 Oracle DB SCN (Source DB 側)

–通过设置,可以在Trail文件中输出被 Capture的Source中的 SCN

– 使用Logdump Utility可以确认 Token 信息

–指定通过其他的工具等获得的 SCN来使用时,就需要考虑到使用工具时需要注意的问题

oggz13

DatabaseFlashback Query 技术

使用时的操作概要

可以参考过去的时间点中的数据

  • 在内部使用UNDO表区域

–对表结构的变更无法返回等限制于回滚表相同

  • 仅供参考不可更新

–可以参考已经被删除的行数据(DELETE)

 

oggz14

 

迁移任务与停机时间

比较难以实现的要点

  • 需要使得比较的断面一致(完整性确认)

–到底该用怎样的单位比较

–处理中的事务该如何处置

  • 通过活用Database以及GoldenGate 的结构来实现

 

解决问题以及GoldenGate

事先执行数据迁移

活用GoldenGate 的结构可以简单安装

仅对增量Transaction

从关键路径中排除数据迁移

不需要设计增量抽出,以及精细制作

 

oggz15

 

切换前迁移的整体情况

考虑到了缩短停机时间的设计

事先执行数据迁移以及完整性比较

oggz16

 

迁移切换完成后的切回

  • 需要切回的任务
  • 事例中的整体情况

 

难以切回的原因

考察问题

  • 难以获得切换以后的差分数据的同步
  • 执行数据整体迁移(返回)时,需要花费较长时间

 

oggz17

迁移任务以及切回

切回所需要的时间

=([现≫新] 切换以后的数据同步) + (② 切换工作)

 

① 表示通过GoldenGate 增量同步已经解决了。

 

重新连载为了实现的结构

  • 可以同步指定时间以及事务以后的数据

–事先对大量数据进行初始迁移/执行更新

  • 可以解决重复事务(HANDLECOLLISIONS)
  • 可以同步指定的schema以及object等数据

oggz18

回切的整体情况

考虑到切回的设计

oggz19

 

移动阶段确认阶段并行执行

  • 通过阶段性的执行来降低风险
  • 事例中实际的整体情况

 

迁移相关的风险对策

风险是什么,具体能做到哪一步

  • 将风险最小化、分散化

–担心性能恶化

  • 与正式环境相同的状态下是否可以测试(环境・规格・数据)
  • 是否可以以日期为间隔测试系统循环

–担心是否是人为错误

  • 是否可以分割切换,进行阶段性的发行
  • 是否可以以会发生错误为前提,将影响控制到最小

–DB以外的问题的担心

  • DB以外的服务器是否无法提前切换

 

考虑到阶段性迁移/并行执行的设计

在新的正式环境中使用测试

ogg20

 

考虑了阶段迁移/并行执行的设计

一个个执行对新正式环境的切换

oggz20

oggz21

 

 

oggz22

 

迁移相关的风险对策

将风险最小化、分散化

–担心性能恶化   à测试新的正式环境

  • 与正式环境相同的状态下是否可以测试(环境・规格・数据)
  • 是否可以以日期为间隔测试系统循环

–担心是否是人为错误à出现对新环境的切换、一个个执行业务

  • 是否可以分割切换,进行阶段性的发行
  • 是否可以以会发生错误为前提,将影响控制到最小

–DB以外的问题的担心à对一个个的layer执行新环境的切换

  • DB以外的服务器是否无法提前切换

 

作为问题解决途径的GoldenGate

迁移相关的风险对策

将风险最小化、分散化

–担心性能恶化   à测试新的正式环境

  • 与正式环境相同的状态下是否可以测试(环境・规格・数据)
  • 是否可以以日期为间隔测试系统循环

–担心是否是人为错误à出现对新环境的切换、一个个执行业务

  • 是否可以分割切换,进行阶段性的发行
  • 是否可以以会发生错误为前提,将影响控制到最小

–DB以外的问题的担心à对一个个的layer执行新环境的切换

  • DB以外的服务器是否无法提前切换

 

作为问题解决途径的GoldenGate

通过GoldenGate来一口气解决多个需求与问题

  • 减少停机时间
  • 迁移切换后的切回
  • 阶段性迁移/阶段性确认/并行运行

通过高效使用GoldenGate

成功实现迁移/更新

 

咨询服务的介绍

本公司的共享的过往成果

  • GoldenGate案例中的情况

–几乎所有的案例中都导入/采用了咨询服务

–我们有与Partner合作进行导入的经历

  • 主要可以对应的案例(参考)

–用于导入的案例,事先获得PoC的技术支援

–共享在实际项目中累积的经验

–在设计/实际运用中各种Review支援

–详细的参数设计以及使用设计、测试(性能/故障)的支援

–实时性等SLA需求对severe的案例的支持

–对象是旧版本的Oracle Database时

–迁移时的切回相关的设计支持

 

 

咨询支持的模型范围

 

oggz23

 


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *