TiDB实时同步数据到PostgreSQL(二) ---- 使用TiCDC

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: TiCDC的配置及日常维护。

为了从TiDB实时同步数据到PostgreSQL,就需要捕获数据的变化,TiDB提供了TiCDC。TiCDC的介绍和安装方法可参考官网(https://docs.pingcap.com/zh/tidb/v5.4/ticdc-overview)。TiCDC并不支持PostgreSQL做为下游输出,但可以通过TiCDC 开放数据协议或者TiCDC Canal-JSON Protocol将变化数据同步到kafka,然后通过消费kafka队列解析相关数据同步到PostgreSQL中。本篇内容只涉及TiCDC的相关配置,相关程序设计的内容后面会单独写一篇做说明。

一、配置kafka topic

bin/kafka-topics.sh --create--topic ticdc_test --bootstrap-server192.168.0.1:9092,192.168.0.2:9092,192.168.0.3:9092 --config retention.hours=48

在kafka集群中创建topic ticdc_test,消息有效期48小时,如果不加--config retention.hours=48,则默认有效期为7天。

二、创建ticdc配置文件

这里假设需要同步mydb库到kafka,创建changefeed.toml,内容如下:

cat changefeed.toml
# 指定配置文件中涉及的库名、表名是否为大小写敏感# 该配置会同时影响 filter 和 sink 相关配置,默认为 truecase-sensitive =true# 是否输出 old value,从 v4.0.5 开始支持enable-old-value =trueforce-replicate =true[filter]
# 忽略指定 start_ts 的事务ignore-txn-start-ts = [1, 2]
# 过滤器规则# 过滤规则语法:https://docs.pingcap.com/zh/tidb/stable/table-filter#表库过滤语法rules = ['mydb.*', '!test.*']
[mounter]
# mounter 线程数,用于解码 TiKV 输出的数据worker-num =8[sink]
# 对于 MQ 类的 Sink,可以通过 dispatchers 配置 event 分发器# 支持 default、ts、rowid、table 四种分发器,分发规则如下:# - default:有多个唯一索引(包括主键)时按照 table 模式分发;只有一个唯一索引(或主键)按照 rowid 模式分发;如果开启了 old value 特性,按照 table 分发# - ts:以行变更的 commitTs 做 Hash 计算并进行 event 分发# - rowid:以所选的 HandleKey 列名和列值做 Hash 计算并进行 event 分发# - table:以表的 schema 名和 table 名做 Hash 计算并进行 event 分发# matcher 的匹配语法和过滤器规则语法相同dispatchers = [
    {matcher = ['mydb.*'], dispatcher ="ts"},
#    {matcher = ['test3.*', 'test4.*'], dispatcher = "rowid"},]
# 对于 MQ 类的 Sink,可以指定消息的协议格式# 目前支持 default、canal、avro 和 maxwell 四种协议。default 为 TiCDC Open Protocol# 我们使用canal-json协议protocol ="canal-json"[cyclic-replication]
# 是否开启环形同步# enable = false# 当前 TiCDC 的复制 IDreplica-id =1# 需要过滤掉的同步 ID#filter-replica-ids = [2,3]# 是否同步 DDL#sync-ddl = true

创建ticdc同步任务:

tiup ctl:v5.4.2 cdc changefeed create --pd=http://pd1:2379,http://pd2:2379,http://pd3:2379
--sink-uri="kafka://192.168.0.1:9092,192.168.0.2:9092,192.168.0.3:9092/ticdc-zmd_dev?protocol=canal-json&kafka-version=2.7.0&partition-num=1&max-message-bytes=67108864&replication-factor=3"--start-ts=xxxxxxxx --config changefeed.toml

--replication-factor指定副本数,生产环境一定要指定3副本,否则kafka挂掉又没及时发现就头疼了!

--pd的数目及地址根据自己tidb的配置设定。

--start-ts的取值需要根据自己的情况,指定开始同步的时间,如果不指定,则默认为当前时间。这个怎么设置,后面还有专门的文章详细说明。

三、ticdc日常使用

# 查看目前的同步任务及状态tiup cdc cli changefeed list --pd=http://pd1:2379,http://pd2:2379,http://pd3:2379
# 暂停指定ID的任务tiup cdc cli changefeed pause --pd=http://pd1:2379,http://pd2:2379,http://pd3:2379 --changefeed-id xxxxxxxx
# 恢复指定ID的任务tiup cdc cli changefeed pause --pd=http://pd1:2379,http://pd2:2379,http://pd3:2379 --changefeed-id xxxxxxxx
# 删除指定ID的任务(慎用)tiup cdc cli changefeed remove --pd=http://pd1:2379,http://pd2:2379,http://pd3:2379 --changefeed-id xxxxxxxx --force


相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
6月前
|
消息中间件 Java 关系型数据库
实时计算 Flink版操作报错合集之从 PostgreSQL 读取数据并写入 Kafka 时,遇到 "initial slot snapshot too large" 的错误,该怎么办
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
1014 0
|
4月前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
415 0
|
4月前
|
SQL 关系型数据库 HIVE
实时计算 Flink版产品使用问题之如何将PostgreSQL数据实时入库Hive并实现断点续传
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
4月前
|
开发框架 关系型数据库 数据库
在 PostgreSQL 中,解决图片二进制数据,由于bytea_output参数问题导致显示不正常的问题。
在 PostgreSQL 中,解决图片二进制数据,由于bytea_output参数问题导致显示不正常的问题。
|
6月前
|
关系型数据库 5G PostgreSQL
postgreSQL 导出数据、导入
postgreSQL 导出数据、导入
57 1
|
关系型数据库 分布式数据库 PolarDB
《阿里云产品手册2022-2023 版》——PolarDB for PostgreSQL
《阿里云产品手册2022-2023 版》——PolarDB for PostgreSQL
365 0
|
存储 缓存 关系型数据库
|
存储 SQL 并行计算
PolarDB for PostgreSQL 开源必读手册-开源PolarDB for PostgreSQL架构介绍(中)
PolarDB for PostgreSQL 开源必读手册-开源PolarDB for PostgreSQL架构介绍
426 0
|
存储 算法 安全
PolarDB for PostgreSQL 开源必读手册-开源PolarDB for PostgreSQL架构介绍(下)
PolarDB for PostgreSQL 开源必读手册-开源PolarDB for PostgreSQL架构介绍
384 0
|
关系型数据库 分布式数据库 开发工具