【TiDB 使用环境】测试环境
【TiDB 版本】V8.5.2
【操作系统】Centos7
【部署方式】物理机器 3台 32G运行内存 500G磁盘
【集群数据量】100G
【集群节点数】3
实时增量同步,按照官网能够实现,如果想把数据库中的特定表全量进行同步该如何实现?目的是通过消费kafak中的内容同步至ES。
线路如下:
1、tidb—>flink cdc—>kafka—>ES
2、tidb—>某中间介质—>kafka
例如1中,如果把tidb换成mysql,是可行的,目前生产也是这样实现的。换成tidb跑不通。
例如2中,某中间介质如果使用tidb cdc 能够实时同步至kafak;但是想全量同步一直尝试,不能够实现。
其中start-ts概念有点模糊,如果想实现增量+全量该如何实现?
全量+增量一般都是 先全量备份,然后获取一个备份的ts时间戳。然后把数据导入过去。通过这个时间戳开始获取增量数据、同步
0、T0时间ticdc写入kafka
1、T1时间把tidb的数据写入ES,T2时间完成写入,并停止写入(写入工具可以自行编写)
2、消费kafka的数据写入ES(保证写入的幂等性。ES本身有这个特性了)
不管你是用 br,还是 dump备份,都可以得到截止某个ts的全量快照,cdc基于这个ts走增量就行
就算你用程序通过查询来获取全量,则可以通过 AS OF TIMESTAMP 得到基于某个ts的全量数据
某中间介质只有ticdc,目前开源的第三方工具兼容性都不够
改造线路如下:
1、全量导出记录ts1:tidb—>mysql—>flink cdc—>kafka—>ES
2、增量ticdc 从开始ts1:tidb—>ticdc—>kafka—>ES
没接触TiDB前都是通过Zerto 实现数据库的全量和增量
大佬有动手操作过不,在tidb上
这个官方有对应文档呀,生产我只做过全量迁移,测试做过全量加增量。BR备份全量迁移,有个文件记录ts值。如果要增量然后直接写到Ticdc参数就可以了。GC时间改一下。先改成24小时。然后启动CDC,这个start-ts就是BR备份的那个时间戳
cdc cli changefeed create --pd=http://10.0.10.25:2379 --sink-uri=“mysql://root:123456@127.0.0.1:3306/” --start-ts=“444387499466031105” --sort-engine=“unified”
–sink-uri:同步任务下游的地址
格式:[scheme]://[userinfo@][host]:[port][/path]?[query_parameters]
–start-ts:指定 changefeed 的开始 TSO。TiCDC 集群将从这个 TSO 开始拉取数据。默认为当前时间。
–sort-engine:指定 changefeed 使用的排序引擎。因 TiDB 和 TiKV 使用分布式架构,TiCDC 需要对数据变更记录进行排序后才能输出。该项支持 unified(默认)/memory/file:
–config:指定 changefeed 配置文件
–sort-dir: 用于指定排序器使用的临时文件目录。自 v5.0.3 起已经无效,请不要使用。
1、tidb—>flink cdc—>ES 这样可以?
2、tidb → mysqldump导出数据到S3(csv格式)-> Logstash → es
先全量完整同步,然后增量技术实现同步,例如etl类的技术
此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。