暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

5分钟搞定 Oracle 到 MySQL 实时数据同步-CloudCanal实战

ClouGence 2022-01-04
474

简述

CloudCanal 2.1.0.x 版本开始支持 Oracle 作为源端的数据迁移同步能力,目前邀请测试中。

本文通过 Oracle 到 MySQL 的数据迁移同步案例简要介绍这个源端的能力。链路特点:结构迁移、全量迁移、增量同步(数据)、数据校验全流程全自动化。

此文章简要介绍如何快速构建一条长期稳定运行的 Oracle->MySQL 数据链路。

技术要点

将数据从 Oracle 中同步出来有两种方式可以选择

  • 物化视图日志

  • 使用 Redo 日志

权限问题

请确保添加的数据源账号可以访问如下 13 张表和 1 个函数 ,或者使用一个具有 DBA 权限的 Oracle 账号。

  • 表 SYS.DBA_USERS

  • 表 SYS.DBA_TABLES

  • 表 SYS.DBA_TAB_COLS

  • 表 SYS.DBA_TAB_COMMENTS

  • 表 SYS.DBA_COL_COMMENTS

  • 表 SYS.PRODUCT_COMPONENT_VERSION

  • 表 SYS.DBA_CONSTRAINTS

  • 表 SYS.DBA_CONS_COLUMNS

  • 表 SYS.DBA_INDEXES

  • 表 SYS.DBA_IND_COLUMNS

  • 表 v$version

  • 表 v$database

  • 表 v$tablespace

对于物化视图方案来讲需要有额外的下列权限

  • 语句 CREATE MATERIALIZED VIEW LOG ON xxx

  • 语句 CREATE INDEX xxxx

对于 Redo 方案来将需要有 LOGMNR 相关的权限

  • 表 SYS.ALL_LOG_GROUPS

  • 表 v$logfile

  • 表 v$log

  • 表 v$archived_log

  • 表 v$logmnr_logs

  • 存储过程 

    SYS.DBMS_LOGMNR_D.BUILD

  • 存储过程 

    SYS.DBMS_LOGMNR.ADD_LOGFILE

  • 存储过程 

    SYS.DBMS_LOGMNR.START_LOGMNR

  • 存储过程 

    SYS.DBMS_LOGMNR.END_LOGMNR

  • 语句 ALTER TABLE xxxx DROP SUPPLEMENTAL LOG xxx

  • 语句 ALTER TABLE xxxx ADD SUPPLEMENTAL LOG xxx

  • 语句 ALTER SYSTEM ARCHIVE LOG CURRENT

在配置同步任务之前需要确保上面的 Oracle 权限,另外作为源端 Oracle 全量阶段还需要读取对应表的权限。

举个 "栗子"

准备 CloudCanal

  • SaaS 版参考 自建机器客户端安装(https://doc-cloudcanal.clougence.com/business/quick/quick_start)

  • 社区版参考 Docker安装(https://doc-cloudcanal.clougence.com/operation/install_linux)

添加数据源

  • 登录 CloudCanal 平台

  • 数据源管理 -> 添加数据源

  • 选择 自建数据源 ,并填写相关数据库信息,其中 网络地址 请按提示带上端口号

  • 如下已添加完 Oracle 和 MySQL

创建同步任务

  • 任务管理->新建任务

  • 源端选择刚添加的 Oracle 数据源,目标选择 MySQL, 分别点击 测试连接 按钮以测试数据库连通性和获取 schema 级别元信息

  • 点击下一步

  • 选择 数据同步,并且勾选全量数据初始化

  • 规格可以根据任务重要度以及部署机器的内存容量合理选择,一般 2GB 内存规格即可

  • 点击下一步

  • 勾选需要同步的表,如果目标表为橙色,表示不存在同名表,任务创建完成后自动进行结构迁移。也可以下拉框选择表进行映射

  • 勾选需要同步的 INSERT/UPDATE/DELETE 操作,默认全选

  • 点击下一步

  • 通过勾选做列映射列裁剪

  • 点击下一步

  • 对任务内容进行创建 ,如果任务不需要立刻运行 , 可置灰自动启动任务按钮

  • 点击确认创建

    任务同步

    • 任务分为 3 个阶段:结构迁移数据初始化数据同步,每一个阶段完成时,状态自动流转,直到同步稳态

      • 数据初始化:将源端所选库表数据以全量迁移方式搬迁到对端

      • 结构迁移:当对端数据库不存在对应的库表时 CloudCanal 会自动将 Oracle 的表在对端创建出来

      • 数据同步:准实时的同步增量数据,即源端数据库上发生的增、删、改操作同步到对端数据库上

    FAQ

    目前 Oracle 源端还支持哪些数据源?

    除了 Oracle 到 MySQL 之外,截止社区版 2.0.1.1 版本,还支持下面这些链路

    • Oracle -> PostgreSQL

    • Oracle -> Greenplum

    • Oracle -> TiDB

    • Oracle -> Oracle

    • Oracle -> Kudu 。

    预检失败会有哪些影响?

    一些小伙伴可能在创建任务的时候遇到类似如下报错信息,可能会有一些疑惑。在创建任务的最后阶段我们会进行一些检测,Oracle 作为源端会存在如下一些检测项目。

    物化视图模式下

    • 如果表已经创建了物化视图日志表那么预检失败。

    Redo 模式下

    • 开启日志归档模式 alter database archivelog
      开启过程需要数据库离线。

    • 需要开启最小补全日志 alter database add supplemental log data

    总结

    本文简单介绍了如何使用 CloudCanal 快速构建Oracle-> MySQL 数据迁移同步链路,更多的源端和目标端陆续开放。各位小伙伴,如果觉得还不错,请点赞、评论加转发吧。

    更多精彩

    参加内测

    Oracle 源端目前处于 beta 阶段,你可以通过添加我们的微信小助手(suhuayue001),进入内测群提前进行测试验证,获得提交需求优先解决的机会,包括支持以 Oracle 为源端的、尚未开通的链路或功能。

    文章转载自ClouGence,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论