CDC 全称 Change Data Capture 这是一种数据集成技术,用于捕获数据库中的变更(插入、更新、删除操作),并将这些变更实时地传输到数据仓库、数据湖或其它数据平台中。

在处理数据库迁移过程中,可以考虑在第一次全量同步之后直至割接之前,使用此技术持续同步增量部分的数据,本文将介绍开源 CDC 工具 Airbyte。

安装

Airbyte 的安装将使用 helm,需要提前准备好 helm 命令和 k8s 集群。

执行以下命令添加 helm 仓库并安装 Airbyte:

helm repo add airbyte https://airbytehq.github.io/helm-charts

helm upgrade --install airbyte airbyte/airbyte -n airbyte --create-namespace --set global.airbyteUrl=172.22.44.16:30080 --set webapp.service.type=NodePort --set global.logs.minio.enabled=true   ##global.airbyteUrl 的值根据实际情况修改

安装好之后,直接登录即可。

初始化数据库

在同步数据之前先准备两个数据库,本次实验准备了两个 MySQL,执行以下命令进行安装:

helm install mysql oci://registry-1.docker.io/bitnamicharts/mysql --set architecture='replication' --set auth.rootPassword='root' -n airbyte --version 9.14.2 
helm install migrate oci://registry-1.docker.io/bitnamicharts/mysql --set architecture='replication' --set auth.rootPassword='root' -n airbyte --version 9.14.2

  • mysql:mysql-primary.airbyte
  • migrate: migrate-mysql-primary.airbyte

在 migreate 数据库中执行以下 SQL 语句:

create database migrate;

CREATE TABLE IF NOT EXISTS migrate.sample_data (
    user_id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    age INT NOT NULL,
    email VARCHAR(255) NOT NULL
);

use migrate;

DELIMITER $$

CREATE PROCEDURE GenerateSampleData()
BEGIN
    DECLARE i INT DEFAULT 1;
    WHILE i <= 10000 DO
        INSERT INTO migrate.sample_data (name, age, email)
        VALUES (
            CONCAT('Name', i),
            FLOOR(RAND() * 90 + 10), -- 随机年龄从10到100
            CONCAT('name', i, '@example.com')
        );
        SET i = i + 1;
    END WHILE;
END$$

DELIMITER ;

CALL GenerateSampleData();

在 mysql 数据库中执行以下 sql 语句:

create database migrate;

数据同步

下面的操作将在 airbyte 的页面进行,在浏览器上打开 172.22.44.16:30080 地址。(此地址按照实际进行更改)

创建源

按照以下图片内容添加源数据库的相关信息:

在这里插入图片描述

创建目标

按照图片内容添加目标数据库的相关信息:

在这里插入图片描述

创建连接

在创建好之后,在导航栏中找到 Connections 的按钮,进入点击创建一个新的 connection。经过以下几个步骤:

  • 选择刚才创建好的源
  • 选择刚才创建好的目标
  • 选择要同步数据的表
  • 设置同步相关配置,主要分为两个方面:
    • 调度:调度分为三种,分别是:手动,cron 和按时间周期调度。
    • 同步模式:分为两个大类:Full Refreash 和 Incremental Sync,这两种同步最大的区别是,Full Refresh 是对整个表进行操作,Incremental 是对修改和新增的数据进行操作。

在配置好之后进入新创建 Connection 页面的右上角有一个 Sync now 按钮,点击即可进行数据同步。同步结果如下图所示即为正常:

在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