写点什么

实时计算 Flink 集成开源连接器 -TiDB CDC Connector 案例实践

  • 2024-03-22
    北京
  • 本文字数:2287 字

    阅读完需:约 8 分钟

作者: 凌云 Cloud 原文来源:https://tidb.net/blog/bfdd466b

TIDB 部署(阿里云 ECS)

1、系统配置

TIDB 官方建议使用 CentOS7.3 及以上版本:



本次实验我们选择 CentOS 7.6 64 位,考虑网络连通,需将 TIDB ECS 实例与 Flink 集群部署在相同 VPC 网络。


2、TIDB 部署

a、下载并安装 TiUP


curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
复制代码



b. 安装 TiUP 的 cluster 组件


声明全局的环境变量,不然找不到 tiup 命令:


source .bash_profile
复制代码


执行安装 cluster 命令:


tiup cluster
复制代码



c. 调大 sshd 服务的连接数限制(可选)


#调大sshd服务的连接数限制cat /etc/ssh/sshd_config | grep -n MaxSessionsvim +41 /etc/ssh/sshd_config
#改完后重启sshdsystemctl restart sshd.service
复制代码


d. 创建并启动集群


按配置模板,编辑配置文件(当前目录 vim 编辑后保存即可),命名为 topo.yaml,其中:


  • host:部署 TIDB 的服务器 i(ECS 内网 IP)

  • ssh_port 默认是 22

  • 官方文件的 tikv_servers 是 3 个节点,这里设置成了只有 1 个节点,原因是本地配置多个节点时只有 1 个节点能启动成功


模板如下:


global: user: "tidb" ssh_port: 22 deploy_dir: "/tidb-deploy" data_dir: "/tidb-data"
monitored: node_exporter_port: 9100 blackbox_exporter_port: 9115
server_configs: tidb: log.slow-threshold: 300 tikv: readpool.storage.use-unified-pool: false readpool.coprocessor.use-unified-pool: true pd: replication.enable-placement-rules: true replication.location-labels: ["host"] tiflash: logger.level: "info"
pd_servers: - host: 192.168.0.1
tidb_servers: - host: 192.168.0.1
tikv_servers: - host: 192.168.0.1 port: 20160 status_port: 20180 config: server.labels: { host: "laomo-talkservice-tidb-1" }
tiflash_servers: - host: 192.168.0.1
复制代码


部署集群:


# cluster-name:集群名称# tidb-version:TiDB版本号,可以通过tiup list tidb这个命令来查看tiup cluster deploy <cluster-name> <tidb-version> ./topo.yaml --user root -p <pwd>
# 这里使用 v6.0.0,集群名称叫mytidb-cluster来部署tiup cluster deploy mytidb-cluster v6.0.0 ./topo.yaml --user root -p P...D
复制代码



启动集群:


#启动刚才部署的集群,集群名称为mytidb-clustertiup cluster start mytidb-cluster
复制代码



e. 开启 CDC(* 重要:CDC 不开启无法捕获数据变更。另外,本示例单节点,多节点集群需要配置节点访问免密 *)


# 创建scale-out.yaml文件添加 TiCDC 节点信息cdc_servers:  - host: 192.168.0.1    gc-ttl: 86400
# TiUP运行scale-out命令tiup cluster scale-out mytidb-cluster scale-out.yaml
#TiUP 停止和启动 TiCDCtiup cluster stop -R cdctiup cluster start -R cdctiup cluster restart -R cdc
复制代码


f. 访问 TiDB


在 ECS 上安装 MySQL 客户端(通过 MySQL 客户端访问 TiDB):


yum -y install mysql
复制代码


访问 TiDB,密码默认为空


mysql -h 192.168.0.1 -P 4000 -u root
复制代码


Flink TiDB CDC

TiDB CDC

TiDB CDC connector 是一个 Flink Source connector,它会先读取数据库快照,然后在发生故障时以 exactly-once 处理继续读取更改事件,支持 exactly-once 语义


兼容版本



参数配置


集成 TiDB 连接器

实时计算 Flink 版是一套基于 Apache Flink 构建的⼀站式实时大数据分析平台,支持作业开发、数据调试、运行与监控、自动调优、智能诊断等全生命周期能力。本文案例基于阿里云实时计算 Flink 版进行演示。

1、版本准备

兼容版本可以参考 Flink TiDB CDC 小结介绍,本次实验选型如下:


❏ Flink 全托管版本:vvr-6.0.4-flink-1.15


❏ TiDB 版本:v6.0.0


❏ TiDB CDC Connector:flink-connector-tidb-cdc-2.3.0

2、集群创建

登录阿里云控制台,创建全托管 VVP 集群,注意集群部署网络环境与 TiDB 保持一致(同一 VPC):


3、注册 TiDB 连接器

4创建 Session 集群

创建一个 vvr-6.0.4-flink-1.15 版本的 Session 集群,创建后并启动:


5、基于 Flink SQL 开发作业

注意:代码里没有配置 scan.startup.mode 参数,默认值 initial:在第一次启动时,会先扫描历史全量数据(后续会演示相关效果)


CREATE TEMPORARY TABLE students_tidb_source (  db_name STRING METADATA FROM 'database_name' VIRTUAL,  table_name STRING METADATA  FROM 'table_name' VIRTUAL,  operation_ts TIMESTAMP_LTZ(3) METADATA FROM 'op_ts' VIRTUAL,  id INT,  `name` STRING,  score INT,  PRIMARY KEY(id) NOT ENFORCED) WITH (  'connector' = 'tidb-cdc',  'tikv.grpc.timeout_in_ms' = '20000',  'pd-addresses' = '192.168.0.1:2379',  'database-name' = 'tidb_source',  'table-name' = 'student');
CREATE TEMPORARY TABLE students_print_sink ( `db_name` STRING, `table_name` STRING, operation_ts TIMESTAMP_LTZ(3), id INT, `name` STRING, score INT) WITH ( 'connector' = 'print', 'limit' = '100', 'logger'='true');
insert into students_print_sinkselect * from students_tidb_source;
复制代码

6、TiDB 数据准备

运行作业前,先添加一条数据:


CREATE DATABASE  tidb_source;use  tidb_source;--创建student表CREATE TABLE student(  id int NOT NULL ,  name varchar(100) NULL ,  score int NULL ,  primary key(id));
--插入数据insert into student values(1,"lincloud",100);select * from student;
复制代码


7、验证测试

启动作业,测试



发布于: 刚刚阅读数: 2
用户头像

TiDB 社区官网:https://tidb.net/ 2021-12-15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
实时计算Flink集成开源连接器-TiDB CDC Connector案例实践_实践案例_TiDB 社区干货传送门_InfoQ写作社区