00:00
接下来我们聊一个blo load,这个其实就是一种CDC功能,什么叫CDC呢?就是change data capture变更数据补货,那典型的代表我们应该都用过一些工具,比如说那个阿里的那个can,还有常用的一个叫mawell,甚至flink里面是不是有一个flink CDC,还有Oracle等等自己提供的是不是有一些ogg等等等等啊,前面这两个应该比较常见啊。是实时增量同步,它可以同步到我们的插入操作、更新操作、删除操作。但是他目前暂时不兼容DDR,就是定义表的一些语句啊,就是建表的那些语句,它不会同步过来。那么那关于CDC这一块,我就不呃不过多介绍,我们直接看哈,虽然是呃说DOS提供这个功能,但是它需还是依赖,依赖什么呢?可耐还是依赖于阿里的can耐,对吧?它并不是说整个监听b log,然后解析同步过来都靠自己写,没有啊,底层用了can耐,那么can耐的原理我们在这就不介绍了啊,简单来讲它就是can耐,就是伪装成my circle的一个从库啊,一个slave啊,然后呢,假装是他的小弟,然后呢去从主库的这个blog里面去同步他的记录啊。
01:35
实现一个数据复制。这个我们就不展开讲了啊。呃,那接下来我们要做的就是准备一下一些东西,首先呢,我们你得自己有个买蛇口库吧。对不对,第二一个可耐是不是得安装一下,对吧,那这些前期的准备工作我们先做一下啊,那么想要。
02:04
其实就是可耐尔来监听,呃,My circleql的话需要开启一些blog功能,要开启blog功能呢,你要在my circleq的配置文件了啊,加几个东西,主要是这两个,第一个呢,是要开启b log,叫log bin,然后指定为MySQL bin啊,这是它前缀,那么还有一个b logg,它是有很多种格式的,那一般呢,我们会选择用roll格式,Roll呢,就是它记录了不是circle语法,不是什么insert update这个,而是什么呢?这个语法对应影响的数据行,也就是说我们拿到的是具体的数据变化后的数据啊,而不是说是一个思口语句啊,具体我就不展开讲了,如果用过canal或者了解过BOC应该都知道,这不是我们现在关心的重点,对吧?那最后一个选项呢,我们可以指定说具体要同步的一些数据库的库名,那这里你也可以不指定这个参数,因为这个参数是。
03:04
My circle的master也就主节点,呃,他主动进行过滤,而且这个参数呢,也是有争议的,有些人认为你这样无形中增加了什么master的负担。啊,这样不太好,因为master要自己往写B的时候要执行一个过滤操作,并且呢,在一些特定场景下是会有问题的,会有呃,记录不到记录的问题。比如说我在。比呃这点简单,简单讲一下啊,比如说我买SL有两个数据库叫DB1DB2,那我在配置文件指定监听为DB1,好是这样对吧,那如果我先诱使DB2。我是不是就进入到数据库二的环境啊,然后我在这里进行insert,比如说insert,但是呢,我插的表是什么?DB1的一张表能理解我意思吧,我在数据库二的环境下去执行对数据库一的插入,那你这个B是会被过滤掉的啊,就是说因为它会识别成为可能识别到啊,你这是属于TP2的。
04:16
啊,不是我要的。反正总而言之呢,甚至有些人会说很危险,而且不推荐。那所以一般不建议设置这个参数啊,我们单独拎出来讲一下啊。那如果我就是要过滤呢?啊,那官方的推荐是什么?呃,你不要在master端设置,而是在什么呢?在slave端它还有一个过滤的选项,那这个压力就传导到slave自己身上了,不会影响我们的主库,那个参数名是叫什么rerier,呃,什么杜DB吧,好像是大概是这个,这是我们的题外话啊题外话。另外一个就是我们要开启一个GTD。
05:02
这个可开可不开,不影响使用,但是建议一般是建议开启的GTID就是全局的事物ID,这个功能呢,我们简单一点啊,它能够与呃。不需要blog的文件名和偏移量就能够追踪到事物,还能恢复数据复制副本,你可以理解为是一个强化版本啊,强化版本。就可开可不开啊,呃,功能都能实现,但一般在实际环境我们肯定是会去开启它。这个也不多讲啊,那修改完买前面这些都是在MYSQL的配置文件去修改的。那修改完之后,你要让它生效,是不是得重启啊。对吧?啊,所以这个你在实际业务场景你就要评估了,呃,就是说如果MYSQL是我们的业务库啊,我现在要开启,那怎么来开比较合适,你不要一股脑自己改完直接重启了,那可是业务库啊,影响线上业务,得不偿失啊,再好好评估一下什么时机啊,去去去部署配置啊。
06:08
另外呢,我们由于要使用什么呢?可耐尔,可耐尔回头他是不是呃伪装成从库去主库那边同步b log,那他是不是得去连接呀,那连接。My circle,所以呢,呃,我们一般也不会给他一个root用户啊,那我们就单独创建一个用户给他用啊,那这边呢,我们就呃创建一个用户名叫can,密码呢,我也设为canal好吧,然后并且对他进行了授权,所有库,所有表。啊,创建用户给can耐用啊,这个用户名跟密码你想怎么起都行啊,我们只是示例啊,为了简单我都叫可耐,另外呢,就是在my circle里面准备一张测试表对吧?啊或者你用已有的一些表也可以啊,这是我们,呃,这个my circle这一部分要。
07:05
做的事啊,那我们具体操作一下啊,那我的哈杜一上面是已经翻过一个MYSQL5.7。啊,在哈杜一上面,大家注意MYS是不是跟Doris那个连接一样啊,注意啊,我那个MYSQL客户端,我是之前装的时候是哈多二这个我就专门用来连接Doris对吧。的f fe,当时我们是不是要指定杠大P9030啊啊连接上F1对吧,那现在哈豆一就是我正常的一个买车口服务端客户端都有啊都有,那我先来一个root用户。因为我是本机啊,我直接连当前是买真正的my circleq了,这个不是Doris啊,这是my circleq,呃,我这个用户之前是创建过了。
08:04
啊,算了,我们按步骤来吧,我先修改我的配置文件啊。呃,我的文件应该是在呃,ETC卖点CF对吧,卖点com,那么大家看一下我的配置文件在MYSQLD这个标签下面啊,其实我是指定了什么呢,一个这是不是开启了blog,并且呢,我指定的格式,为什么肉。那之前我指定了一个度提币对吧,呃,你这个配置下,我们说可设可不设对吧,那当前是测试环境,没有什么压不压力的说法,那我就撤呗。设备啊,那生产环境还是不太建议在master端设置这个参数啊。呃,我我是有个库名叫test,如果你们要设就设成你们自己的一个库名,那下面这几个参数是什么呢?就是GTD对吧?啊,就这个就。
09:08
嗯,这个啊。GTID模式全局事务ID啊,把它制成on,然后设置为一啊,强一致性对吧,设置为on。设置为一,也就是说这些参数我都是有的啊,我无非现在就改了一个这个对吧,好保存退出,那我们说MYSQL修改配置要生效,必须重启啊,So do system啊,C rest my circle d啊。嗯,稍等一会儿啊,等他重启完毕。好了。我们看一下my circle的一个状态啊。好,现在是active在running状态没问题啊,那在之后呢,我们进来my circleq啊MYSQL杠一,我用root账号登录123456,创建一个MYS,呃,专用的账号啊。
10:17
那前面这两个设置是,如果你密码太简单不行的话啊,你再去修改,那这里我就不改了。那这个账号我也其实已经有了啊,已经有了我就执行一下,给大家看一下啊,这个就是什么呢?授予select权限,拷贝权限。啊,就重库的拷贝权限啊,客户端拷贝权限给所有库,所有表给哪个用户呢?可能这个用户百分号是远程,可以远程连接啊,这个是指定密码,就这个就是。创建用户连带授权一起做回车,好,其实有告警,因为这个用户我已经有了啊,好其次呢,我这边有一个数据库叫test啊,有一个test use test,然后show tables,这边是没有什么表,那我们先建一张测试用表啊。
11:22
啊。哎呀。这个这这这个是错的啊,因为反引号括起来,把这个点不是变成库的区分了,变成表明了这个啊,这样会有问题。我把它改一下吧,把这个这个这个这个应该是这样才对啊。So tables你看那这个表明就是T对吧,那现在是没有数据的啊,就不用查了,肯定没有,我们插入几条都是int类型。
12:12
好,那我们再查一下这张my circle准备的表啊,这都是准备工作啊,啊不用拷贝了TB啊,你看现在是有三条数据对吧?好行,那我们就这是买circle啊,我们放在这里不管。
我来说两句