1:总架构
mysql-maxwell -kafka-confluent -其他任何db
tidb-ticdc-kafka-confluent-其他任何db
2:中间件安装即配置
2.1 安装ticdc 请参考官方文档
2.2 下载confluent软件
下载confluent-7.4.0.tar.gz
wget https://packages.confluent.io/archive/7.4/confluent-7.4.0.tar.gz
tar -xvf confluent-7.4.0.tar.gz -C /usr/local
mv confluent-7.4.0. confluent
2.3 配置环境变量
vim ~./bashrc
export CONFLUENT_HOME/usr/local/confluent
export PATH=$PATH:$CONFLUENT_HOME/bin
source ~/.bashrc
2.4 安装 Confluent
cd /usr/local/confluent/bin
./confluent-hub install --no-prompt confluentinc/kafka-connect-datagen:latest
2.5 启动confluent
停止 confluent local services stop
启动 confluent local services start
查看状态
confluent local services status
##如果有启动某些组件失败的时候,需要指定组件重新启动
查看某系组件日志
confluent local services schema-registry log -f
查看某些启动组件
confluent local services schema-registry start
查看某个组件的状态
confluent local services schema-registry status
2.6 confluent 组件介绍
connect 是本文后续使用的组件,他支持kafka 消费数据写入到下游组件,下游组件可以通过插件支持各种易购存储系统入oracle,mysql,sqlsercver ES等
control center 是WEB空间页面 用户可以在页面上管理Kafka集群和数据,管理connect 任务和插件
Kafka 消费组件
ksqlDB Server 可以将Kafka topic 映射为一张表 然后执行sql 做数据处理
Schema Registry 是 AVRO Schema 管理组件 kafka 中消息 schema变化时会网schema registry 发送变更消息数据同步组件发现schema 变化之后从 schema registry 获得最新schema 以便同步新schema
zookeeper 愿数据管理工具 支持kafaka 选注等
3:配置ticdc 任务发生多张表到confluent 的kafka里 的topic
3.1 在ticdc 中配置tidb_kafka.conf 文件
cat tidb_kafka.conf
#指定文件中设涉及的库,表名是否为大小写铭感
#该配置同时会影响 filter 和 sink 相关配置 默认为true
case-sensitive =true
#是否输出old vlaue 从v4.0.5开始支持,从v5.0开始默认问true
#enable-old-value= true
#忽略 指定 start_ts的事物 #ignore-txn-start-ts= [1,2]
#过滤器规则
#过滤器规则语法 :https://docs.pingcap.com/zh/tidb/stable/table-filter #表过滤语法
[filter]
rules = [
'test1.tab1','test1.tab2','test2.mytab1']
[sink]
dispatchers = [{matcher = ["test1.tab1","test1.tab2","test2.mytab1"],topic="{schema}-{table}",partition="table"},]
3.2 创建TICDC任务
cdc cli changefeed create --server=http://127.0.0.1:8300 --sink-uri="kafka://127.0.0.1:9092/tidb-kafka?prtocol=avro&partition-num1&max-message-bytes=67108864&replication-factor=1" --changefeed-id=tidbkafka --config/home/tidb/fat_cdc/tidb_kafka.conf --schema-registry="http://127.0.0.1:8081"
特别说明:
--sink-uri="kafka://127.0.0.1:9092" 设置为之前 confluent 启动的kafka 地址
protocol=avro 使用avro 格式,avro 格式支持为schema演化,支持自动部分DDL同步,对其他格式有优势
--changefeed-id="tidb-kafka"表示此ticdc 同步任务id
--config="c.conf" 表示ticdc 任务使用3.1中创建的配置文件,实现多表多topic
--schema-registry=http://127.0.0.1:8081 配合avro 实现schema演化,档TIDB DDL 变更时候会发消息给schema-registry,以变消息组件更新schema
3.3验证服务
cdc cli changefeed list --server=http://127.0.0.1:8300
{
"id" : "tidb-kafka",
"namespace" : "default",
"summary" : {
"state": "normal",
"tso" : 442666666666666,
"checkpoint": "2023-07-06 20:59:54.633",
"error": null
}
}
}
#备注 如果发现有问题可以删除名利如下
cdc cli changefeed remove --server=http://127.0.0.1:8300 --changefeed-id kafka-bw-account
4 使用connect 完成TIDB 实时数据到MYSQL
}
TICDC->KAFKA-任意数据库开源同步方案
于 2024-05-14 11:55:02 首次发布