Airbyte 数据同步

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 按钮,点击即可进行数据同步。同步结果如下图所示即为正常:

在这里插入图片描述

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在 Vue 中获取通过 Airbyte 的空间列表 API 返回的数据,您可以使用 Vue 的异步请求库(如 Axios)来发起 API 请求,并在成功响应后获取数据。 首先,确保您已经在 Vue 项目中安装了 Axios。您可以使用以下命令进行安装: ``` npm install axios ``` 接下来,在您的 Vue 组件中,您可以使用以下示例代码来获取并处理 API 响应数据: ```vue <template> <div> <!-- 显示空间列表 --> <ul> <li v-for="space in spaces" :key="space.id">{{ space.name }}</li> </ul> </div> </template> <script> import axios from 'axios'; export default { data() { return { spaces: [] // 空间列表数据 }; }, mounted() { this.getSpaces(); // 在组件挂载后获取空间列表数据 }, methods: { async getSpaces() { try { const response = await axios.get('https://api.airbyte.io/spaces'); // 发起空间列表 API 请求 this.spaces = response.data; // 将响应数据赋值给组件的 spaces 数组 } catch (error) { console.error(error); } } } }; </script> ``` 在上述示例代码中,我们使用了 `axios` 库来发起 GET 请求,并在成功响应后将响应数据赋值给组件的 `spaces` 数组。在组件的模板中,我们使用 `v-for` 指令遍历 `spaces` 数组,显示空间列表的名称。 请注意替换 `https://api.airbyte.io/spaces` 为您实际使用的 Airbyte 空间列表 API 的 URL。此外,您可能需要根据您的项目结构和需求进行适当的修改。 希望这可以帮助到您!如果您有任何进一步的问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

启明真纳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值