00:00
那么接下来我们看一下这个副本,那副本主要是咱们在生产环境得考虑它的一个什么高可用呗,对吧,比如说我某个节点宕机呢,那我这个服务这张表的数据还能不能正常提供服务是这么一个问题,那它的一个流程原理基本上是这样子啊,我们通过客户端往其中一张表写入数据啊,然后呢,它是需要依赖于谁啊keepper。这块主keep必不可少,我们说了它是一个协调者啊,那那么同时呢,那这个时候我们会往可呃主keep里边提交一个写入日志,就相当于说我有变化对吧?那作为他的副本B,大家注意这个是对表而言的啊,对表而言的,那么他会从主keepper监听到相关的信息,那么他就会主动从副本那边拉取数据。下载一个最新的数据,那么这中这中间大家要注意的是A跟B谁组谁重呢?
01:01
他并没有这个概念。对吧,它讲究的是人人平等,没有阶级之分。你每个人既是。老大也是小弟啊,也就是说你可以把它认成是主,他也可以是主,也就是说他们两个的地位是平等的,那再举个具体的例子啊,你往A里面写数据,最终经过这几个步骤是不是同步到B了,那B里面讲道理是能查到对吧?那同样的道理,你往B里面插入数据。那么最终它的数据也是会同步给A,他也能查到相应的数据,他们是互为副本啊,没有主从之分。那么这块呢,由于咱们需要依赖组keep,咱们是不是得。第一个你是不是得启动主keepper,第二一个你是不是得在配置文件指定组keepper啊是吧?好,那我们首先呢,咱们介绍了这种方式是通过外置文件来指定组keepper的外置文件来指定主per,那我们也可以内置啊,呃,我重新进来啊,那咱们是不是,呃,Vim ETC click click house-server con.sma对吧?这个是服务端配置文件,我们在这搜读keepper,好,你看这里边是不是有一个标签是一个读keepper。
02:27
对吧,这里我们要指定,你看这个是用来。干嘛呢?做副本的啊,是用来做副本的,你可以在直接在这个配置文件里面去打开指定,但是呢,那我现在就不用这种方式了,因为这样是比较死啊。对吧,这样是比较死的,对吧,那我们可以用什么呢?用一种加载外置文件的方式啊,那我像咱们文档指定的一样,我在这个,诶我先进来这个路径,对吧。
03:00
好,我在config.D这里默认是空的,对吧,我创建一个文件叫maric.sm。这个名字随便起的啊,这个名字随便起的,但咱们通常叫这个,然后呢,你把这个。配置内容拷贝过来,这些标签的规范格式要注意啊。呃,然后呢,改一下地址啊,那这个我的主机名是哈杜一,呃哈杜二哈杜三,这边你就改成自己的就行了,好吧,呃,回车保存退出,那这边你要注意一个事儿啊,一定要注意了,同学们,我当前用户所属的用户跟主是谁啊?Root,咱们通常是谁啊,Click house,所以你最好呢是改一下啊change on,呃,应该是click house冒号house对吧,然后是magic这个文件,好你再看一下。
04:04
这点不要忘了啊,这点不要忘了,那出来之后呢,咱们还得改一下服务端的配置,Congu.sma在这里呢,你看还是刚才搜索了这个位置主keepper,你再往上看。他说什么?默认pass to fire with什么?替换,也就是说它这个配置从外部文件读取,默认呢是在ETC Mari.SMA,所以其实这个名字随便,虽然是随便起,但我还是尽量跟他保持一致,但是路径我就不写在这儿了啊,所以呢,咱们还需要一个配置,就是什么呢,指定。外部文件的一个路径,那这边咱们需要加一个这个,诶哪去了。呃,指定一个这个。这样一个标签叫include from,其实这个标签不是咱们自己想的,你看这里注释告诉我们了,添加一个include from标签啊。
05:10
那我们我把行号打开啊,应该是在咱们700。呃,119行这里有谈到啊,那我这边咱们就添加一下呗。诶,拷贝错了啊。咱们缩进一下好粘贴,把这一行添加进来就行了,这个路径大家注意,一定要跟你创建的文件的路径跟名称要对应上,如果你的名字不叫他,那你对应的也要改,如果你的路径不是这里,你也要改好吧。这就是咱们配置主keep的一个方式啊,研发怎么了?
06:01
啊,切换到中文的对吧,然后WQ退出,那这个时候还有一个问题,如果我想让哈杜二作为我的副本啊,就互为副本呗,他俩互为副本,那我是不是需要把刚才的配置文件怎么样都给它同步过来啊,这个是需要做的啊,那这一块呢,咱们就做一个同步,我直接拷贝了。来拷贝。当然了,其实我的哈多三是不需要的,对吧,但是我懒得说去挨个弄了啊,不管它了,那还有一个咱们的这个配置是不是也得分发一下config.SMY也得分发一下对吧,那同样的咱们分发一下。好了,现在主keepper配置好了,服务端配置文件也改了,接下来需要干什么?是不是主keepper要启动起来?
07:04
对吧,这个我不用root用户了啊主keepper.start我把to keep启动,哎之后呢,我们这样就生效了吗。我之前的click house是不是都启动着呢?一也好二也好,都启动着呢,那这个时候需要干嘛重启?为什么要重启?因为咱们的配置。改了呀,你要让它生效,你必须重启啊,那重启命令很简单,So do click house restart。对吧,102也一样啊,修度啊,这个我之前停了对吧。我之前已经停了,我现在只需要启动起来就OK了啊。好,那这样呢,咱们就配好了,咱们这样已经配好了啊,那么。这边我也做了一个说明啊,因为其实我们的案例是只要两台互为副本就行了,但是呢。
08:01
我为了方便,我是不是直接用同步脚本,它所有机器都同步啊,对吧,这个只是。这个不是必须的啊,你只需要同步你需要的节点就行了啊呃,那这边呢,我们就OK了,那这个时候大家要注意一个事儿,我们要开始玩了,那玩的话有一个要求你的表引擎必须指定,为什么?副本。那一定只能用这个引擎吗?那我那个所谓的去虫的引擎跟那个聚合的引擎难道就用不了了吗?不是这样的啊,这边要给大家明确一下,所谓的副本引擎对合并数家族都有的啊,来,我们打开官网,这是官网对吧?呃,我先把这些菜单搜起来,在我们的左边你找到什么引擎啊,点开选择表引擎,再打开这里有一个medu family。
09:00
对吧,大家注意咱们的副本只针对合并数家族啊,只针对这个,这里面有一个什么数据副本。你点开。这里有什么来?有没有熟悉的?这个熟不熟,这个熟不熟,这个熟不熟,那当然还有其他的相关的合并数,对吧,你看他对每一个合并数的引擎呢,它前都加了一种类型叫支持副本的合并数引擎,所以跟咱们前面讲的那些表引擎并不冲突啊,只不过它针对每一种表引擎又加了一个什么,加了一个知识副本。那这个链接呢,我可以给咱们也粘到文档里吧。呃,我站到最前面,最前面。方便大家去一个查找啊。
10:03
好,那这里我们也可以继续看官网,这句话什么意思,Only support。是支持什么合并树家族,所以这一点大家要明确啊。那其他没什么好说明的,来,我们直接来见表呗,那这边我要需要说明几个事儿,他需要传至少要俩参数呗,第一个参数是JK的路径,节点路径,也就是说我这个复制表相关的信息,我存在哪个路径下面,一般咱们还是按照规范来写的啊,前面。呃,那后面这个呢。是副本名字,也就是说我当前副本我要给它起个名字,那这边你还有一个细节要注意啊,你看我这是在两个节点创建副本。同一张表啊,那他这边你看啊,To keep的地址首先要一样啊,这两个要一样。
11:02
因为这个节点是不是存储到什么表明为止啊,最终要存一个表明,另外一个细节是什么,第二个参数副本名称必须不一样。必须不一样,如果一样的,那就乱套了,同学们。一样的话就乱套了,名字必须不一样啊,就像你一个孪生兄弟,你虽然是同一个胚胎发育出来的,但是你起的名字是不是也不一样啊,你不能不可能说老大叫。叫王一老二也叫王一吧,那那那你怎么区分这两个人呢?对吧,你肯定不行,你比如说你一个叫王一,一个叫王二是吧,虽然你们是孪生兄弟,但名字至少得区分开嘛。那我们就来玩一玩呗,那首先我在其中一个节点,我创建一张表啊,那哦对,还有这个节点名称啊,咱们一般是这样,虽然是随便提啊,前面这一块一般是什么?克里house。对吧,当然你想改也行,那后面跟一个什么table表示,我是表的相关信息,那第三个参数是分片的信息,分片了,呃,分片咱们可以理解为一张,呃,一个正常咱们没指定的话,就是只有一个分片,我们给个零一就行了,那后面跟上一个什么表明啊,是咱们的一个命名规范啊,规范你尽量按规范来。
12:24
来,我们先在哈杜一。啊,这边得重新进来了,对吧,Click house client,杠M,我填一张表。味道主题法。好,呃,我刚才试了一下,其实新呃新版里面它少了一个东西啊,少了一个东西是啥呢?呃,来我刚才已经测了一下是可以的啊con.sma就是少了一行这个。少了一行这个。
13:02
这个是什么意思呢?我现在加了这一行就OK了,就是说其实你仔细看上面这一段配置,它说的是什么,如果标签含有in CR属性,那这个时候它才能使用一个外部的其他文件,那呃,因为以前版本里面它这一行默认是有啊。那咱们没有新版,因为它是比较建议什么,你看下面是不是直接在配置文件指令就OK了,对吧?那我们非要用这种外部的方式的话,那这一行我们只能手动添加上啊,这是一种方式,呃,那这一行我把它写过来,呃,写在哪呢?写在这里啊。写到这里。也就是说咱们要添加这两行都得要啊,我把它更新一下,那这一块呢,我们其实可以选择什么呢。呃。
14:03
我写在哪,我回头文档我再改吧,就是说咱们直接在配置文件改就行,没必要那么麻烦了,现在对吧,你还加那个干啥呀,你直接改这里就行了啊,直接改它,然后我现在是添加这一行之后我重新分发,并且重新重启了,对吧,大家可以明显看到我这里啊。呃,我rest restart一下啊,Restart一下,那现在两台机器我添加这行配置分发完重启完了,现在,然后呢,我进来之后再把咱们刚才的建表语句拿过来创建,现在已经是OK了,现在就执行到这一步,那我们再接着往下走啊,关于这个图keepper,咱们以后就配置文件改会比较方便一点啊呃,那我们再把另一个节点。把它拷过来,你看不一样在哪,副本名称不一样啊,副本名称不一样,好,那我快速的创建在哈多二上面,我也记一下click house-client-M,呃,创建一下,你可不要把同一个语句拿过来,直接在两边执行啊,还是那个意思啊,名字啊不一样,这时候我们看一下to keepper呗,那我用一个工具叫pretty zoo啊to keepper嘛啊就是这个,然后呢,这个工具方便查看啊,点开,然后这是根节点对吧,那我点开,这个时候我们看一看啊,它多了一个什么click click house来我们点开投眼创建时间是刚才啊,那里边我们可以看到什么table,是不是咱们指定的路径啊table好再点开。
15:37
零一是不是咱们指定的再点开。表明对吧,都是咱们指定的,再往里一下,你看他有一个什么leader Rep,还有replications对吧,Voca Lama等等等等,它在这里面是存有很多很多信息的啊。还有什么一些可变操作啊等等,它这里都会记录的,呃,严格来讲,咱们肯里格house对主keep的依赖是还是比较重的啊,比较重的啊,这个咱们现在创建好了对吧,那么咱验证一下呗,比如说我往其中一个写。
16:15
我在其中一台机器执行一个插入啊来,我在哈度一上面啊,现在是哈一对吧,好,我执行诶我去。再拷贝我执行插入成功了呗,Select from。这张表。回车能查到数据对吧,那我同样的,我把这个语句拿过来,我在另一台节点哈法二上面,我也执行这个语句。有了呗,我在哈杜一插入的,在哈杜二也能查到啊,那我现在这样,我在插入一条特别的啊,我把它拿过来,呃,在这里。我改一下吧,这个叫111SKU011,好吧,时间这个无所谓了,我在阿杜二上面另一台机器呗,我试试从这台插另一台能不能插啊,插入好我再查一下。
17:16
你看。是不是OK啊,我刚插入的自己本身肯定能查到,那我们在哈杜一上面再查一下。他是不是也能查到,所以这一点现象能说明什么,他俩之间是什么互为副本,其中一个挂了,另一个还能提供服务啊,还能提供服务,那你我们也可以瞅瞅出keeper里面的这张表下面。你看他其实有很多信息的呗。Leader的选举,我们看一下。他这里也没有什么太详细的内容吧,你看关于这个他是谁啊。102,那关于这个呢,下面这另外一个呢,103,它俩是都有的,对吧,而且都是什么。
18:06
多leader OK,从这里你能看到那么一点点啊,能看到一点点,他俩都是老大啊,行,这是咱们一个副本演示啊,那再回顾一下它需要依赖谁主keepper对吧?那配置呢,我们可以直接在config配置文件里面指定就OK了,也可以说以外置的文件的方式来指定也可以,但是外置的你可能要加两行配置啊,创建一个文件加两行配置。另外一个他们是互为副本,就这么几个事儿啊,几个事儿。
我来说两句