00:00
安装完这个卡夫卡之后呢,我们就要将数据导入到我们的卡夫卡里边来,对吧?呃,那这就涉及到我们导入的一个策略,也在生产环境当中称为业务数据的同步策略,对于我们实时出仓而言啊,这个地方就比较简单了,我们只能选用一种,那就是增量同步,因为毕竟我们要做的是一个实时,对不对,所以增量,呃,那所谓的增量呢,就是说当数据库当中发生写操作,那写操作呢,就包括新增,更新或删除,我们要及时的把它拿过来,现在市面上比应用比较多的像这种同步的工具有。Maxwell。Canal,还有这个flink CDC啊,这些东西呢,都是用的比较多的,呃,那我们这个fli CDC呢,也是近期非常火的一个工具,那我们这个项目当中呢,采用的就是弗Li CDC啊呃,那关于通过策略呢,我们就没有什么太多可说的,因为实时数仓我们刚才说了只能选用增量同步啊,那弗林克CDC呢,它可以动态的去获取到我们的变更数据啊啊,那这属于我们的一个前置课程,那我们等会就直接去用啊,大家想要了解的,第一你自己可以看一下这个。
01:15
开源的地址,它上面呢也有自己的文档,第二呢,在B站上面也有我本人所讲的弗林CDC的一个课程,而且那套课程当中呢,还分析了一下弗林CDC2.x的一个源码,因为它相比较于1.x呢做了一些。更新功能上的更新,对吧?那我们通过源码的角度去了解了一下,这是我们前置课程,我们在这儿就不多聊了,等会儿呢我就直接去使用啊,那弗利CC等会儿呢,会抓取到我们买S当中这种变化的数据,它是以这样的形式,一个大的接格式给我们展示的,那首先呢,大的接算格式当中有这几个字段,第一个before,第二个after,然后呢,它的source啊,表明库明等信息,还有它操作那增删改对吧?时间戳是否有事物啊,事物的ID,如果有事物的话,事物ID将会是什么?OK,那其实对于这几个内容呢,我们倒是比较好理解,因为看到名字就知道了,对吧?那before跟after是什么意思呢?因为我们刚才提到了,在我们获取变更数据的时候,它有三种不同的类型,第一新增对吧?呃,然后更新,还有这个删除,那这块呢,到时候对应不同的类型的,它里边封装的内容就不一样,我们举一个简单例子,比如说我们新增一条数据,也就是说音色的插入一条数据。
02:33
那么它的before呢,将会是空的,然后after数据,因为毕竟是新增,新增数据呢,它不可能有之前的数据,这也就是说在你更改之前的数据,那意味着我们如果是一个更新操作,我相信大家就应该知道了,如果更新操作,那么在这两个大的K里边呢,都会有数据,因为更新操作呢,它分为前或者后,对吧,那如果是我们的。删除操作呢,大家可以自己思考一下,那哪个字段有哪个字段没有啊。
03:03
啊,大家可以把这个答案打到这个公屏上对吧?好,那没有问题啊,呃,很简单,那我们如果是一个删除操作的话,那只有before啊,没有after,因为毕竟你把数据删了,那我只有之前的,没有之后的,对吧?好,这是它封装的格式,比较简单,未来我们使用的时候呢,也很舒服,OK吧?好,那除了这个之外呢,我们就说一说弗Li CC,它为什么能够拉取到我们买当中这种动态变化的数据呢?很简单,我们在生产环境当中呢,同学都了解到,在对于我们买色克呢,我们经常会配置这个主从复制。为了安全性的一个考虑,对吧,那主从复制中间它是不会用到这个blog。所谓的blog呢,就是它的一个预写日志,对不对。对吧?好,那既然这个是一个预写日志,也就是说他在做任何操作的时候呢,他会把他的操作给他写到我们的日志里边,然后呢,我们可以访问这个日志来恢复我们的数据,那么弗Li CDC呢,就是模拟的这种环境,诶把自己想象成一个从节点去找这个主节点拿到它的操作日志,然后接下来我们把操作日志变化为我们所需要的数据,那讲到这儿大家就应该明白了,其实我们要想使用弗Li CDC能够去抓取我们买斯克数据呢,那我们必须要开启一个blo,好吧,那接下来呢,我们就把这个买S克的blo给它打开。
04:30
呃,回到我们最初的这个101节点啊啊嗯,然后接下来我直接把刚才的那套东西,我就给它放在这个位置好吧。这里边儿的内容呢,我们给大家做一个介绍。呃,这边都是注释掉了是吧,我们把这个注释打开啊,当然这个无所谓啊,这几个。啊,就是每一个,你把这个井号删一个就好了啊。好,那第一个呢是ID。
05:02
在外力啊,那这个主要跟这个主节点不同啊,如果那所以说可能主节点我不知道多少,那你可以搞一个比较大的值对不对啊,那第二个呢,是我们前缀并log的一个前缀名啊,因为未来我们刚才提到了,它是一个预写日志,也就是说它是一个文件,那有文件名对吧?那这个是它的格式,除了肉之外,它还有这个pre statementment啊,Statement级别的,也就语句级别,还有一个呢,是mix叫混合的,那呃,那这三种有什么区别呢?那我们简单的跟大家聊一聊啊。Mix混合的结结合了两者的优势啊,那他说你为什么不用mix的呢,对吧,那混合的有优势啊,好,那首先呢是肉级别,肉级别的话它是直接把我们的结果拿到啊,那statement呢,就是比如说我们INSERT1条数据,那么它会把直接这条四个语句放到我们日志里边,而mix呢,它会结合两者优势,那我们就分别聊一聊这两者之间的一个区别,因为我们知道在。
06:02
MYS当中,它是可以批量操作,也就一条S语句,可能会同时更改多条这个数据,对不对?好,那嗯,很明显,我们用语句级别它的数据量,我们的日志的数据量是不是会小,因为我一条数据。一条S会对多条数据对吧?那如果你用肉级别的话会怎么样?数据量会很大,那这样看来是不是statement更更有优势啊?对不对,但是呢,他也不是全球优势,比如说我们在这个搜索语句里边用了一个随机数的这样的一个函数,那会怎么样呢。我们使用了一个随机数函数。那你想想看,我们主节点调用这个搜狗语句,随机到的数字可能是个二。对吧,那接下来你把这个搜狗语句写到日志里边,当我们从节点拿到这条语句进行执行的时候,它有没有可能随机到是三而不是二?对吧?也就是说用statement这种呢,优点在于日志文件的数据量比较小,但是它可能存在这个一致性数据问题,而肉级别恰恰相反,它是将数据结果给它写到日志里,也就是说你主节点在执行类似于这种随机数的时候,你的结果是二,我是将二这个结果写到日志文件里边,那你从节点拿到这个数据的时候,一定会跟我们主节点保持一致,大家能明白吗?但是它的缺点就在于数据量会比较大。
07:29
那mix呢,就会结合两者的。优点啊,当你里边没有这个随机数,也就是说这个无论谁执行这个搜索语句结果都是一样的,那么它会启用C的,那如果存在这种自定义函数随机数啊,这样的它会用肉这种方式,哎,那这样看来确实mix会更好,对吧?啊,但是你要知道有一个问题,我们现在呢,是用的弗Li CDC,或者类似的同步的框架,像mael,它的原理都是一样的,那我想问大家,像这样的框架,它虽然通过满足主节点它的一个协议拿到这个日志数据,但是。
08:09
我们像弗林格CDC麦L这种工具里边,它会有一个。买的引擎吗?大家所熟悉的像my I in the DB这种引擎,它是不存在的,也就是说当我们给它这个四个语句的时候,它是没办法把它解析成我们要的数据,所以这边我们如果要做实时分析,那我们只能选用肉级别,我相信大家应该能够明白是什么意思,对吧?好,那这边呢,我们配完了,配完了最后一个是我们要开启的数据库,你要对哪个数据库进行开启blog啊,当然了,那就说我要有多个,怎么该怎么配置,跟大家简单的说一下,如果有多个的话,那么这边呢,YY。P,比如说我们有一个杠一啊,那我们就加一个就好了。懂吧,你再开启三个,再开启三个对吧,那也就是说这样会不是这这边很麻烦吗?这种方式,假如说我的数据库很多我都要开启怎么办?如果说你想要对当前这个MYSL服务当中所有的数据库都开启当前的这个blog,那么怎样,这个你就不写了,不写默认是所有数据库都开启的,OK吧,这样就比较方便啊,那我们只有这个数据库要开启,所以我们把这个给它删掉好吧,呃,那这边呢,保存保存之后呢,切记我们一定要干什么要去。
09:29
重启,因为我们修改了这个配置文件,重启一下我们的买服务啊,那system。Controlar。买。哦,我们稍等一下,重启完之后呢,同样的我们也可以查看一下它的一个状态,对不对,诶还是这个running,那没有问题。啊好,那接下来有同学们想我们这个有没有生效呢?那也可以去看对吧,比如说我们到它的这个哇,Li my这个目录底下啊,呃,那看这边就是我们刚才写的这个前缀啊,它就有第一个文件了,每次重启呢,它会更新一个,但这个数据量比较大的时候也会更新,现在呢,大家注意一下它的大小是154对吧,很简单,我们呢,来尝试插入一条数据,看看这个会不会改变。
10:22
啊,那找到一个比较简单的表啊,我通常用的呢,嗯,像这个,呃,开一对吧,这里边数据量比较少,就两个字段,比如说我增加一个,然后呢是爱硅谷。保存保存好以后呢,我们到这儿来看,刚才是154啊,一下再看变成了436,说明我们的blog开启是没有问题的,OK吧?啊,那这个就比较简单了啊。
我来说两句