电竞比分网-中国电竞赛事及体育赛事平台

分享

產(chǎn)品體驗(yàn)官:Tapdata Cloud && Oracle 數(shù)據(jù)庫實(shí)時(shí)同步(詳細(xì)版)

 LuciferLiu 2021-12-10

Tapdata 數(shù)據(jù)同步

🌲 前言

最近新接觸了一個(gè)數(shù)據(jù)同步的產(chǎn)品:Tapdata Cloud

Tapdata Cloud 是由 Tapdata 提供的集數(shù)據(jù)同步、數(shù)據(jù)融合(即將上線)、數(shù)據(jù)服務(wù)(即將上線)為一體的實(shí)時(shí)數(shù)據(jù)融合服務(wù),能夠在跨云、跨地域、多類型數(shù)據(jù)源的場景下,提供毫秒級的實(shí)時(shí)數(shù)據(jù)同步服務(wù)和數(shù)據(jù)融合服務(wù)。

官網(wǎng)地址:https://cloud./

本文主要演示通過 Tapdata Cloud 來進(jìn)行 Oracle 數(shù)據(jù)同步。ヾ(?°?°?)ノ゙

?? 環(huán)境準(zhǔn)備

Tapdata 部署支持 Windows64Linux64docker 三種環(huán)境;本文使用 Linux64 環(huán)境進(jìn)行同步測試。

💻 Linux 環(huán)境部署

使用 Vagrant 快速部署環(huán)境,想玩的朋友可以參考:保姆級教程:Vagrant 從入門到超神玩法

?? 順便分享一下 Vagrant 安裝 Oracle 數(shù)據(jù)庫系列:

Vagrant安裝Oracle系列

1、添加 Vagrant box

使用 Vagrant 快速部署一套 Linux 環(huán)境,主機(jī)版本 Centos7.9。在這里插入圖片描述

2、初始化啟動(dòng) Linux 主機(jī)

通過新添加的 box 初始化 Vagrantfile:
在這里插入圖片描述
Vagrant 啟動(dòng)主機(jī):
在這里插入圖片描述

3、Vagrant 連接主機(jī)

通過 vagrant ssh 連接已成功部署的 Centos 環(huán)境:
在這里插入圖片描述
修改 root 用戶密碼:
在這里插入圖片描述
修改玩 root 密碼后,通過 su - 切換到 root 用戶。

🌩 Tapdata Agent 本地部署

?? 為什么要部署 Tapdata Agent 到本地環(huán)境???

Tapdata Agent是數(shù)據(jù)同步、數(shù)據(jù)異構(gòu)、數(shù)據(jù)開發(fā)場景中的關(guān)鍵程序。以上場景對數(shù)據(jù)的流轉(zhuǎn)有著極高的實(shí)時(shí)性要求,因此,通過下載Tapdata Agent并將其部署在你的本地環(huán)境,基于低延遲的本地網(wǎng)絡(luò),Tapdata Agent能夠發(fā)揮最大性能以確保數(shù)據(jù)流轉(zhuǎn)的實(shí)時(shí)性。

1、安裝 Java 環(huán)境

Tapdata Agent 的運(yùn)行依賴本地 Java 環(huán)境,因此,在部署前你需要檢查本地否已經(jīng)安裝java環(huán)境,例如在命令行中使用下方命令:

java -version

在這里插入圖片描述
如圖 java -version 返回異常,則說明java環(huán)境可能未安裝,可參考下方的命令為本地安裝java環(huán)境(本提示中的openjdk版本僅用于示例):

yum -y install java-1.8.0-openjdk

在這里插入圖片描述
在本地java環(huán)境安裝完畢后,即可開始下載Tapdata Agent。

2、下載 Tapdata Agent 并部署

安裝前請確認(rèn)您的部署環(huán)境中已安裝Java1.8版本并正確配置環(huán)境變量。

Tapdata Agent 下載界面:https://cloud./console/#/fastDownload
在這里插入圖片描述
下載 Tapdata Agent ,官方非常建議在一個(gè)獨(dú)立、干凈的文件夾內(nèi)部署 Tapdata Agent

#通過wget下載Tapdata Agent至本地環(huán)境
mkdir /tapdata
cd /tapdata
wget "https://resource./package/feagent/dfs-1.0.4-prod/tapdata"

在這里插入圖片描述
下載、部署 Tapdata Agent 無需 root 權(quán)限,只需要對部署目錄具備讀寫權(quán)限即可,因此創(chuàng)建 tapdata 用戶:

groupadd tapdata
useradd -g tapdata tapdata

在這里插入圖片描述
授權(quán)用戶 tabpdata 訪問目錄 /tapdata 權(quán)限:

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==

在這里插入圖片描述
待上方命令執(zhí)行完畢后,出現(xiàn)如圖所示日志則代表Agent啟動(dòng)成功。

3、Tapdata Agent 管理命令

在本地對 Tapdata Agent 進(jìn)行管理,建議設(shè)置 /tapdata 環(huán)境變量:

