跳到主要内容
返回博客列表⭐️ 产品体验官:Tapdata Cloud && Oracle 数据库实时同步(详细版) 大家好,这里是 Lucifer三思而后行,专注于提升数据库运维效率。 @TOC目录 最近新接触了一个数据同步的产品:Tapdata Cloud 。 Tapdata Cloud 是由 Tapdata 提供的集数据同步、数据融合(即将上线)、数据服务(即将上线)为一体的实时数据融合服务,能够在跨云、跨地域、多类型数据源的场景下,提供毫秒级的实时数据同步服务和数据融合服务。 官网地址:<font col
2738+ 篇实战文章 1500+ 步骤截图 10 大核心模块
大家好,这里是 Lucifer三思而后行 ,专注于提升数据库运维效率。
🌲 前言
本章目标 :掌握本章核心知识点
前置要求 :完成前序章节学习
预计时长 :60 分钟
最近新接触了一个数据同步的产品:Tapdata Cloud 。
Tapdata Cloud 是由 Tapdata 提供的集数据同步、数据融合(即将上线)、数据服务(即将上线)为一体的实时数据融合服务,能够在跨云、跨地域、多类型数据源的场景下,提供毫秒级的实时数据同步服务和数据融合服务。
官网地址:https://cloud.tapdata.net/
本文主要演示通过 Tapdata Cloud 来进行 Oracle 数据同步。ヾ(◍°∇°◍)ノ゙
☀️ 环境准备
Tapdata 部署支持 Windows64,Linux64,docker 三种环境;本文使用 Linux64 环境进行同步测试。
💻 Linux 环境部署
使用 Vagrant 快速部署环境,想玩的朋友可以参考:⚡️万字图文⚡️ 带你 Vagrant 从入门到超神!❤️
1、添加 Vagrant box
使用 Vagrant 快速部署一套 Linux 环境,主机版本 Centos7.9。
2、初始化启动 Linux 主机
通过新添加的 box 初始化 Vagrantfile:
Vagrant 启动主机:
3、Vagrant 连接主机
通过 vagrant ssh 连接已成功部署的 Centos 环境:
修改 root 用户密码:
修改玩 root 密码后,通过 su - 切换到 root 用户。
🌩 Tapdata Agent 本地部署
❤️ 为什么要部署 Tapdata Agent 到本地环境?❤️
Tapdata Agent是数据同步、数据异构、数据开发场景中的关键程序。以上场景对数据的流转有着极高的实时性要求,因此,通过下载Tapdata Agent并将其部署在你的本地环境,基于低延迟的本地网络,Tapdata Agent能够发挥最大性能以确保数据流转的实时性。
1、安装 Java 环境
Tapdata Agent 的运行依赖本地 Java 环境,因此,在部署前你需要检查本地否已经安装java环境,例如在命令行中使用下方命令:
如图 java -version 返回异常,则说明java环境可能未安装,可参考下方的命令为本地安装java环境(本提示中的openjdk版本仅用于示例):
1 yum -y install java-1.8.0-openjdk
在本地java环境安装完毕后,即可开始下载Tapdata Agent。
2、下载 Tapdata Agent 并部署
安装前请确认您的部署环境中已安装Java1.8版本并正确配置环境变量。
Tapdata Agent 下载方式:
点击 创建Agent,然后 选择 部署 ,进入下载页面,下载属于自己的 Agent。
下载 Tapdata Agent ,官方非常建议在一个独立、干净的文件夹内部署 Tapdata Agent :
1 #通过wget下载Tapdata Agent至本地环境
2 mkdir /tapdata
3 cd /tapdata
4 wget "https://resource.tapdata.net/package/feagent/dfs-1.0.4-prod/tapdata"
下载、部署 Tapdata Agent 无需 root 权限,只需要对部署目录具备读写权限即可,因此创建 tapdata 用户:
1 groupadd tapdata
2 useradd -g tapdata tapdata
授权用户 tabpdata 访问目录 /tapdata 权限:
1 chown -R tapdata:tapdata /tapdata
2 chmod +x /tapdata/tapdata
切换到 tapdata 用户,开始安装部署 tapdata :
1 su - tapdata
2 cd /tapdata
3 ./tapdata start backend --downloadUrl https://resource.tapdata.net/package/feagent/dfs-1.0.4-prod/ --token a/HZzXh5MDbwPGd8hCzZYYF0XXgDZ287oY34Sx3QAq5Z7zikkMRcI62kZHXq8RRJj6VrJcSY6ehw4iM8d8LW1YDkAXDfFv6XW/comFuRjivUKI0bU2CJbyb9YX2hukWTYG7rnIlkqV6c1QG//tczPtDt4Bvjy5eqwShMLprhyrzjDysD0Zqfag0tfN0rKB8YbGn87/61rWjizqFuByrG+V2RQCKmccHqWLwjAKLeMEYFUW6imRIHTrEHFQ9u5qDEDB4xza6Nz+ZeDgwNTHYQAChlL1rg+2B6g8C55dTKdQvOTiumURSbnY3Z8IURjYOw4INb5NmhUFvlcceX6OMguQVMrKfiV2vYzpSAcFKB+3KGJVj71tKGRxaSuZI5AINPxECZg+kgE2vUTMhFwZ9I2oPLDGntSWSnYp2MVqUnTNq446ikmUIuEsTTPhsiTcHO2/8oniGzy4gMGvSmofZI2w==
待上方命令执行完毕后,出现如图所示日志则代表Agent启动成功。
注意:这里的 AGENT 不可照搬,需要自己登录控制台新建 AGENT ,然后点击 部署 申请属于自己的 AGENT 才行。
3、Tapdata Agent 管理命令
在本地对 Tapdata Agent 进行管理,建议设置 /tapdata 环境变量:
1 cat <<EOF>~/.bash_profile
2 export TAPDATA_HOME=/tapdata
3 export PATH=$TAPDATA_HOME:$PATH
4 EOF
5
6 source ~/.bash_profile
1 #关闭 Tapdata Agent
2 tapdata stop
3
4 #启动 Tapdata Agent
5 tapdata start
6
7 #查看 Tapdata Agent 状态
8 tapdata status
Tapdata Agent本地目录结构及功能简介:
至此,Tapdata 环境准备已经完成。🎉
🔆 Oracle 环境部署
同样使用 Vagrant 安装两套 Linux 主机环境,使用 Oracle 一键安装脚本 安装数据库:
1、部署 oracle11g 主机
创建安装目录并上传安装介质:
1 mkdir oracle11g
2 mkdir oracle12c
3 mkdir software
⭐️ 安装介质获取方式: Oracle安装包 ,Oracle一键安装脚本 。
3、配置 Shell 脚本
分别进入 oracle11g 和 oracle12c 目录下,创建 scripts 目录:
1 mkdir scripts
2 cat <<EOF>ora_preinstall.sh
3 #change root password
4 echo oracle | passwd --stdin root
5 #change sshd_config
6 sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
7 systemctl reload sshd.service
8 #mkdir software dir
9 mkdir /soft
10 #cp software to softdir
11 cp /vagrant/* /soft
12 #chmod shell script
13 chmod +x /soft/OracleShellInstall
14 #install oracle database
15 cd /soft
16 ./OracleShellInstall -lf enp0s3 `# 主机网卡名称` -installmode single -dbv 11g -iso N
17 EOF
3、配置 Vagrantfile 脚本
Oracle 11G:
1 cd oracle11g
2 cat <<EOF>Vagrantfile
3 Vagrant.configure("2") do |config|
4 config.vm.box = "centos79"
5 config.vm.provision :shell, path: "/Volumes/DBA/vagrant/oracle11g/scripts/ora_preinstall.sh"
6 config.vm.synced_folder "/Volumes/DBA/vagrant/software", "/vagrant"
7 config.vm.network :forwarded_port, guest: 1521, host: 1521
8 config.vm.network :forwarded_port, guest: 22, host: 22
9 config.vm.network "public_network", ip: "192.168.1.140"
10 config.vm.provider "virtualbox" do |vb|
11 vb.name = "orcl11g"
12 vb.memory = 2048
13 vb.cpus = 2
14 end
15 end
16 EOF
Oracle 12C:
1 cd oracle12c
2 cat <<EOF>Vagrantfile
3 Vagrant.configure("2") do |config|
4 config.vm.box = "centos79"
5 config.vm.provision :shell, path: "/Volumes/DBA/vagrant/oracle12c/scripts/ora_preinstall.sh"
6 config.vm.synced_folder "/Volumes/DBA/vagrant/software", "/vagrant"
7 config.vm.network :forwarded_port, guest: 1521, host: 1522
8 config.vm.network :forwarded_port, guest: 22, host: 23
9 config.vm.network "public_network", ip: "192.168.1.150"
10 config.vm.provider "virtualbox" do |vb|
11 vb.name = "orcl12c"
12 vb.memory = 2048
13 vb.cpus = 2
14 end
15 end
16 EOF
4、启动部署 Oracle 数据库
1 cd oracle11g
2 vagrant up --provider=virtualbox
3 cd oracle12c
4 vagrant up --provider=virtualbox
5、Oracle 11G+12C 创建测试数据
1 create user tapdata identified by tapdata;
2 grant dba to tapdata;
3 conn tapdata/tapdata;
4 create table tapdata (id number,name varchar(100));
5 insert into tapdata values (1,'lucifer');
6 insert into tapdata values (2,'lucifer1');
7 insert into tapdata values (3,'lucifer2');
8 commit;
❤️ 想了解的朋友可参考:❤️
💛 数据同步 Oracle 11GR2 --> 12C
⚡️ 数据同步介绍
工作原理:
数据同步功能是 Tapdata 数据中台的重要功能,同时也是 Tapdata 的核心优势。如上图所示,在两个数据存储节点中,Tapdata Agent 作为处理的桥梁,在用户简单设置后即可全自动的将数据从一个节点中读取(源端),并写入至另一个节点(目标端)。在整个过程中,Tapdata Agent 仅作为数据的处理层确保处理的流程符合用户的预期,Tapdata Agent 不会对用户数据做任何形式的上传、保存。
接入、同步、异构:
在数据同步功能中,Tapdata 中台支持多种数据存储的接入,其不仅支持同类型数据存储(如 MySQL 到MySQL,Oracle 到Oracle)之间的数据同步,同时也支持不同类型数据存储(如 Oracle 到 MySQL,MySQL 到 MongoDB)之间以异构方式进行数据同步。
任务类型:
基于Tapdata Agent的可配置性,其支持全量同步、全量及增量两种任务类型。用户可根据对应的数据场景选择对应的同步模式来满足需求。如全量同步适合一次性的数据迁移、异构场景,而全量及增量同步则适合实时的数据迁移、异构场景。
❤️ ORACLE 配置 Tapdata(源端+目标端)
确保在 Tapdata 中成功添加和使用Oracle数据库,注意:Oracle 实时同步基于Oracle Redo Log,因此需要提前执行某些配置。
1、开启归档日志
以具有 DBA 权限的用户身份登录数据库
查看数据库的 logging mode
1 select log_mode from v$database;
如果返回的结果是 NOARCHIVELOG , 继续按照以下步骤操作:
关闭数据库:
启动并挂载数据库:
开启归档模式并打开数据库:
1 alter database archivelog;
2 alter database open;
2、开启 Supplemental Logging
11G:
1 alter database add supplemental log data;
2 alter system switch logfile;
3 ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
4 ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
5 SELECT supplemental_log_data_min, supplemental_log_data_pk, supplemental_log_data_all FROM v$database;
12C:
1 ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
2 ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
3 ALTER SYSTEM SWITCH LOGFILE;
4 SELECT supplemental_log_data_min, supplemental_log_data_pk, supplemental_log_data_all FROM v$database;
3、创建用户账号
创建用户帐户并分配权限:
1 --前面已经创建,这里不再创建用户
2 --CREATE USER tapdata IDENTIFIED BY tapdata;
3 GRANT create session, alter session, execute_catalog_role, select any dictionary, select any transaction, select any table, create any table, create any index, unlimited tablespace to tapdata;
至此,已配置完 Oracle 11G 源端数据库。
☀️ Tapdata Cloud 连接 Oracle 11G+12C
首先需要打开 Tapdata Cloud 控制台。
1、创建连接
2、选择 Oracle
3、填写关键信息
根据提示填写信息,具体可参考:Oracle 创建连接
注意:这里的 Schema 值需要大写!
4、测试连接
测试连接是否成功,具体可参考:Oracel 的连接测试与常见问题
以同样的方式添加 Oracle 12C ,添加成功后显示如下:
🌀 创建同步任务
创建好连接之后,需要创建任务来配置进行数据同步。
1、创建任务
配置源端和目标端连接,选择上一步中新建的连接:
2、配置任务
设置任务,本次选择 全量+增量 类型,全量写入模式:
3、选择同步表
这里选择需要同步的表,添加到目标端:
同时还支持 改名 和 字段映射:
点击完成按钮,即可。如果点击没有反应,可以尝试退回上一步,再回来点击完成。
4、启动任务
点击完成后,任务状态为 待启动,可以通过启动任务来开始:
先去目标端 Oracle 12C 查询表 Lucifer 是否存在:
确认没有表 Lucifer,启动任务:
5、运行监控
点击 运行监控 可以看到同步情:
6、报错处理
可以看到,这里报错了,看了一下日志记录:
由于我之前创建表时,没有创建主键,咨询官方之后,确认必须需要表带主键才可以 ,因此,新增表主键:
1 alter table lucifer add constraint tb_lucifer_pk primary key (id);
2 alter table tapdata add constraint tb_tapdata_pk primary key (id);
新增表主键之后,需要重新加载数据源,即连接管理那里连接测试即可。
回到运行监控页面,重置之后重新同步:
重置 即清除进度,回到最初,然后点击启动即可。
7、同步测试
连接 Oracle 12C 目标端,查询 Lucifer 表的数据:
发现数据已经同步成功。
测试源端 Oracle 11G 写入数据之后,目标端是否同步:
源端:
1 insert into tapdata values (17,'haha');
2 insert into lucifer values (26,'hah1a');
3 delete from tapdata where id=1;
4 delete from lucifer where id=2;
5 commit;
目标端:
1 select * from lucifer;
2 select * from tapdata;
查看监控页面,可以发现源端的操作记录均已同步:
❤️ 至此,Oracle 不同版本间的实时数据同步测试已经完成。
🌊 写在最后
首先,给 Tapdata 的文档点赞一波,写的真的很详细易懂!
本文从无到有地展示了所有环境的安装部署,数据同步的完整步骤以及一些需要注意的事项,可以说是尽善尽美了。之后,应该还会写异构数据库之间的同步教程。
总体体验来说,Tapdata Cloud 在安装部署和使用方面,大大降低了技术难度,相较于其他一些数据同步产品,在入门体验上更好。关于实时同步的效率,由于没有实测生产,不做过多的评价。
感兴趣的朋友可以多多测试,希望 Tapdata 能够越做越好!同时还可以参加 Tapdata 的新活动:推荐 | 异构数据库同步云平台 Tapdata Cloud 开启有奖公测 ,❤️ 奖品确实很丰厚!
⭐️ 可直接扫码参加:
往期精彩文章
感谢您的阅读,这里是 Lucifer三思而后行 ,欢迎点赞+关注 ,我会持续分享数据库知识、运维技巧。
⭐️ 产品体验官:Tapdata Cloud && Oracle 数据库实时同步(详细版) - DBA 学习之路