⭐️ 产品体验官:Tapdata Cloud && Oracle 数据库实时同步(详细版)
Posted Lucifer三思而后行
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了⭐️ 产品体验官:Tapdata Cloud && Oracle 数据库实时同步(详细版)相关的知识,希望对你有一定的参考价值。
Tapdata 数据同步
🌲 前言
最近新接触了一个数据同步的产品: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 -version
返回异常,则说明java环境可能未安装,可参考下方的命令为本地安装java环境(本提示中的openjdk版本仅用于示例):
yum -y install java-1.8.0-openjdk
在本地java环境安装完毕后,即可开始下载Tapdata Agent。
2、下载 Tapdata Agent 并部署
安装前请确认您的部署环境中已安装Java1.8版本并正确配置环境变量。
Tapdata Agent 下载界面:https://cloud.tapdata.net/console/#/fastDownload
下载 Tapdata Agent ,官方非常建议在一个独立、干净的文件夹内部署 Tapdata Agent
:
#通过wget下载Tapdata Agent至本地环境
mkdir /tapdata
cd /tapdata
wget "https://resource.tapdata.net/package/feagent/dfs-1.0.4-prod/tapdata"
下载、部署 Tapdata Agent 无需 root 权限,只需要对部署目录具备读写权限即可,因此创建 tapdata 用户:
groupadd tapdata
useradd -g tapdata tapdata
授权用户 tabpdata
访问目录 /tapdata
权限:
chown -R tapdata:tapdata /tapdata
chmod +x /tapdata/tapdata
切换到 tapdata 用户,开始安装部署 tapdata :
su - tapdata
cd /tapdata
./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启动成功。
3、Tapdata Agent 管理命令
在本地对 Tapdata Agent 进行管理,建议设置 /tapdata 环境变量:
cat <<EOF>~/.bash_profile
export TAPDATA_HOME=/tapdata
export PATH=$TAPDATA_HOME:$PATH
EOF
source ~/.bash_profile
#关闭 Tapdata Agent
tapdata stop
#启动 Tapdata Agent
tapdata start
#查看 Tapdata Agent 状态
tapdata status
Tapdata Agent本地目录结构及功能简介:
至此,Tapdata 环境准备已经完成。🎉
🔆 Oracle 环境部署
同样使用 Vagrant
安装两套 Linux 主机环境,使用 Oracle 一键安装脚本
安装数据库:
1、部署 oracle11g 主机
创建安装目录并上传安装介质:
mkdir oracle11g
mkdir oracle12c
mkdir software
⭐️ 安装介质获取方式:Oracle安装包,Oracle一键安装脚本。
3、配置 Shell 脚本
分别进入 oracle11g
和 oracle12c
目录下,创建 scripts
目录:
mkdir scripts
cat <<EOF>ora_preinstall.sh
#change root password
echo oracle | passwd --stdin root
#change sshd_config
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
systemctl reload sshd.service
#mkdir software dir
mkdir /soft
#cp software to softdir
cp /vagrant/* /soft
#chmod shell script
chmod +x /soft/OracleShellInstall.sh
#install oracle database
cd /soft
./OracleShellInstall.sh -i 192.168.1.140 -installmode single -dbv 11g -iso N
EOF
需要注意 -dbv
和 -i
参数,需要根据实际情况修改,12C 需要修改为对应 12c。
3、配置 Vagrantfile 脚本
Oracle 11G:
cd oracle11g
cat <<EOF>Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "centos79"
config.vm.provision :shell, path: "/Volumes/DBA/vagrant/oracle11g/scripts/ora_preinstall.sh"
config.vm.synced_folder "/Volumes/DBA/vagrant/software", "/vagrant"
config.vm.network :forwarded_port, guest: 1521, host: 1521
config.vm.network :forwarded_port, guest: 22, host: 22
config.vm.network "public_network", ip: "192.168.1.140"
config.vm.provider "virtualbox" do |vb|
vb.name = "orcl11g"
vb.memory = 2048
vb.cpus = 2
end
end
EOF
Oracle 12C:
cd oracle12c
cat <<EOF>Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "centos79"
config.vm.provision :shell, path: "/Volumes/DBA/vagrant/oracle12c/scripts/ora_preinstall.sh"
config.vm.synced_folder "/Volumes/DBA/vagrant/software", "/vagrant"
config.vm.network :forwarded_port, guest: 1521, host: 1522
config.vm.network :forwarded_port, guest: 22, host: 23
config.vm.network "public_network", ip: "192.168.1.150"
config.vm.provider "virtualbox" do |vb|
vb.name = "orcl12c"
vb.memory = 2048
vb.cpus = 2
end
end
EOF
4、启动部署 Oracle 数据库
cd oracle11g
vagrant up --provider=virtualbox
cd oracle12c
vagrant up --provider=virtualbox
5、Oracle 11G+12C 创建测试数据
create user tapdata identified by tapdata;
grant dba to tapdata;
conn tapdata/tapdata;
create table tapdata (id number,name varchar(100));
insert into tapdata values (1,'lucifer');
insert into tapdata values (2,'lucifer1');
insert into tapdata values (3,'lucifer2');
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 权限的用户身份登录数据库
sqlplus / as sysdba
查看数据库的 logging mode
select log_mode from v$database;
如果返回的结果是 NOARCHIVELOG , 继续按照以下步骤操作:
关闭数据库:
shutdown immediate;
启动并挂载数据库:
startup mount;
开启归档模式并打开数据库:
alter database archivelog;
alter database open;
2、开启 Supplemental Logging
11G:
alter database add supplemental log data;
alter system switch logfile;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
SELECT supplemental_log_data_min, supplemental_log_data_pk, supplemental_log_data_all FROM v$database;
12C:
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
ALTER SYSTEM SWITCH LOGFILE;
SELECT supplemental_log_data_min, supplemental_log_data_pk, supplemental_log_data_all FROM v$database;
3、创建用户账号
创建用户帐户并分配权限:
--前面已经创建,这里不再创建用户
--CREATE USER tapdata IDENTIFIED BY tapdata;
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 是否存在:
select * from lucifer;
确认没有表 Lucifer,启动任务:
5、运行监控
点击 运行监控
可以看到同步情:
6、报错处理
可以看到,这里报错了,看了一下日志记录:
由于我之前创建表时,没有创建主键,咨询官方之后,确认必须需要表带主键才可以,因此,新增表主键:
alter table lucifer add constraint tb_lucifer_pk primary key (id);
alter table tapdata add constraint tb_tapdata_pk primary key (id);
新增表主键之后,需要重新加载数据源,即连接管理
那里连接测试即可。
回到运行监控
页面,重置
之后重新同步:
重置
即清除进度,回到最初,然后点击启动即可。
7、同步测试
连接 Oracle 12C 目标端,查询 Lucifer 表的数据:
发现数据已经同步成功。
测试源端 Oracle 11G 写入数据之后,目标端是否同步:
源端:
insert into tapdata values (17,'haha');
insert into lucifer values (26,'hah1a');
delete from tapdata where id=1;
delete from lucifer where id=2;
commit;
目标端:
select * from lucifer;
select * from tapdata;
查看监控页面,可以发现源端的操作记录均已同步:
❤️ 至此,Oracle 不同版本间的实时数据同步测试已经完成。
🌊 写在最后
首先,给 Tapdata 的文档点赞一波,写的真的很详细易懂!
本文从无到有地展示了所有环境的安装部署,数据同步的完整步骤以及一些需要注意的事项,可以说是尽善尽美了。之后,应该还会写异构数据库之间的同步教程。
总体体验来说,Tapdata Cloud 在安装部署和使用方面,大大降低了技术难度,相较于其他一些数据同步产品,在入门体验上更好。关于实时同步的效率,由于没有实测生产,不做过多的评价。
感兴趣的朋友可以多多测试,希望 Tapdata 能够越做越好!同时还可以参加 Tapdata 的新活动:推荐 | 异构数据库同步云平台 Tapdata Cloud 开启有奖公测,❤️ 奖品确实很丰厚!
本次分享到此结束啦~
如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持,你的支持就是我创作最大的动力。
以上是关于⭐️ 产品体验官:Tapdata Cloud && Oracle 数据库实时同步(详细版)的主要内容,如果未能解决你的问题,请参考以下文章
单挑kettle/datax,实测免费数据同步工具Tapdata Cloud如何实时同步SQLServer,Oracle,MySQL,PG,MongoDB,达梦,TiDB,ES等异构数据库