cat <<EOF>~/.bash_profile
export TAPDATA_HOME=/tapdata
export PATH=$TAPDATA_HOME:$PATH
EOF

source ~/.bash_profile

在這里插入圖片描述

#關(guān)閉 Tapdata Agent
tapdata stop

#啟動(dòng) Tapdata Agent
tapdata start 

#查看 Tapdata Agent 狀態(tài)
tapdata status

在這里插入圖片描述
Tapdata Agent本地目錄結(jié)構(gòu)及功能簡介:
在這里插入圖片描述
至此,Tapdata 環(huán)境準(zhǔn)備已經(jīng)完成。🎉

🔆 Oracle 環(huán)境部署

同樣使用 Vagrant 安裝兩套 Linux 主機(jī)環(huán)境,使用 Oracle 一鍵安裝腳本 安裝數(shù)據(jù)庫:

1、部署 oracle11g 主機(jī)

創(chuàng)建安裝目錄并上傳安裝介質(zhì):

mkdir oracle11g
mkdir oracle12c
mkdir software

在這里插入圖片描述
?? 安裝介質(zhì)獲取方式:Oracle安裝包Oracle一鍵安裝腳本。

3、配置 Shell 腳本

分別進(jìn)入 oracle11goracle12c 目錄下,創(chuàng)建 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 參數(shù),需要根據(jù)實(shí)際情況修改,12C 需要修改為對應(yīng) 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、啟動(dòng)部署 Oracle 數(shù)據(jù)庫

cd oracle11g
vagrant up --provider=virtualbox
cd oracle12c
vagrant up --provider=virtualbox

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

5、Oracle 11G+12C 創(chuàng)建測試數(shù)據(jù)

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 數(shù)據(jù)庫安裝
  • 我寫了4000多行Shell腳本,終于實(shí)現(xiàn)了一鍵安裝Oracle RAC!!!

💛 數(shù)據(jù)同步 Oracle 11GR2 --> 12C

?? 數(shù)據(jù)同步介紹

工作原理:
在這里插入圖片描述

數(shù)據(jù)同步功能是 Tapdata 數(shù)據(jù)中臺(tái)的重要功能,同時(shí)也是 Tapdata 的核心優(yōu)勢。如上圖所示,在兩個(gè)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)中,Tapdata Agent 作為處理的橋梁,在用戶簡單設(shè)置后即可全自動(dòng)的將數(shù)據(jù)從一個(gè)節(jié)點(diǎn)中讀取(源端),并寫入至另一個(gè)節(jié)點(diǎn)(目標(biāo)端)。在整個(gè)過程中,Tapdata Agent 僅作為數(shù)據(jù)的處理層確保處理的流程符合用戶的預(yù)期,Tapdata Agent 不會(huì)對用戶數(shù)據(jù)做任何形式的上傳、保存。

接入、同步、異構(gòu):

在數(shù)據(jù)同步功能中,Tapdata 中臺(tái)支持多種數(shù)據(jù)存儲(chǔ)的接入,其不僅支持同類型數(shù)據(jù)存儲(chǔ)(如 MySQL 到MySQL,Oracle 到Oracle)之間的數(shù)據(jù)同步,同時(shí)也支持不同類型數(shù)據(jù)存儲(chǔ)(如 Oracle 到 MySQL,MySQL 到 MongoDB)之間以異構(gòu)方式進(jìn)行數(shù)據(jù)同步。

任務(wù)類型:

基于Tapdata Agent的可配置性,其支持全量同步、全量及增量兩種任務(wù)類型。用戶可根據(jù)對應(yīng)的數(shù)據(jù)場景選擇對應(yīng)的同步模式來滿足需求。如全量同步適合一次性的數(shù)據(jù)遷移、異構(gòu)場景,而全量及增量同步則適合實(shí)時(shí)的數(shù)據(jù)遷移、異構(gòu)場景。

在這里插入圖片描述

?? ORACLE 配置 Tapdata(源端+目標(biāo)端)

確保在 Tapdata 中成功添加和使用Oracle數(shù)據(jù)庫,注意:Oracle 實(shí)時(shí)同步基于Oracle Redo Log,因此需要提前執(zhí)行某些配置。

1、開啟歸檔日志

以具有 DBA 權(quán)限的用戶身份登錄數(shù)據(jù)庫

sqlplus / as sysdba

查看數(shù)據(jù)庫的 logging mode

select log_mode from v$database;

在這里插入圖片描述
如果返回的結(jié)果是 NOARCHIVELOG , 繼續(xù)按照以下步驟操作:

關(guān)閉數(shù)據(jù)庫:

shutdown immediate;

在這里插入圖片描述
啟動(dòng)并掛載數(shù)據(jù)庫:

startup mount;

在這里插入圖片描述
開啟歸檔模式并打開數(shù)據(jù)庫:

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、創(chuàng)建用戶賬號(hào)

創(chuàng)建用戶帳戶并分配權(quán)限:

