00:00
好,那么接下来咱们就来实际动手做一做呗,那首先咱们来配置三节点版本的,但是咱们没有六个副本啊呃,六个副本也行,那咱们这边来一个简单的,什么意思呢?我一张分布式表,我分成两个分片,其中分片一有两个副本,分片二只有一个副本。对吧,因因为咱们说尽量还是让它分开啊,尽量分开,那么这种是可以实现的,对吧?呃,你要互相套也行啊,互相套也行。咱们刚才介绍的,我三个分片,每个分片两个副本,一共六个,我在三台机器能不能展开呢?可以一台机器有两个副本呗,啊那就行了呗,嗯,那个咱们就不不细聊了,咱们看看目前这种架构怎么来实现啊。嗯。咱们首先要创建一个新的文件了呗,对吧,我创建一个这个文件在哪呢?来走体啊,我现在好我的其中一台机器上面去做,嗯,我想想我接成入台用户啊,CD e DC click house server。
01:19
呃,先听到这,那我们还是放到config.D啊CD config点进来'M一个文件,呃,因为我另外创建一个文件,就是为了做一个区分啊,做一个区分而已。那我把配置拷进来,咱们再看一看就行了啊。好呃,但我这边需要改一改对吧,那么大家注意呃,就跟刚才介绍的一样,公司名对吧,杨啊奋斗民族的公司啊,那这个呢,这个也是固定的,那这个地方是可以改的,对吧?这个是可以改的。那这个就不能改了啊,这个就不能改了,这个不能改啊,我这个缩进还有点不对齐啊。
02:12
好,这样对齐会舒服一点,对吧,然后呢,把这个配置项打开,内部副本同步,好,那接下来这是第一个分片,第一个分片我定义了两个副本,分别在两台机器,那按照咱们的规划,我应该是在我第一台机器跟。第二排机器对吧,这是第一个分片。第一个分片它有两副本,那第二个分片我只给一个副本,在另外一台机器是应该在我的哈六三是吧,那这样我们两个分片,两个大分片是不是区分开了对吧,还有副本也单独设置。好,那这一块呢,其实咱们还有个东西叫什么。
03:02
宏命令,这个叫宏命令啊,宏命令呃,Mars。Marks。Micro对吧,无所谓了,那咱们这边一般会定义一个什么,一个分片,还有一个叫什么,呃,这个叫叫啥呢。副本,其实我为什么要定义这个,这个名字可以随便改的啊,大家注意这个什么萨的这个可以随便改,Re cat也可以改,这是我起的啊,嗯,说白了,我建表的时候我要引入参数,我就。通过这个名字标签名把它获取到啊,这个名字不是固定的,但一般是这么起,而且呢,我是不是一个机器上只有一个副本呢?每台机器只有一个副本,所以你定义一个就行,如果你的机器有多个副本,你这边是不是可以改个名字把它区分开啊,就比如说咱们刚才那种例子123的,然后他们的副本比如说是123。那这个时候你一个机器上是不是有俩副本呢?那你如果你还要通过这种方式引入的话,你每个标签要区分开对吧,比如说萨的零一,萨的零二,萨零三,就这个标签名都给他给他改了啊行,那我这边的命名规则是怎么来命呢。
04:20
这副本名字啊,副本名字,那我前面就叫IP,然后一呢表示分片一,后面这个一表示副本一对吧,所以大家可想而知,我在哈图本二这个名字该怎么改。首先它分片是不是也是零一啊,然后名字我应该叫Rep下划线分片一的第二个副本是吧,那这个呢。根据咱们的配置,这个是不是分片二,第二个分片吧,然后呢,副本名我应该叫Rep下划线,第二个分片在杠。第一个副本是吧,这个名字当然是咱们自己起的啊。
05:00
但尽量规范一点,这样才不会乱套啊,乱套行,那我还有一个地方得改啊,就是咱们前面地方配置的这个主keep。啊,我得改成我自个的一哈三看看啊,应该没问题。好,保存退出这就完事了吗?没有,这是外部文件对吧?那我们需要在我们的服务端配置,把它改成把它引入呗,那在哪引入啊。咱们在哪include搜索一下from。这个是不是咱们家的呀,那咱们之前因为没还没演示分片集群,只指定了一个图keepper,那现在他的一个分片还有副本信息,嗯,那咱们就用最新的这个文件呗,这个名字叫什么呀。叫啥来着,好像啊,我还是拷贝一下吧,这种名字不要自己敲啊,啊在这。
06:05
好,那咱们只需要把这个文件名改一下好就可以了呗,还是引入外部文件对吧,也包含了主体啊。保存退出,那之后他该干嘛呢。嗯。他们这边得分发,但是分发还有其他事啊,还有其他事。哎,我们直接来吧,我不看文档啊呃哦对,还有一个事不要注意了,不要忘了用户权限啊,这个东西root。最好是改一下啊,Change on a click house click house,然后呢,Metric上看一下好。OK之后是不是得分发一下。
07:02
啊,咱们是在home at硅谷里面定义的,对吧?XSYNC啊,Magicric上好同步一下这个外部文件,同时呢,这个conig是不是也得同步啊。Config点还慢。说白了,改造的都得同步啊,同步完就不管了吗?并没有啊。我把这个退出。这是哪啊?呃。咱们还得改一个东西啊,Su do vim ETC click house server conflict.sma这边得改一个东西啊,同学们。嗯,我直接搜吧,麦克。啊不对,不是改它啊,是改什么呢?红点D里面的。Metric。
08:00
啊,不给我提示。不给我提示,算了,我切root用户吧,别偷懒了。ETC click house server config.D里面咱们创建这个外部文件啊,因为咱们要引入的那个变量是不一样的,所以得改一下,直接拉到最后这什么宏命令这里啊。我们说了哈豆二上面按照咱们的设计,它也是分配一,但它是第二个副本对吧?呃,那我们把副本名改一下,呃,叫IP_一下划线二对吧。好保存退出,那同样的哈三是不是也得改啊,我贴一下用户123456ETC click house server conflict点一好修改外部文件。最后一个。副本名啊,分片也得改呗,咱们是不是哈多本32号分片呢?呃,那这个名字就是IP2号分片,第一个副本一样的啊,好保存退出。
09:10
那么这样呢,就OK了啊。那接下来干一个什么事呢?是不是该重启了,对吧?I see you do a house restart。好,拷贝一下。重启哈多二也一样,重启哈三重启。那这里退出了没用了。这样才可以嘛,因为咱们修改了配置对吧。那现在咱们就基本做完了啊,基本做完了,呃。接下来我们要干一些什么呢?我们开始见表了,大家注意啊,来,我们看一下建表语句啊,首先这是什么引擎?
10:04
副本引擎对吧,那我们用的是普通的蒙。普通你用其他当然也行,另外一个大家注意的,你看看几个地方create table之后跟一个什么on。这两个是关键词固定的,后面跟一个什么一群名称,这个要跟你配置文件的对得上啊。配置文件,咱们前面集群名称叫啥,跟这个要对得上啊跟这个东西。因为你只有对得上,它才会按照下面的分片和副本规则来放啊,然后回到这面一句,第二一个咱们所谓的副本引擎是不是得指定参数啊,那你看看我这两个是怎么写的。说传了一个变量名啊,这个就是从咱们的配置文件去读取它的值,这个也就是我前面说的呗,其实你不配那个行不行,也可以你这边手写嘛,对吧,这个你就看情况了,这个不是必须的啊。
11:10
呃,这个后缀我就不要了。来,那咱们。在哈杜一上面创建下来。Click house client杠,我直接在这创建啊,一张表叫啥呢?STMT。S呢,就分片嘛,我加个前缀啊,那我们show tables。哦,不对。呃,请求的集群没有找到。我看一下哪里有问题啊,好同学们,呃,之前的问题我看到了啊,是这个咱们这个配置文件呢,因为咱们版本比较新,有些地方还不一样,有一个地方啊,当然我改完大家就不会出这个问题的,什么地方呢?就是咱们定义这个分片配置的时候,它这个标签新版已经改了,他没有cli house这个前缀啊,没有这个前缀啊,呃,这个。
12:21
应该把click house前缀给去掉啊,保存啊,我保存一下,那大家之后在拷贝的时候就不会出问题了啊,之前报错是这个集群说找不到,那咱们可以通过这个命令受cluster对吧。那这边能看到,现在已经能找到这个集群了,之前是看不到它,这可以看到咱们目前有的鸡群,那后面这些集群是从哪来的呢?其实。咱们再看一下官方配置文件con.sma,呃,你看它里面是不是有个标签叫remote service对吧?也就是咱们之前写错的地方,咱们加了一个click house前缀啊,这是老版本的,也不算特别老,二零年的版本,它是需要加他的,对吧?那也就是说咱们这些分片也可以定义在服务端的配置文件,没必要写在一个外部文件也可以啊,看你喜欢那里面从哪开始写呢?如果你要在配置文件里看它嘛,这是一个集群名称,对吧?你再往下翻一点。
13:24
集群名称里面包含了什么分片信息,还有副本信息对吧,那同样的下面它是不是又有一个集群,又有什么分片分片对吧?要是在呃,服务端的配置文件直接指定了,如果咱们要加是不是可以加在这里啊。对吧,在这个标签之前给他加上就行了,那如果加在这,你拷贝从哪拷呢?哎,从这个集群名称这整个拷下来就行了啊,你把我框起来这一部分。拷到服务端配置文件就行,那我目前呢,呃,还是用的外部文件,因为我还是不喜欢把它们放在一起啊,我还是放在外部文件啊。
14:10
那你看我这边已经改好。对吧,这个东西我已经改好了啊,那现在当前生效我也重启过了,那么目前大家都能看到了,对吧?好,那我们接着执行咱们的建表语句啊,继续啊,这就看你喜欢了。无所谓啊。来,见表。对吧,On卡现在他能找到了啊,那同样的这个是不是也找到了。对吧,这个是变量,这个也是变量,咱们在配置文件指定的啊,那你看呃,我现在show tables。是不是有一个这个。STMT对吧,那。大家注意这边他同时干了什么?
15:05
是不是自动帮我们建的呀。你如果建表语句是一个own,它会在这个集群所在的节点都帮你建好这张本地表。来,我们来瞅一眼啊,呃,我退出哈多二上面格林house杠,Client杠,M show tables。你看。是不是把我们建好了对吧,再来确定哈三,呃,Click house杠,Client-m show tables。是不是也帮我们建好了,对吧,大家注意啊,这个我们是建了一张表,加了一个语句on class。那这个时候呢,他就会帮我们在集群的每个节点创建这张本地表,大家注意现在是本地表啊,再下一步我们得干啥呢?创建分布式表,因为你现在三个节点的本地表都有了,名字还一样,那我们说需要一个老大呗,来统领对吧。
16:06
那这个老大需要单独建叫引擎叫tribu啊,就就是这个tribu,那这几个字段什么意思呢?来首先我们看一下啊,还是得on class,另外表引擎指定为分布式表,也就说白了,先有本地表才能有分布式表啊,那接下来你看四个参数分别是什么集群名称。这个肯定要跟这个对应起来啊,然后呢,库名。我们是在default库下面本地的表明,因为所有的本地表明都一样的啊,还有一个分片的件,我们按照什么东西来做一个分片,那我们这边指定为SKID,并取了一个哈希函数对吧?根据这个来分片啊,我们来创建一下。呃,我在哈尾一上执行,哎,好了,OK了,来,我们同样的show tables。
17:05
是不是有了这张表,这个叫哦对吧,哦那哈度2SO tables。它也有一个什么。哦,对吧,它3SHOW tables。也有吧,好,这时候咱们的分布式表就建好了,那接下来咱们要插数据测一下了,现在每张表都没数据啊,分布式表也没有,本地表也没有,我们向谁插,大家注意。像谁差?分布式表我再强调一遍,咱们分布式表存不存数据啊,它不存,但是它能控制谁啊,控制本地表。那我们还回忆一下我们前面这个原理啊,写入流程是向这个分布式表写之后呢,它是不会向本地表的每一个分片去写啊,咱们是哈杜本一,哈多本二,哈杜本三,因为只有两个分片嘛,那是在一跟三上面,它会往这里啊写之后呢,咱们的呃一号分片,它的副本是不是在哈多本二上面,它自己会同步,对吧,应该是这么一个过程啊,好吧。
18:16
来自行插入。在这里。呃,这个时候我们来查一下这张表,That from。这张表。来。是不是五条数据全都有啊,咱们一开始是不是插入了五条对吧,你也不用对了,就是五条,好,那我哈二执行查询诶。让他报个错。重新拷贝一下这条数据,好,我们查一下分布式表是不是有五条好的三,哎。那选中就给我拷贝上了,重新拷贝来。哈,杜三是不是也能查到这五条,因为咱们查的是什么分布式表。
19:04
他是会自己去每个节点查的,那如果你查一下本地表又会怎么样呢?我先把分布式表结果截一下啊。来呃,本地表叫什么STMT对吧,没有后缀的那个好。The let t from这张表。能看到吧,有几条。在哈杜本一上面只有三条,是不是这三条?其实这就是分片一的副本一。分片一的副本一好吧。这也是为什么?这几条跟这一条没合在一起,因为咱们分区字段是不是按日期啊,6月1号,但他们没在一起,因为他们不属于同一个节点,它没法合一起的啊,再往下看,我们看哈杜法二。
20:00
大家猜一猜。应该有个什么。有哪些数据啊?有两些数据是不是应该也是这三条,因为哈杜二是不是跟哈杜一是互为副本啊,他们都是分片一号一号分片的副本,对吧,他们的数据是一样的,来我们看一下是不是也是这三条。对吧,没毛病啊,那么再看看哈杜三上面select新from。这张表啊,不是啊,我把后缀去掉就行了呗,大家可想而知有哪几条数据啊,这两条。对吧,是二号分片嘛,回车你看看是不是这两条。对吧,所以咱们这个分开也很明显啊。这两个分片啊,那后面这两个为什么分开呢?分区不一样啊。能理解吗?现在大家能玩得透吗?
21:02
对吧,好好理解理解啊。那这个就是咱们的实操,那么可以给大家留一个作业,什么作业呢?那呃,你可以依据于咱们的这种用法啊,那你可以这样。就是什么呢?呃,我要求分三个分片。然后呢,每个分片两副本。而且呢,我要你三台机器来实现。三台机器知道在哪改吧。我提示一下啊,在那个配置的那个配置文件里面改就行了啊,在这里面改就行了啊。这个留给大家啊,留给大家。
我来说两句