阿里云AnalyticDB同步数据至华为云taurusdb

1 概述

AnalyticDB和taurusdb都是高度兼容mysql协议的数据库,从现有的AnalyticDB官方数据同步方案来看,只有FlinkSQL合适。
同步方案官方文档:

https://help.aliyun.com/zh/analyticdb/analyticdb-for-mysql/user-guide/flink-subscribes-binlog

2 数据同步方案

2.1 架构

在这里插入图片描述

2.2 限制条件

AnalyticDB for MySQL产品系列为企业版、基础版、湖仓版和数仓版弹性模式。
AnalyticDB for MySQL集群的内核版本需为3.2.1.0及以上版本。
Flink实时计算引擎需为VVR 8.0.4及以上版本。
XUANWU_V2表不支持开启Binlog,因此不能通过订阅Binlog实现AnalyticDB for MySQL集群XUANWU_V2表的数据同步和流式计算。
Flink仅支持处理AnalyticDB for MySQL Binlog中的所有基础数据类型和复杂数据类型JSON。
Flink不会处理AnalyticDB for MySQL Binlog中的DDL操作记录和分区表自动分区删除的操作记录。

2.3 操作步骤

2.3.1 步骤1:在AnalyticDB中初始化一张示例源表

CREATE DATABASE demo;
use demo;
CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  username VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL
);
INSERT INTO users (username, email) VALUES ('user1', 'user1@example.com');
INSERT INTO users (username, email) VALUES ('user2', 'user2@example.com');
INSERT INTO users (username, email) VALUES ('user3', 'user3@example.com');

在这里插入图片描述

2.3.2 步骤2:为AnalyticDB的示例源表开启binlog

binlog开启仅支持表级别,需要为每一张表开启binlog。例如,为users表开启binglog,命令如下:

ALTER TABLE users BINLOG=true;
ALTER TABLE users binlog_ttl='3d';

在这里插入图片描述

2.3.3 步骤3:在目标数据库mysql创建表结构

CREATE DATABASE demo;
use demo;
CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  username VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL
);

2.3.4 步骤4:在阿里云实时计算平台新建自定义连接器

参考官方文档,执行如下步骤:

1)下载连接器
2)登录实时计算控制台。在Flink全托管页签,单击目标工作空间操作列下的控制台。
3)在左侧导航栏,单击数据连接。
4)在数据连接页面,单击创建自定义连接器。上传步骤1下载的连接器。上传完成后,单击下一步,单击完成。创建完成的自定义连接器会出现在连接器列表中。

在这里插入图片描述

2.3.5 步骤5:在阿里云实时计算平台创建ETL任务

点击ETL左侧菜单,新建流作业,FlinkSQL如下:

CREATE TEMPORARY TABLE adb_source_users (
  id INT,
  username VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL,
  PRIMARY KEY (`id`) NOT ENFORCED
) WITH (
  'connector' = 'adb-mysql-cdc',
  'hostname' = '你的AnalyticDB',
  'username' = 'dba',
  'password' = '你的密码',
  'database-name' = 'demo',
  'table-name' = 'users'
);


CREATE TEMPORARY TABLE adb_sink_users (
  id INT,
  username VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL,
  PRIMARY KEY (`id`) NOT ENFORCED
) WITH (
  'connector' = 'mysql',
  'hostname' = '你的mysql',
  'port' = '3306',
  'username' = 'root',
  'password' = '你的密码',
  'database-name' = 'demo',
  'table-name' = 'users'
);

INSERT INTO adb_sink_users
SELECT * FROM adb_source_users;

对ETL作业进行部署:
在这里插入图片描述
在目标数据库查询数据,发现源表的存量数据已自动同步:
在这里插入图片描述

2.3.6 步骤6:测试增量数据同步

在源表插入一条新数据,SQL如下:

INSERT INTO users (id, username, email) VALUES (4, 'user4', 'user4@example.com');

在这里插入图片描述
在目标数据库查询数据,发现源表的增量数据已自动同步:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值