--前面已經(jīng)創(chuàng)建,這里不再創(chuàng)建用戶
--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 源端數(shù)據(jù)庫。

?? Tapdata Cloud 連接 Oracle 11G+12C

首先需要打開 Tapdata Cloud 控制臺(tái)。

1、創(chuàng)建連接

在這里插入圖片描述

2、選擇 Oracle

在這里插入圖片描述

3、填寫關(guān)鍵信息

根據(jù)提示填寫信息,具體可參考:Oracle 創(chuàng)建連接
在這里插入圖片描述
注意:這里的 Schema 值需要大寫!

4、測試連接

測試連接是否成功,具體可參考:Oracel 的連接測試與常見問題
在這里插入圖片描述
以同樣的方式添加 Oracle 12C ,添加成功后顯示如下:
在這里插入圖片描述

🌀 創(chuàng)建同步任務(wù)

創(chuàng)建好連接之后,需要?jiǎng)?chuàng)建任務(wù)來配置進(jìn)行數(shù)據(jù)同步。

1、創(chuàng)建任務(wù)

配置源端和目標(biāo)端連接,選擇上一步中新建的連接:
在這里插入圖片描述

2、配置任務(wù)

設(shè)置任務(wù),本次選擇 全量+增量 類型,全量寫入模式
在這里插入圖片描述

3、選擇同步表

這里選擇需要同步的表,添加到目標(biāo)端:
在這里插入圖片描述
同時(shí)還支持 改名字段映射
在這里插入圖片描述
點(diǎn)擊完成按鈕,即可。如果點(diǎn)擊沒有反應(yīng),可以嘗試退回上一步,再回來點(diǎn)擊完成。

4、啟動(dòng)任務(wù)

點(diǎn)擊完成后,任務(wù)狀態(tài)為 待啟動(dòng),可以通過啟動(dòng)任務(wù)來開始:
在這里插入圖片描述
先去目標(biāo)端 Oracle 12C 查詢表 Lucifer 是否存在:

select * from lucifer;

在這里插入圖片描述
確認(rèn)沒有表 Lucifer,啟動(dòng)任務(wù):
在這里插入圖片描述

5、運(yùn)行監(jiān)控

點(diǎn)擊 運(yùn)行監(jiān)控 可以看到同步情:
在這里插入圖片描述

6、報(bào)錯(cuò)處理

可以看到,這里報(bào)錯(cuò)了,看了一下日志記錄:
在這里插入圖片描述
由于我之前創(chuàng)建表時(shí),沒有創(chuàng)建主鍵,咨詢官方之后,確認(rèn)必須需要表帶主鍵才可以,因此,新增表主鍵:

alter table lucifer add constraint tb_lucifer_pk primary key (id);
alter table tapdata add constraint tb_tapdata_pk primary key (id);

新增表主鍵之后,需要重新加載數(shù)據(jù)源,即連接管理那里連接測試即可。
在這里插入圖片描述
回到運(yùn)行監(jiān)控頁面,重置之后重新同步:
在這里插入圖片描述
重置 即清除進(jìn)度,回到最初,然后點(diǎn)擊啟動(dòng)即可。
在這里插入圖片描述

7、同步測試

連接 Oracle 12C 目標(biāo)端,查詢 Lucifer 表的數(shù)據(jù):
在這里插入圖片描述
發(fā)現(xiàn)數(shù)據(jù)已經(jīng)同步成功。

測試源端 Oracle 11G 寫入數(shù)據(jù)之后,目標(biāo)端是否同步:

源端:

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;

目標(biāo)端:

select * from lucifer;
select * from tapdata;

在這里插入圖片描述
查看監(jiān)控頁面,可以發(fā)現(xiàn)源端的操作記錄均已同步:
在這里插入圖片描述
?? 至此,Oracle 不同版本間的實(shí)時(shí)數(shù)據(jù)同步測試已經(jīng)完成。

🌊 寫在最后

首先,給 Tapdata 的文檔點(diǎn)贊一波,寫的真的很詳細(xì)易懂!

本文從無到有地展示了所有環(huán)境的安裝部署,數(shù)據(jù)同步的完整步驟以及一些需要注意的事項(xiàng),可以說是盡善盡美了。之后,應(yīng)該還會(huì)寫異構(gòu)數(shù)據(jù)庫之間的同步教程。

總體體驗(yàn)來說,Tapdata Cloud 在安裝部署和使用方面,大大降低了技術(shù)難度,相較于其他一些數(shù)據(jù)同步產(chǎn)品,在入門體驗(yàn)上更好。關(guān)于實(shí)時(shí)同步的效率,由于沒有實(shí)測生產(chǎn),不做過多的評價(jià)。

感興趣的朋友可以多多測試,希望 Tapdata 能夠越做越好!同時(shí)還可以參加 Tapdata 的新活動(dòng):推薦 | 異構(gòu)數(shù)據(jù)庫同步云平臺(tái) Tapdata Cloud 開啟有獎(jiǎng)公測,?? 獎(jiǎng)品確實(shí)很豐厚!

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多