D17 - 从TiDB将资料同步出去

TiDB可以同步MySQL的资料异动,那麽能不能反过来让其他DB同步随着TiDB异动呢。
答案是可以的,TiDB提供了CDC来满足此类需求,TiCDC可透过建立多个任务,来同步其他DB或者中间层,例如另一个TiDB,MySQL,Kafka等等。这边我主要用MySQL来实作。
首先一样透过tiup安装cdc,在这边可以使用tiup cluster scale-out指令来扩充,把cdc的设定写在scale_out.yaml里,或者修改原本deploy的yaml档,另建一组新的cluster。
一样都在yaml档内加上cdc相关设定,我加上了两台cdc server。

cdc_servers:
  - host: 10.102.1.200
  - host: 10.102.1.201

如果用scale-out则输入

tiup cluster scale-out tidb-test ./scale_out.yaml

如果是重建cluster,则一样使用deploy

tiup cluster deploy tidb-test v5.1.0 ./topo.yaml --user root [-p] [-i /home/root/.ssh/gcp_rsa]

安装好cdc之後,先查询一下capture的list,记得在ctl後面要加上:你安装的版本才能用。

tiup ctl:v5.2.1 cdc capture list --pd=http://10.102.1.92:2379

https://ithelp.ithome.com.tw/upload/images/20210913/20113220z8VJ2kOOgb.png

接下来就是新增一个资料同步的任务,指令中填入自己连结到mysql的帐密以及ip位置,另外记得後面加上?timezone=字样,不然会喷错。

tiup ctl:v5.2.1 cdc changefeed create --pd=http://10.102.1.92:2379 --sink-uri="mysql://tidb_rep:Orz@[email protected]:3306/?timezone=" --config=~/cdc.toml --start-ts=0

指令中的config使用的cdc.toml,里头可以让你设定要执行cdc的白名单,这边我简单的只针对test.*做读取

[filter]
rules = ['test.*']

可以透过指令来看现在的执行情况。透过message的回应来检视执行上是否正常。
比如我在tidb上insert了一笔资料,然後执行指令观察情况。

tiup ctl:v5.2.1 cdc changefeed list --pd=http://10.102.1.92:2379

发现原来我的帐号没有足够的权限作Insert。
https://ithelp.ithome.com.tw/upload/images/20210913/20113220m3JvsG8B3G.png
新增完权限之後,再试一次。可以看到tidb的资料异动确实的呈现在MySQL。
https://ithelp.ithome.com.tw/upload/images/20210913/20113220ICc3ihT1Dt.png


<<:  Flutter体验 Day 17-路由导览v1

>>:  【Day 25】JavaScript ajax

Day28 - 【概念篇】Keycloak使用基本概念 - 第二部分: Role

本系列文之後也会置於个人网站 在帐号系统下,除了帐号本身与帐号群组外,通常还存在一个非常重要的部分...

【D21】制作讯号灯#5:使用三大法人制作外资讯号灯

前言 制作了加权指数的,这次制作三大法人-外资的讯号灯,本次会做多单还是空单、留仓数量是否增加、留仓...

Day 30. Hugo 系列文回顾,铁人赛反省与获得

前言 今天是铁人赛文章发文的最後一天 (在此我要谢谢我的爸爸、妈妈、老婆、小狗..),本篇会做个简单...

DAY18-EXCEL统计分析:T检定实例

让我们用前两天Z检定的相同题目来试一次T检定 有一家3C公司说自家品牌的手机均可以使用超过5年,而标...

Day10-元件沟通传递(part2)

没有props还可以传资料吗 v-bind和v-on在没有props的情况下一样可以得到父层的资料。...