本文向大家介紹的是CloudCanal 數(shù)據(jù)遷移同步工具,能夠?qū)崿F(xiàn)多種數(shù)據(jù)源之間的數(shù)據(jù)同步,并且提供可視化操作界面,幫助我們提升開發(fā)效率,一起快速了解CloudCanal并掌握數(shù)據(jù)同步操作吧~
CloudCanal數(shù)據(jù)同步工具
官網(wǎng): https://www.clougence.com/
社區(qū): https://www.askcug.com/
社區(qū)版文檔: https://doc-cloudcanal.clougence.com/intro/product_intro
1 認(rèn)識(shí) CloudCanal
1.1 產(chǎn)品介紹
CloudCanal 是一款數(shù)據(jù)遷移同步工具,提供友好的可視化操作界面,支持多種數(shù)據(jù)源間的數(shù)據(jù)遷移、數(shù)據(jù)同步、結(jié)構(gòu)遷移、數(shù)據(jù)校驗(yàn);

1.2 產(chǎn)品功能
CloudCanal 具備一些對(duì)用戶非常有用的核心功能,如下表所述:

1.3 產(chǎn)品架構(gòu)
控制臺(tái):完成 CloudCanal 的主要產(chǎn)品化能力
Sidecar: 主要負(fù)責(zé)任務(wù)進(jìn)程和控制臺(tái)程序之間的信息交互并且保證任務(wù)進(jìn)程高可用
任務(wù)內(nèi)核:任務(wù)內(nèi)核進(jìn)程,負(fù)責(zé)具體同步任務(wù)的執(zhí)行

2 CloudCanal 高可用部署
2.1 準(zhǔn)備工作
1. 安裝 Docker
不同操作系統(tǒng)可以參考 Docker 官網(wǎng)文檔 進(jìn)行安裝。
2. 安裝 Docker Compose
這里提供一個(gè)國內(nèi)的鏡像站的安裝命令,也可以參考 Docker-Compose 安裝文檔。
curl -L https://get.daocloud.io/docker/compose/releases/download/1.28.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
2.2 安裝cloudCanal
2.2.1 下載安裝包
阿里云 OSS 下載最新版本
https://cloudcanal-community.oss-cn-hangzhou.aliyuncs.com/latest/cloudcanal.7z
12月20日之后的包里面我們增加了md5值校驗(yàn)文件,下載之后可以校驗(yàn)一下md5
https://cloudcanal-community.oss-cn-hangzhou.aliyuncs.com/latest/md5sum.txt
注:我們不需要校驗(yàn)md5
在linux下進(jìn)行下載,直接使用命令
wget https://cloudcanal-community.oss-cn-hangzhou.aliyuncs.com/latest/cloudcanal.7z
校驗(yàn)md5一致

2.2.2 安裝7z
安裝包為 cloudcanal.7z,包含了鏡像和管理腳本
安裝 7z 解壓工具(如果已經(jīng)安裝,此步略過)
# 安裝7z命令(centos系)?
sudo yum install p7zip p7zip-plugins?
# 安裝7z命令(ubuntu系)?
sudo apt-get install p7zip-full p7zip-rar?
# 安裝7z命令(macOS)?
brew install 7z
進(jìn)入cloudcanal安裝包所在目錄,解壓縮
? 7z x cloudcanal.7z
CloudCanal 目錄結(jié)構(gòu)說明
解壓目錄如下,其中包括
鏡像:包含四個(gè) tar 壓縮文件
腳本:啟動(dòng)、更新和停止,以及 scripts 運(yùn)維腳本目錄
日志與配置文件:日志為 docker-compose 啟動(dòng)日志,配置文件為 docker-compose 配置文件
[root@localhost tar]# ll?
-rw-------. 1 root root? 862506496 Mar 25 11:47 console.tar?
-rw-r--r--. 1 root root? ? ? 1392 Mar 25 12:07 docker-compose.yml?
-rw-------. 1 root root? 454221312 Mar 25 11:47 mysql.tar?
-rw-------. 1 root root? 174073344 Mar 25 11:49 prometheus.tar?
-drwxr-xr-x.2root? root? ? ? ? 124 Mar 25 12:05 scripts?
-rwxr-xr-x. 1 root root? ? ? ? 63 Mar 25 12:05 shutdown.sh?
-rw-------. 1 root root 1231059968 Mar 25 11:48 sidecar.tar?
-rwxr-xr-x. 1 root root? ? ? 2669 Mar 25 12:05 startup.sh?
-rwxr-xr-x. 1 root root? ? ? 2031 Mar 25 12:05 upgrade.sh
2.2.3 啟動(dòng)CloudCanal
執(zhí)行啟動(dòng)命令: sh startup.sh
當(dāng)終端出現(xiàn) cloudcanal start 時(shí),即啟動(dòng)成功

確認(rèn)啟動(dòng)成功
啟動(dòng)過程將耗時(shí) 1 分鐘左右,訪問控制臺(tái) http://{您部署機(jī)器的ip}:8111 正確登錄并開始操作

