最近有个需求。我们生产环境的数据库要和测试环境数据库实现增量同步,每次手动使用mysqldump做全量很麻烦。做全量的话也非常消耗服务器的资源。于是,我在思考,有什么办法可以实现定时增量同步。一开始打算写个shell脚本。每个表id都是自增的。查询每个表最大id。判断自大id值。将大于最大id的数据使用mysqldump从生产直接导入到测试。然后放入linux自带的定时任务中,这样就实现了定时增量同步。这种方法虽然可以实现。但是市面上有开源的工具可以实现吗?经过一番查询,发现CloudCanal工具可以实现。这里我不多介绍了,详细可查看官方文档CloudCanal x Db2 数据迁移同步 | CloudCanal of ClouGence
一、功能介绍
CloudCanal是一款多源多端数据迁移同步工具,当前支持的数据源主要如下(20210801版本,数据源持续添加中):
源端:MySQL、Oracle、PostgreSQL、Greenplum、Kafka
目标端:MySQL、Oracle、PostgreSQL、Greenplum、Kafka、RabbitMQ、RocketMQ、Tidb、ClickHouse、ElasticSearch、Hive、阿里云ADB
二、技术架构
CloudCanal主体上分为三个主要部分:
-
控制台:完成CloudCanal的主要产品化能力
-
Sidecar: 主要负责任务进程和控制台程序之间的信息交互并且保证任务进程高可用
-
任务内核:任务内核进程,负责全量
三、部署CloudCanal
硬件和系统准备
-
操作系统:CentOS/RHEL 或 Ubuntu 或 MacOS
-
CPU架构
x86 或 arm64v8
-
最低配置
2 核 CPU
6 GB 内存
这里以乌班图22.04为例安装:
安装基础工具
sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
sudo apt-get install -y lsof
sudo apt-get install -y bc
sudo apt-get install -y p7zip-full
下载安装包
wget -c "https://tgzdownload.clougence.com/4.5.0.1/cloudcanal.7z?Expires=1740467360&OSSAccessKeyId=LTAI4G5wdUHmu9t19fVLkC2w&Signature=0RjJpBE%2FPSMuCHyZFBSUVMkDo3I%3D" -Ocloudcanal_x86_v4.5.0.1_docker.7z
解压安装包
7z x cloudcanal.7z -o./cloudcanal_home
cd cloudcanal_home/install_on_docker
安装 CloudCanal
bash install.sh
开始使用
http://ip:8111/#/data/job/list
-
账号:
test@clougence.com
-
密码:
clougence2021
-
默认验证码: 777777
使用数字许可证激活
添加数据源
创建同步任务
查看任务