在现代企业中,数据无处不在,贯穿于各个业务环节和系统之间。无论是跨系统的数据集成、多地域的数据协同,还是实时应用的数据同步,数据的一致性和及时性都至关重要。在数字化转型的过程中,如何确保不同系统、地域、设备之间的数据同步,成为了企业面临的重要挑战。
本专题将基于实践经验,从常见需求入手,为大家介绍热门数据源与数据目标之间的数据同步(全量/增量)如何实现?了解如何快速搭建数据管道,实现数据的高效迁移与无缝同步。
>>> 本文教程为:Oracle → Dameng 的数据同步任务。
在实际应用中,数据同步涉及诸多场景,如容灾备份、应用改造/替代、数据库版本升级/回退、数据库替代、业务分流等,不同的场景在数据流向、同步需求、数据处理等方面会有不同的需求,需要针对性地选择迁移工具和方案。
以 Oracle 到 Dameng(DM) 的数据同步需求为例,随着国家对自主可控的日益重视,目前在各个行业和区域中面临越来越多的国产化,采用有自主知识产权的国产数据库将成为主流。DM 数据库以其丰富的产品架构、优异的性能表现、绝对的安全保证适应各种应用场景需求得到了众多客户的信任。DM 数据库针对 Oracle 数据库可以做到完全替代,但仍需特别关注数据类型的兼容性、存储过程和触发器的调整、同步工具的选择、性能优化以及安全性和合规性。同时,建议在同步完成后进行数据一致性校验,以确保源数据库与目标数据库之间的数据准确无误,从而保障数据相关项目的平稳顺利实施。
Oracle RDBMS 是由甲骨文公司推出的一款关系型数据库管理系统。它是数据库领域一直处于领先地位的产品,具有强稳定性和可移植性,适用于各类大、中、小微机环境。Oracle 数据库系统是世界上流行的关系数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。
优势
高性能:具有高度优化的 SQL 引擎,能够处理大量数据和复杂查询。
可扩展性:支持分布式数据库架构,可以轻松地将数据分布在多个服务器上,以提高性能和可靠性。
安全性:提供了严格的访问控制和加密技术,确保数据的安全性和隐私。
兼容性:支持多种操作系统和硬件平台,可以在各种环境中运行。
可靠性:具有高度可靠的故障恢复功能,可以在系统故障时保护数据的完整性和一致性。
并发控制:支持多用户并发访问,可以有效地处理多个事务的同时进行。
大型数据处理:可以处理大量数据,支持分区表、分区索引等特性,以提高数据处理效率。
Dameng 是新一代大型通用关系型数据库,全面支持 SQL 标准和主流编程语言接口/开发框架。行列融合存储技术,在兼顾 OLAP 和 OLTP 的同时,满足 HTAP 混合应用场景。凭借其丰富的产品架构、优异的性能表现、绝对的安全保证适应各种应用场景需求得到了众多客户的信任,不仅在国产数据库市场中成功占有一席之地,成为国产化替代的常见选项,也逐渐成为国际竞争中的一股重要力量。
自主研发: 拥有完全自主知识产权,符合国家信创工程的战略需求。
跨平台: 支持多种操作系统,如 Windows、Linux 以及国产操作系统。
高性能: 优化了查询和数据处理能力,适合处理大规模复杂数据。
兼容性强: 兼容主流数据库,如 Oracle、MySQL,便于数据迁移。
安全性: 已通过公安部安全四级评测,是安全等级最高的商业数据库之一。
实现 Oracle 到 Dameng 的数据同步的常见方式包括,手动构建数据管道或使用自动化工具:
手动构建数据管道
这种方式适合对数据同步流程有高度自定义需求的场景。开发团队可以通过编写脚本或使用编程语言(如 Python、Java 等)连接 Oracle 数据库和 Dameng 数据库,逐步提取、转换、加载(ETL)数据。在此过程中,需要仔细处理数据类型转换、主键/外键关系的维护,以及增量数据同步的实现。此外,可能还需要开发日志和错误处理机制,以确保数据同步的可靠性。
这种发发通常耗时较长,其间涉及详细的需求分析、复杂的脚本开发、数据转换和映射,以及增量同步的实现。此外,测试、验证和后续运维工作也耗费大量时间,整体过程可能需要数周甚至数月才能完成,并且需要持续维护以确保数据的准确性和实时性。
自动化工具
例如选择使用 TapData 这样的自动化数据集成平台,只需三步就可以在几分钟内开启所需的数据同步任务:
将 Oracle 设置为源连接
将 Dameng 设置为目标连接
定义要传输的数据以及传输频率
TapData 内置 100+ 数据连接器,提供了友好的用户界面和强大的实时同步功能,无需编写复杂的代码即可轻松实现数据的迁移和同步。这样不仅节省了大量的时间和人力成本,还能保障数据同步过程的稳定性和可靠性。对于那些希望快速、高效地完成 Oracle 到 Dameng 数据同步的企业和开发者来说,这样的便捷工具无疑是一个理想的选择。
完成 TapData Agent 部署后,即可跟随以下教程在 TapData 中添加源与目标的数据连接(支持版本:Oracle 9i、10g、11g、12c、18c、19c+;DM 7.x、8.x),并快速构建数据管道。(*涉及工具版本为 TapData 本地部署版)
版本指路:
1. 以具有 DBA 权限的用户身份登录 Oracle 数据库。
2. 依次执行下述格式的命令,创建用于数据复制/转换任务的用户。
Oracle 标准模式
1 CREATE USER username IDENTIFIED BY password;
username:用户名,当 Oracle 处于多租户模式下时,用户名需增加 C##
前缀。
password:密码。
Oracle 多租户模式
1 -- 切换至根容器
2 ALTER SESSION SET CONTAINER=cdb$root;
3
4 -- 创建用户
5 CREATE USER username IDENTIFIED BY password CONTAINER=all;
username:用户名,当 Oracle 处于多租户模式下时,用户名需增加 C##
前缀。
password:密码。
3. 为刚创建的账号授予权限,您也可以基于业务需求自定义权限控制。当需要读取全量+增量数据时:
1 -- 替换下述命令中的 username 为真实的用户名
2 GRANT CREATE SESSION,
3 ALTER SESSION,
4 EXECUTE_CATALOG_ROLE,
5 SELECT ANY DICTIONARY,
6 SELECT ANY TRANSACTION,
7 SELECT ANY TABLE
8 TO username;
*提示:当 Oracle 版本为 12c 及以上时,您还需要执行 GRANT LOGMINING TO username;
格式的命令授予 LOGMINING
权限。
4. 如果您需要获取源库的数据变更以实现增量同步,您还需要以 DBA 身份登录数据库完成下述数据库设置。
a. 开启数据库归档模式(ARCHIVELOG),由于涉及重启数据库,请在业务低峰期操作。
*提示:您也可以执行 SELECT log_mode FROM v$database;
命令来查看是否已开启该功能,返回结果为 ARCHIVELOG 表示已开启,可跳过本步骤。
1 -- 关闭数据库
2 SHUTDOWN IMMEDIATE;
3
4 -- 启动并挂载数据库
5 STARTUP MOUNT;
6
7 -- 开启归档并打开数据库
8 ALTER DATABASE archivelog;
9 ALTER DATABASE OPEN;
1 -- 为库级开启主键补充日志,如需关闭,将 ADD 替换为 DROP
2 ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
3
4
5 -- 为单个表开启主键补充日志,需替换命令中 Schema 名称和 表名称
6 ALTER TABLE Schema名称.表名称 ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
*提示:如日志磁盘存储空间相对充裕,可执行 ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS; 命令开启库级的全补充日志,简化操作流程。
c. 如存在无主键表,您还需要选择执行下述命令,为单个表或所有表开启全补充日志(full supplemental logging)。
1 -- 为单个表开启,需替换命令中 Schema名称和表名称
2 ALTER TABLE Schema名称.表名称 ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
3
4 -- 为所有表开启
5 ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
*提示:如果 Oracle 处于多租户模式,推荐为指定的容器开启,即在执行上述命令前先执行 ALTER SESSION SET CONTAINER=PDB名称;
格式的命令,将更改应用于容器。
b. 提交更改。
1 ALTER SYSTEM SWITCH LOGFILE;
1 ALTER PLUGGABLE DATABASE ALL OPEN;
在连接 DM 之前,还需完成数据库账号的授权等准备工作。TapData 同时支持 DM 作为源或目标,当 DM 作为目标库时,准备工作包括:
1. 以拥有 DBA 权限的身份登录达梦数据库。
2. 依次执行下述格式的命令,创建用于数据复制/转换任务的用户。
1 CREATE USER username IDENTIFIED BY "password" DEFAULT TABLESPACE table_space_name;
username:用户名
password:密码
table_space_name:表空间名称
3. 为刚创建的账号授予权限,也可以基于业务需求自定义权限控制。
1 -- 替换下述命令中的 username 为真实的用户名
2 GRANT CREATE TABLE, DELETE TABLE, INSERT TABLE, SELECT TABLE, UPDATE TABLE, CREATE INDEX TO username;
进入 TapData 控制台,在左侧导航栏,单击连接管理。
单击页面右侧的创建,在弹框中,搜索并选择 Oracle。
在跳转到的页面,根据下述说明填写 Oracle 连接信息:
连接信息设置
连接名称:填写具有业务意义的独有名称。
连接类型:支持将 Oracle 作为源或目标库。
连接方式:可选择通过 SID 或 Service Name 连接。
数据库地址:数据库连接地址。
端口:数据库的服务端口。
SID/Service Name:填写 SID 或 Service Name 信息。
Schema:Schema 名称,即一个连接对应一个 Schema,如需连接多个 Schema 则需创建多个数据连接。
其他连接串参数:额外的连接参数,默认为空。
账号:数据库的账号。
密码:数据库账号对应的密码。
日志插件:基于业务需求选择,默认为 logMiner,相关介绍,见增量日志获取方式介绍。
高级设置
加载表注释:选择是否加载表注释信息(默认关闭),帮助快速识别表的业务意义,当表注释较多时可能影响模型加载效率。
多租户模式:如 Oracle 为多租户模式,需打开该开关并填写 PDB 信息。
使用 SSL:选择是否开启 SSL 连接数据源,可进一步提升数据安全性,开启该功能后还需要上传 SSL 证书文件并填写证书密码,相关文件已在开启 SSL 连接中获取。
时间类型的时区:默认为 0 时区,您也可以根据业务需求手动指定,当配置为其他时区时,会影响不带时区的字段,例如 DATE、TIMESTAMP。
套接字超时时长:设置此参数,以重试机制来避免 LogMiner 执行自动挖掘增量变更时,因意外情况(如套接字交互超时)而形成的僵尸连接,默认值为 0 表示不设置。
共享挖掘:挖掘源库的增量日志,可为多个任务共享同一源库的增量日志采集进程,从而避免重复读取,从而最大程度上减轻增量同步对源库的压力,开启该功能后还需要选择一个外存用来存储增量日志信息。
包含表:默认为全部,您也可以选择自定义并填写包含的表,多个表之间用英文逗号(,)分隔。
排除表:打开该开关后,可以设定要排除的表,多个表之间用英文逗号(,)分隔。
Agent 设置:默认为平台自动分配,您也可以手动指定 Agent。
模型加载时间:如果数据源中的模型数量少于10000个,则每小时更新一次模型信息。但如果模型数量超过10000个,则刷新将在您指定的时间每天进行。
4. 单击连接测试,测试通过后单击保存:
1. 参照 Oracle 连接创建流程,完成 DM 连接配置信息填写,添加数据目标:
2. 测试 DM 的连接:
1. 左侧导航栏点击数据复制,并点击右侧创建:
3. 单击源与目标节点,即可按需对二者进行设置:
4. 保存任务
1. 启动任务,任务全量同步正常运行:
2. 增量同步开启
以上,便是借助 TapData 快速实现数据库 Oracle 到 Dameng 的全、增量同步的模拟教程。
后续,我们还将持续输出本专题内容,欢迎关注 TapData 官方公众号,了解更多。
【推荐阅读】