2.2.4 登錄 CloudCanal 控制臺(tái)
使用CloudCanal 試用用戶登錄
用戶名:test@clougence.com
密碼:clougence2021
注:如遇到需要發(fā)送短信的場景,先點(diǎn)擊獲取驗(yàn)證碼,然后輸入短信驗(yàn)證碼 777777 即可
默認(rèn)添加的測試 MySQL 數(shù)據(jù)庫(兩庫中已準(zhǔn)備好表和數(shù)據(jù))
cloudcanal_test_a(源端)
cloudcanal_test_b(目標(biāo)端)
默認(rèn)已添加了一臺(tái)運(yùn)行機(jī)器,用于執(zhí)行具體的數(shù)據(jù)同步任務(wù)
2.3 默認(rèn)自帶數(shù)據(jù)庫
默認(rèn)添加的測試 MySQL 數(shù)據(jù)庫
cloudcanal_test_a(源端)和cloudcanal_test_b(目標(biāo)端)這兩個(gè)庫中已準(zhǔn)備用于測試的表和數(shù)據(jù)
在宿主機(jī)上可以直接以下命令訪問 MySQL 容器。
docker exec -it cloudcanal-mysql -uclougence -h127.1 -p123456

2.4 CloudCanal 升級(jí)
解壓新版本的 cloudcanal.7z 壓縮包,覆蓋原目錄下相同的文件,然后依次執(zhí)行以下腳本即可。
sh shutdown.sh sh upgrade.sh sh startup.sh
因?yàn)閿?shù)據(jù)目錄 sidecar_data 和 console_dat 不會(huì)被覆蓋,因此數(shù)據(jù)不會(huì)丟失。
3 快速使用
目前我們不需要添加機(jī)器,和集群。除非有新的機(jī)器安裝了同步
具體過程:生成機(jī)器碼、在另一臺(tái)集群上啟動(dòng)sidecar容器
3.1 添加數(shù)據(jù)源
進(jìn)入數(shù)據(jù)源管理界面,點(diǎn)擊添加數(shù)據(jù)源,可以選擇阿里云上的數(shù)據(jù)源或者自建數(shù)據(jù)庫。

添加兩個(gè)數(shù)據(jù)源,分別作為同步的源庫和目標(biāo)庫。

3.2 數(shù)據(jù)同步
同步表結(jié)構(gòu)
在同步數(shù)據(jù)的時(shí)候,先同步表結(jié)構(gòu);
1、進(jìn)入任務(wù)管理頁面,點(diǎn)擊創(chuàng)建任務(wù)。選擇源實(shí)例和目標(biāo)實(shí)例,指定數(shù)據(jù)庫映射關(guān)系。

2、選擇數(shù)據(jù)同步功能,去掉數(shù)據(jù)遷移里面的全量同步,和數(shù)據(jù)同步里面的增量同步,選擇表結(jié)構(gòu)遷移。

3、確定表映射,若是分庫分表的,只需同步一張表的表結(jié)構(gòu)到目標(biāo)端即可。(分庫分表,選擇按_數(shù)字匹配)


4、選擇表中要同步的列

5、確認(rèn)配置無誤后,點(diǎn)擊創(chuàng)建任務(wù)。

全量同步 + 增量同步
1、進(jìn)入任務(wù)管理頁面,點(diǎn)擊創(chuàng)建任務(wù)。選擇源實(shí)例和目標(biāo)實(shí)例,指定數(shù)據(jù)庫映射關(guān)系。
2、選擇數(shù)據(jù)同步功能,第一次會(huì)先查表進(jìn)行全量同步,之后消費(fèi) binlog 增量同步數(shù)據(jù)。

3、選擇要同步的表,要保證目標(biāo)庫的 UPDATE 和 DELETE 操作和源庫的一致,需要保證源庫表中有主鍵或者唯一約束。

4、選擇表中要同步的列。

確認(rèn)配置無誤后,點(diǎn)擊創(chuàng)建任務(wù)。

查看同步進(jìn)度

3.3 校驗(yàn)
數(shù)據(jù)校驗(yàn)功能用于檢驗(yàn)兩個(gè)庫之間的數(shù)據(jù)是否一致,進(jìn)入任務(wù)管理頁面,點(diǎn)擊創(chuàng)建一個(gè)數(shù)據(jù)校驗(yàn)任務(wù)。

可以看到兩個(gè)庫間的數(shù)據(jù)是一致的。
3.4 查看日志
CloudCanal docker 版的日志路徑在壓縮包解壓路徑下
console日志: ${安裝包解壓路徑}/console_data/logs/cloudcanal/console/console.log
sidecar日志: ${安裝包解壓路徑}/sidecar_data/logs/cloudcanal/sidecar/sidecar.log
tasks日志: ${安裝包解壓路徑}/sidecar_data/logs/cloudcanal/tasks/xxx.log
4 常見問題
連通性測試失敗
增量收不到數(shù)據(jù)
性能問題排查
官方已給出相應(yīng)的解決方案:https://doc-cloudcanal.clougence.com/operation/troubleshooting_function