分享

产品体验官:Tapdata Cloud && Oracle 数据库实时同步(详细版)

 LuciferLiu 2021-12-10

Tapdata 数据同步

🌲 前言

最近新接触了一个数据同步的产品:Tapdata Cloud

Tapdata Cloud 是由 Tapdata 提供的集数据同步、数据融合(即将上线)、数据服务(即将上线)为一体的实时数据融合服务,能够在跨云、跨地域、多类型数据源的场景下,提供毫秒级的实时数据同步服务和数据融合服务。

官网地址:https://cloud./

本文主要演示通过 Tapdata Cloud 来进行 Oracle 数据同步。ヾ(◍°∇°◍)ノ゙

☀️ 环境准备

Tapdata 部署支持 Windows64Linux64docker 三种环境;本文使用 Linux64 环境进行同步测试。

💻 Linux 环境部署

使用 Vagrant 快速部署环境,想玩的朋友可以参考:保姆级教程:Vagrant 从入门到超神玩法

☀️ 顺便分享一下 Vagrant 安装 Oracle 数据库系列:

Vagrant安装Oracle系列

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./console/#/fastDownload
在这里插入图片描述
下载 Tapdata Agent ,官方非常建议在一个独立、干净的文件夹内部署 Tapdata Agent

#通过wget下载Tapdata Agent至本地环境
mkdir /tapdata
cd /tapdata
wget "https://resource./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./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 脚本

分别进入 oracle11goracle12c 目录下,创建 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;

在这里插入图片描述
❤️ 想了解的朋友可参考:❤️

  • Vagrant 一键搞定 Oracle 数据库安装
  • 我写了4000多行Shell脚本,终于实现了一键安装Oracle RAC!!!

💛 数据同步 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 开启有奖公测,❤️ 奖品确实很丰厚!

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多