00:00
那接下来我们就来使用沙Ding proxy来完成一个分库分表、读写分离的功能,就像我们这张图,如果有了我们沙dingxy,它可以帮我们来代理我们后来的所有数据库,假设呢,这是一个数据库,它里边有一个DEMODB0,有一个这个库,然后呢还有一个DEMODB这个库,然后呢每一个数据库都有它的这个存库,然我们可以搭建两主两从四数据库的方式,然后我现在呢就不这么做了,我们之前搭了一个主从了,就已经放在这儿,我呢就可以给这一个主里边,我创建上两个库,DEMO的这个DB0和DEMO的DB,大家如果想要扩展,可以再搭个主从,把这个DEMODB放到另外一个主从里边,让它同步好为什么现在我们要做一个分库分表读写分离,有,比如说如果是我们的主存同步的这种模式,它呢解决不了我们单点的这个数据性能问题们单点单表的数据量。
01:00
太大,我们的整个检索性能就会下降的很厉害,所以以我们这个订单表为例,假设我们上了几千万甚至几个亿,那假怎么办呢?我们就可以给它分成多个库,然后多个库以后呢,每一个库里边订单的这些表,我们又可以给它分成多张表,比如我们是以日期为准的,11月份的这所有订单都在这张表里边,12月份的都在这里边,所以每一张表要进行分表,我们肯定要根据一个算法来进行分,包括要分库,比如我们所有市这个北京的这个地址,我们全部呢放到这个库,所有呢是我们。上海的地址我们放到这个库,所以我们最终通过分库分表,那就可以形成我们的这个压力分担,我们能提升我们的整个检索效率,所以现在呢,可以来使用shading proxy完成这个功能,只要它帮我们代理了这几个库,我们所有应用代码无需做任何修改,我们来连上shinding proxy,现在只改变一个数据库连接地址就行了,然后呢,他就帮我们能做好的分库分表工作,那这个分库分表要怎么做?那么就先来看一下我们官方文档的使用,来到我们这个shading proxy,这有一个用户手册,我们来找shading proxy,这个shading proxy呢,它对我们整个应用程序是一个透明的,诶我们之前说过,所有人呢全部联想它,由它给我们来代理数据库,有了它以后呢,我们就能完成分库、分表、读写分离的这些操作,那该怎么用?首先我们使用s proxy,因为它是一个中间件,所以我们就得下载来启动这个门槛,使用docker镜像的方式来下载来。
02:39
店也可以下载它的整个这个二进制压缩包,那我们现在呢,就以压缩包的方式,我们先来下载过来,我们来点下载第一个我们来下载的是这个沙丁proxy,好来点一个这个二进制来下载它的这个压缩包,我们把这个shading proxy整个压缩包下载来了以后,我们现在稍等一下,我们在这儿呢,就会有一个我们下载好的压缩包,然后我们把这个压缩包呢,我们可以来解压到我们这个桌面来直接运行,大家也可以放到Linux里边。
03:09
来解压到我们这个指定的这个文件夹来全部替换好,现在呢,我们把这个压缩包解压过来了,我们现在给它起一个名字就叫沙丁菲。好,我们现在的这个压缩包,我们解压好了以后,它里边呢,现在有一个这个沙定的这个proxy这个目录,我们来点进来,点进来呢,有它的这个being config lib,然后我们接下来就来继续进行使用就行了,第一步我们先来下载来了Sha proxy,那下载来以后,接下来我们来继续照着手册使用。使用手册第二步,如果我们想要使用商品proxy的数据库治理功能,相当于我们来管理多个数据库,然后我们还可以进行熔断,把这个存库给它禁用,我们可以搭建一个注册中心,那么现在就不搭建这个,我们主要来配置一下我们这个读写分离,我们也不进行这个熔断了,我们分库分表呢,跟读写分离就让它默认进行就行了,如果想要用注册中心,大家就来下载这个注册中心,那现在呢就不用做了,然后接下来我们有了这个下载以后,我们就得在这儿配置官方文档呢,都有相关的事例,比如我们想要做数据封片,我们呢就需要在我们的shading proy里边,每个以config杠为我们这个前缀的压面尔文件,就是我们一个逻辑配置,它来配置我们整个数据分片的规则,比如我们来看一下这段规则,大概就是我们data source,我们定义了两个数据源,DS0 DS1,然后呢,接下来在这杀丁入我们又定义了它的这个。
04:42
分片规则,我们看到这一块这两个呢是同级别的,那先来定义了一个data source数据源,然后呢,我们又定义了它的这个分片规则,然后再在tables里边定义我们需要这个封片的这些表,比如我们to,这是订单表,还有订单项表,然后他们怎么封片,我们在这呢,又定义我们这个规则,这一块呢,来写我们这个真实数据节点来DS。
05:08
这一块呢,Dollar大号零到一,那就意思DS0DS1下边的T0T1,相当于分过两个库,然后每一个库里边呢有两张表,奥零奥一,然后呢,奥零奥一,这是DS0,这是DS1,所以呢,我们在这相当于指定我们是最终分到几个库几个表,然后呢再在这指定这是data based strategy,这是我们的数据库的分库策略,分库策略呢,我们看到它在这指定叫沙丁clo,就是按照哪一列来进行分,相当于按照用户ID,然后呢,我们分库的算法在这相当于使用用户ID对二来做一个到取余的运算,如果除二,然后呢,它余数是零,那就到DS0库,如果余数是一,那就到DS1库,所以这样呢,就做了一个分库,现在用户级别的分库,分表策略呢,在这儿也有,然后在这儿都写上了,所以在这一块,我们所有的这个数据分片规则呢,在。
06:09
这有,包括如果我们想配读写分离在这儿呢,也有,所以我们照着这个配置,只要配好就行了,包括它还支持我们指标数据脱敏的功能,那有兴趣呢,大家看一下这个数据脱敏,然后我们的整个数据分片,读写分离,完整的配置全在这儿,你可以配在一个文件里边,也可以配在多个文件里边,那我们现在就来把这个呢先配套,我们现在呢,既然下载了这个沙丁proxy,我们直接点进来,然后这个proxy里边呢,我们看到其实有非常多的这个视力配置,每一个配置呢,我们来点开,它在这一块呢,其实都已经注释了,相当于默认没有生效,这是我们数据脱敏的配置,然后我们来看这有一个master slave,这叫读写分离的配置,这读写分离呢,我们先给大家配置好,然后我们来看一下这一块的配置,这块的配置呢,前面这一段我们从这一块开始到这一块结束,这是一个配置,然后呢,这个配置主要是联想我们的这个post,这个circle的,然后呢,我们。
07:09
现在给它换成MYSQ,我们现在肯定是用的MYSQL,而这一块还提示,如果我们想要连接MYSQL,我们必须手动复制MYSQL的驱动到我们的这个力保目录里边,文档呢在这儿其实也说的很清楚,我们可以在它快速入门里边,我们看一下这个shutding proxy,好,我们想要使用其实很简单,配置好它的这个规则,然后呢引入依赖,如果我们连马SQ呢,就要下载马SQ驱动这个依赖,我们把这个呢正好也下载过来,然后呢,我们把这个马SQL驱动也引到我们的这个项目里边来,直接打开我们把这个马SQL驱动,直接把这个炸包来解压到桌面里边。我们把这个炸包呢,必须放在我们的这个Ding proxy的这个保目录下,好这个炸包在这儿,然后呢,这是shutding proxy来到它的力保目录,把这个复制过来,好,我们现在马S库的驱动就引进来了,然后接下来我们继续来修改它里边的这个配置,只要我们把这个驱动什么都引用好了以后,我们现在就直接可以来启动服务,让他帮我们来做分库、分表、读写分离,但想要把这些做完,我们全部都得参照这一块的所有的配置,我们现在就来打开我们的这个配置来配,首先我们配第一个叫server压面,来点开这个server压面里边呢,它配的是我们一些认证信息,以及一些代理连接属性,我们就来打开我们想要用的信息,在这儿有一个叫also,这一块呢,还是来参照我们这一块的配置,我们一直往下翻。
08:40
那下面这一块配置呢,就是我们全局的配置,我们必须呢配置shading proy的这个服务端的一些配置,包括主要的是这个认证信息,如果我们想要开启注册中心的这一块配置的话,我们在这儿就得加上他们现在呢,呃,只加一个认证信息,我们看默认呢是这样子的,奥速开代表呢,我们要配置一些认证信息,User代表我们要配置一些用户,然后接下来user里边呢,有第一个叫root,相当于我们要配一个root用户,账号叫root,密码呢叫root,然后还要配一个沙定用户,然后呢,账号叫沙顶,密码呢叫沙顶,然后呢,我们还给沙定用户给了一个权限,他只能访问这个SDB这个数据库,所以呢,我们可以配这个,包括我们来还可以配我们这个线程数的大小,16个,以及是不是展示circle这些这一块呢,我们配置文件中都有演示,所以我们把这个注释我们来直接它打开就行了,来打开每一个autotic认证信。
09:40
Users第一个用户是root,他的密码呢是root,第二个用户叫沙丁,他的密码呢是我们的这个沙丁,然后第三个用户,诶这不是用户,我们给第二个用户呢,还给了一个授权,他只能做这些事情,然后包括我们还可以配置一些属性,比如它的这个线程数的这个大小,我们现在呢,给它给一个16,以及我们是否展示circle,如果我们想要在控制台打印circle,我们还可以写一个处,所以我们现在呢,把server的基本信息我们配置好了。
10:12
那接下来我们再来配置第二个我们SERVE2的,配好了以后呢,我们现在就得配置我们的分库分表与读写分离,那分库分表在这个沙定配置里边,只要是以con f杠前缀为开始的,它都会全部加载,咱们先来看沙定这个读这个分库分表的配置,分库分表的配置还是一样,前边呢是配的这个post,这个circle的,我们现在要配满circle,满circle呢,我们就用下边的,正好我们阅读一行,打开一行,首先第一个schema name,这是我们数据库的名字,叫沙DYDB,这个数据库的名字是什么?是这我们来看沙丁proy,其实我们现在呢,默认连的都是沙丁XY,然后沙丁proxy帮我们来进行分库分表,比如我们要分第一个库DS0和第二库DS1,所以如我们的application,我们的应用,我们就不应该连DS0和DS1,我们应该连的是沙Ding proxy的杀定DB由沙。
11:13
Y里边自己呢,相当于映射了一个虚拟DB叫杀定DB,然后呢,这个杀定DB其实映射的是真实的DS0或者DSSE,所以呢,我们现在给我们的shding proxy里边先来整一个我们的这个DB,就是我们叫shding DB,这个名字当然随便起,然后现在由于我们现在要做一个分库分表,我们现在就来配上数据源,配上两个库,所以data里边我们把这个data source打开,DS杠零第一个数据源,DS杠一第二个数据源来指定第一个数据源的位置,JDBCMYS,我们现在呢是在虚拟机里边,那么现在就来配置一下这一款,我们192168,我们是192.168.56.10,我们用我们上节课搭建的这个主存环境,我们上节课呢正好有一个master,这个master呢,我们来看一下它的端口号doer PS,这个doer PS我们的这个master。
12:13
至3307,所以我们让它连上这个3307,那3307连上第一个库,比如我们就叫DEMODS0,这是我们的第一个库,然后呢,接下来我们把这个账号密码再来打开,我们连这个库用的账号是root,密码是哪个,我们再来加上这个密码,空格密码呢也是root,然后再来加上我们的这个其他连接的这些超时信息,走把这些呢都给它打开,还有连接闲置回收的这个时间,以及我们最大的这个生命时间,还有我们的这个连接池的大小,然后我们的第一个数据源相当于就配好了,然后我们再来配第二个数据源,因为我们现在没有做两个主的方式,两个主库在这分分片的方式,那现在呢,将DS0DS1都放在一个库里边,所以呢,我们第二个数据源还是这个,那我们相当于还是连的是这一块。
13:08
只不过呢,我们第二个叫DS1,我们的第二个库我们就叫DEMOD1,然后呢,接下来连的账号也是他密码呢,我们也叫root来配置上。还有我们的这个连接超时信息来把这一块呢,我们全部都加上,这是我们相当于现在呢创建了两个数据源,让我们沙丁proxy先代理这两个,但这两个数据源准备好了以后,我们相当于要对他来做一个分库分表操作,那分库分表怎么办呢?接下来就要定义一个叫沙丁肉,走我们来打开,那沙丁肉呢,就代表我们的这个分库分表规则,这个规则里边呢,首先我们来看第一个在这个规则里边有一个叫tables相来第一我们要分哪些表,那接下来第一个表叫T-O的,相当于我们的第一张我们的这个逻辑表,我们要分的这个表叫T-O的,我们订单表呢,相当于要进行分表,然后呢分表,但是它对应的真实的这个数据节点是我们的DS,我们看到DS杠,然后呢是Dollar大括号零双点一,零双点一就是我们会产。
14:23
成DS0DS12个库,其实这块到底写DS几,我们要看前面的配置,我们前面呢叫DS杠零,DS杠一,所以相当于我们这个订单表,最终会产生两个DS杠第一个,然后DS杠第二个,然后呢,接下来我们第一个库点一个,我们每一个库里边它的表我们也进行了分表,我们这个表呢有tso也是从零到一,所以啊,每一个库里边有TS-order杠零,还有TS-order杠一,我们这两张表,然后这一块呢,我们也准备好了,接下来我们再来打开这一块,我们这一块呢是告诉他我们将来呢会有DS012个库和O012张表,每个库里边都有两张表,这是我们分库分表的整个总和,然后呢,我们再在这儿再来告诉我们的整个分表策略是什么,那这个分表策略呢,我们现在在这儿,我们来打开我们的这个。
15:23
表策略是这样子的,好,我们直接把这个打开,打开我们的分表策略呢,写了一个叫沙丁cloe,相当于我们这个分表用的这个列,列呢就是OID,相当于我们用订单的ID来进行分表,怎么分呢?我们这接下来指定我们这个分表的算法,只要ID对,二来做一个求余操作,余零那就是它在TSO的零表,余一那就是在TSO的一表,所以我们在这指定了一个分表策略,然后呢,同样的我们这个OID的这个主键生成,我们是用使用雪花算法,因为如果是我们使用分库分表的情况下,我们肯定就不能用主键自增了,这个一自增那就乱了。
16:07
所以我们现在呢,全部是主件自己来指定我们订单的ID,我们自己生成一个主键以后,它根据你的主件计算给你放到哪个库哪个表好,我们在这儿创建好了,然后接下来还是在我们的下边,下边呢这又是一个T-O的我们订单项的这个分表策略,然后呢,真实节点还是每一个库里边订单项呢都有两张表,然后呢表分表的策略在这儿,那再来打开英line,然后呢,他说沙丁C按照订单ID分表,相当于无论是order表还是order item都是按照订单ID进行分表,这样做的好处就是同一个订单,只要他的这个订单II一样,他买了很多的订单项,只要订单ID一样,他们都会放在to的零和TSO的item。零这张表里边不会出现我们这个订单呢,在我们的这个零表里边,而订单项零表里边也有一表里边里也有,这样一查两张表都得连查我们整个订单的所有订单项,所以很麻烦,所以们现在呢,整个订单跟订单项的这个分表策略是一样的,都按照订单的ID来分,同样的订单项的这个件的生成,我们使用雪花算法,然后呢在这来生成一个唯一主件,然后接下来我们这还有一个叫Bing time,叫绑定表,然后呢,接下来他在这指定了一个叫T-order和T-order item,意思呢,这两张表是一个绑定表,绑定表的好处是这样子的,如果我们说这两张表是绑定贴表,相当于这两边长,两张表呢是有关系的,它再绑定在一起的,你要查这个订单,然后呢,你就会在同样的地方能查到我们的这个订单项,如果不是绑定表,我们想要查订单里边呢。
17:57
所有订单项那会是什么,他就会我们的shay proxy就会找我们所有的库,让所有的库都来给我查一下订单的这个订单项,然后汇总我们返回的这个结果,这样呢是非常没必要的,而我们现在只要说他们两个是绑定表了,因为这个分表规则都一样,这两个呢全在同一个库里边,所以它就不用跨库去来做一个我们称为跨库周围跨库的连查了。
18:24
我们就在这一张库里边,这一个库里边,因为它两个是绑定表,所以他两个只要订单的所有订单项肯定跟他都待在一个库,就在这个库来进行查询,那就不用做这个D卡R基就很快好我们现在声明了这两个表是绑定表,然后呢在这又声明我们叫数据库的这个策略,这个策略呢,首先我们之前声明了这个分表的策略,我们按照订单ID分表的,然后我们还要声明一个分库的策略,分库的这个策略呢,它是按照用户ID来进行分库的,相当于只要是同一个订单,这个订单是哪个用户下的,我们知道以呢,我们按照用户ID进行分库,我们有两个库,假设呢,按照用户ID,北京的来北京库,上海的来上海库,所有上海的全部是我们上海的用户,北京库的是北京的用户,那这样呢,我们按照用户ID进行分库,但即使这样分库以后,北京库里面的订单也很多,我们再按照订单的。
19:24
的ID进行分表,然后呢,比如余零的在零表,余积的在一表,所以我们在这现当于指定了前边tables里边是分表策略,下边呢默认指定了一个分库策略,好这一块呢,指定好了以后,下来默认的分表策略我们就可以指定为档了,因为我们前边分表策略我们都已经写好了,我们就不用写默认的分表策略了,如果前边我们这个分表策略没写好,们可以在默认的里边一写,现在大家都用这个分表策略,而现在呢,分表的条件是不一样的,诶其实我们现在这个事例分表条件是一样的,我们可以也像以前一样,把这一块呢,直接拉过来,我们来写到这,来写成这个分表策略,而我们这个分库策略呢也是一样的,所以我们可以统一写在这儿,当然分库策略每一个呢,也可以写在它自己里边,比如就像这个样子,我们再他自己里边,前边呢是分表,我们再来加一个分库策略,然后呢,下边这块写的是什么,我们就把这块呢复制过来。
20:24
都用什么,每一个表里边都来定义它的分库策略,好我们现在呢就不定义了,好我们现在把这一块呢,都写好以后,我们分库分表的这个策略我们就准备好了,那分库分表的策略准备好以后,我们还可以配置一个读写分离。我们还是把这个关掉,我们再来配置一个读写分离,我把它关掉,读写分离呢,还是来到我们的这一块来进行配置,有一个叫master slave,好,我们的这个主从复制,然后这个读写分离呢,我们还是打开我们配MY的这一块,前面呢,还是我们前面的这个数据库一个一个打开我们的相当于沙丁proy里边它自己的这个数据库名叫什么?那我们现在分库,分表,读写分离,我们其实都是一个库,所以我们把这个名呢,整个逻辑库的这个名我们都来写成一样,都是沙丁DB,我们现在呢,相当于都是对这个库来做操作,然后呢,我们这个库好,这个库呢也要配我们的整个。
21:27
主从复制读写分离的规则,当然主从复制得我们自己配,我们山顶proxy,这么一配以后他能帮我们来做读写分离,好,然后呢,接下来我们data source配两个数据源,第一个是master,相当于主数据源连接地址,把这一块呢我们都来打开。我们来加上主数据源,那主数据源那我们现在就有一个这个叫DEMODSDEMODS我们现在是DS0这个库,这个库呢,它的主数据源在这儿,我们是3307这一块呢,我们都来改掉。
22:04
好,192.168.56.103307,好,这是我们的第一个主数据源,然后呢,这个主数据源,还有一个它的从数据源,好我们把这个呢打开。那这个从数据源呢,我们以前配了一个主从,从呢在331起,所以我们在这儿配上一个从,它是3317,那就192.16 8.56.10,我们现在呢是冒号3317,英文冒号3317,好然后呢,我们这个从数据源我们还是DEMODS,咱们这个零,因为主从同步呢,从数据源的这个名字,库的名字跟它是一模一样的,好,我们相当于配了第一个库的主从,但我们现在有两个库的主从,所以我们接下来可以把上面的这一段代码的复制,我们再来做上一份,我们现在就叫MASTER0。
23:06
零的这个DS和我们这个slave ds0好我把这一块呢复制过来,然后我们再来粘贴一份,然后MASTER1的这个数据源,那相当相当于我们这个DSE库,它呢也有一个这个数据源,然后呢,他这个数据源我们就叫DS1,好我们现在这个是DS1库的这个数据源,其实呢,我如果我们是配的两种两从每一个都是一个节点运行容器的话,我们现在其实就是有四个库,那我们现在呢。其实两个主都在一个库里边,那我们在这配了也没啥问题啊,DS0DS1,然后呢,DS0的是我们的s silver的DS0 DS1的是s silver的DS1,然后接下来四个数据源我们配好以后,我们同样也要加上它的这个访问密码,Root,然后接下来这一块呢,也叫root,然后这一块也叫root,下边也是root,全是我们的访问密码,好,那这一块都准备好了以后在下边,然后呢,我们在这配置我们数据源的这个主存规则,首先name,然后呢,我们把这一块全部都打开。
24:18
首先name第一个name我们叫MSDS,相当于我们数据源一,好我们在这配置数据源的这个一,然后呢,它的这个规则数据源的名字我们可以复制过来,现在master ds0,然后呢,它这个数据源的从数据源我们就叫slave ds0,我们看到这其实是一个数组,如果我们来写了多个,那就是相当于它有多个从啊,这是我们配了第一个,如果我们想要配置多个怎么办?是把这个name复制多份,还是master slave肉复制多份,我们可以来参照这个官方文档,我们如果来配置我们的这个读写分离,读写分离呢,在前边我们现在呢,读写分离第一个好数据源在这有,我们看我们完整的读写分离的这一块测试,那下边我们看到master slave room,每一个读写分离呢,得起一个这个读写分离的名字,这个名字下边再来配置我们读写分离的策略,好,现在呢,就是这个样子。
25:19
原来呢叫name这个MSDS,现在我们把这个name可以来去掉,然后呢,我们就来配置它的这个读写分离,好第一个的读写分离,它的master呢是这个,然后呢,Slave是这个,然后slave里边有这么多,然后呢,配好了以后,我们还可以指定它的负载均衡策略,比如我们是一个轮询的方式的这个负载均衡,那就相当于。第一次查询呢,在第一个库,第二次查询就跑到我们第二第二个这个重节点了,好,这是我们说的第一个配置,然后呢,第二个配置我们也可以来加上MS-DS2好,我们把这个呢就叫DS1,因为我们现在有两个主,所以我们在这的配置就应该是这样,好我们把这一块的配置呢全部复制过来,然后呢,由于我们这两个主,所以我们现在呢,第二个主是master,我们的一这个DS好,MASTER1这个DS我们现在有两个库,然后呢,它的这个从数据源是slave ds1好,所以我们在这配好了,这个读写分离以后,只要是写的请求,我们全部会呢交给这些master库读呢,我们就会从这来进行读取,所以我们只有把这一块全部配完以后,我们的这个沙丁proxy就能。
26:39
正常工作了,好,我们全部配好以后呢,我们现在来启动测试一下,我们来启动我们的这个沙丁proxy,好们在这直接启动,我们现在在Windows下直接双击start up就行了,把这个pett来双击一下们来要保证启动呢没有报错,诶我们这个报错呢,他说不能放到property MSDS SE,所以我们这一块的配置就是出现了问题,这一块的配置呢,我们来到master slave里边,然后呢,我们这一块配置自己起了一个叫MSDSSE,说明呢它这一块是没法用的,那么就还是回归到它的默认配置,把这个呢复制过来CTRLC,然后如果我们真要配的话,我们写上两个配置文件那就行了,好,我们把这个呢直接粘贴过来,好,我们现在呢name就叫MSDS1,然后呢DS,然后呢,它要从的这个数据库,我们给它配上,然后呢,这是MASTER0,它从的在这,然后呢,它的从事s slave ds0。
27:40
好,然后呢,如果我们还有一个这个主从配置,我们再来复制一个配置文件,反正所有的这个配置文件它都会加载,我们就叫master slave2。好杠二,我们现在呢,第二个的这个主存方式,把第二个的主从呢,我们同样再来打开,然后第二个的主存呢,还是这一块的配置,我们原来呢是这个零,两个零呢,我们配好了,现在我把这两个零去掉,然后这个数据源的两个一,然后这两个一呢,我们在这儿给它配上好它slave呢就是它,然后呢,我们就叫MSBS杠一。
28:19
好,现在我们这一块的储存呢也配好了,然后呢,接下来我把这一块关掉,我来重新启动我们的STEM proxy。走。那这一块提示呢,我们这个商品TB是必须唯一的,在我们所有的这个风控分表啊,我们这个读写分离的这个配置里边,好,我们现在呢就来让它保证唯一,这是我们的第一个我们的读写分离杀定DB,好我们就叫杠一,然后呢,我们现在第一个呢是零的,我们可以把两个一的给它删掉,好两个一的们来给它删掉,然后呢,我们来到第二个里边,来到第二个里边,然后呢们沙定的这个proxy,我们现在呢就叫二沙DDB杠二,好然后呢,我们这一块呢,读写分离我们又配置好了,那配置好以后呢,我们把这一块关掉,然后我们再来重新启动,我们把这个退出,我们来重新来进我们的这个B目录来启动。
29:21
它这一块提示no class DeFine found errorrrow,相当于没有找到这个类定义说这个circleql pass,我们这个circleq解析器叫circleq解析器的这个引擎工厂没有找到,还说那么这个类呢,没找到,那就是他真找不到这个类,一般性呢,那都是它的这个软件出了问题,那其实可以来看一下,他这个好像还是个半成品,我们来点进来,然后呢,这一块的软件,我们能看到好多Li巴里边的这个炸包,然后呢,再往下翻,有些炸包呢,这个名都没起完,然后它没有叫炸,然后后边的这个也没有叫炸,然后呢,包括我们的这个circle passer,那就应该在这儿,诶circle pass的这个引擎,它的后缀名不是炸,但是我们来打开,我们用随便的一个压缩软件打开,我们看这个里边有没有他要用的类,Org阿帕奇,我们这个S帕A,我们来org阿帕奇啊,沙丁瑟菲尔S帕诶确实有我们这个引擎工厂有这个类没问题,所以其实呢,是它的这一块我们也不知道是传输期间丢失我们。
30:21
这个字节的信息还是它本身打包没有打包好,那么这个炸包呢,没有全部的后缀名没有准备就绪,所以大家应该做的事情就是接下来把这个里边所有的其他,嗯,不是这个点炸的这个文件全部呢改成点炸,那接下来呢,我就先来全部一改,这一块的视频我们就不录了,我就直接改了,那前面我已经将所有的这个炸包后缀名呢修改正确,那接下来我们再来启动我们的这个杀丁pro,我们看一下现在启动有没有什么报错,好,现在我们这个数据源启动了,那他说啊,No,你不知道这个数据库DEMODS1,然后呢,前面也是一样,他说这个DEMODS1不知道,相当于他就不能为这个DEMODS一来创建数据源之类的,那其实就是因为我们现在呢,做的是分库分表,那提前自己把这个库,把这个表呢,都得在这儿放好,然后他呢才能帮你按照你的逻辑算法给你分库分表的放到里边,那库的创建呢,他不做,所以我们现在就先来。
31:21
做我们的整个把这些库我们创出来,但前提是我们现在呢还做了读写分离,有这个配置,咱们让它主从同步的时候,把这个库我们相当于现在准备了两个库,DEMODS0DEMODS1都呢让它同步起来,好,那现在呢,先来修改一下我们这一块的主存同步来do。我们看一下现在正在运行的my master和连一,那先把这两个呢来停掉一下,我们把它配置文件稍微修改MYS的这个master和MY的这个SILVER01,把这两个呢都停掉,然后来到我们的master里边来改一下配置,让他呢多添上我们这两个库,我们现在要进行给他修改了同步了。
32:05
好,我们来CD到,CD到呢,我们的这个my data my circle master里边,我们来到它的config文件夹里边,然后我们来修改一下my config,这个myconf f里边呢,我们现在来加上两个要同步的库,以前呢,这两个还不够,我们把这两行呢,我来多复制上两行复制,然后我们来使用I,我们来进入插入模式,好,现在我们来添上我们新的两行数据粘贴,然后我们现在要同步的是两个库,已经分了两个库,那就是DEMODS0,这是第一个库,然后呢,接下来第二个DEMOD1。De SE,好,第二个库,然后我们来WQ退出保存,同样的我们来到我们的silver里边,CD到我们的my data my circle,我们的slave conflictf里边,来也修改一下它的这个my conflictf,然后呢,它要同步人的也是两个库,把这两个库呢,我们就来加上。
33:04
诶,我们先把这个删掉好,那现在再来复制上两条记录,我们复制,然后呢,来粘贴过来。那这一块粘贴呢,出错了,我们没进入这个I模式,在这进行粘贴,好我们把这一块鼓励ma,那这一块呢,我们来删掉,我们现在来进入I模式们来重新粘贴,好我现在再来点一个粘贴,那么现在呢,粘贴了两个库,我们来修改一下,第一个呢,是我们的DEMODS0 DEMODS0,然后第二个是我们的DEMODSSEDEMO,然后DSSE,好,然后我们来退出并保存,我们来确保这一块的所有文件内容都应该是正确的,好,没问题,好,我们来WQ退出并保存,来最好看一下看my con,好这一块呢,所有的配置都正确,没任何问题。那接下来我们就来同时来启动我们的这个my circle的这个master和它circle的这个slave,好,现在这两个呢,启动起来,我们把我们要用的库呢,就创建好来到我们这个master里边,我先来刷新。这是我们原来。
34:13
同布的这个鼓励ma里边的数据,然后现在呢,我们再来创建一个库,来创建一个第一个叫DEMODES0库,然后我们来指定字符集UTF8,好,我们来创第一个库,然后呢,我们再来创建第二个库,我们叫DEMO。好DEMO,我们的这个DS1库,然后呢,这两个库我们都加了这个同步策略啊,我们在这来创建出来。我们来看我们的silver里边我来进行刷新,好DEMODS0DS1那就都有了,那有了以后我们再来启动我们的这个沙丁proxy,我们来看一下我们现在的这个效果start。然后这一块呢,提示我们这个数字这个格式化异常,说我们这个3317相当于我们这个slave这个D1这个端口号呢,它没有给我们解析正正确,我们看前边就是这个3317,那既然是我们的这个slave这个数据源,我们就来到我们数据源的这一块配置,你看一下master slave来看一个3317,我们哪一块的3317有没有出问题,诶这一块我们来多写了一个冒号,把这个去掉,然后我们来看下边的好,这一块没问题了,我们再来看我们的这个SLAVE2。
35:29
看是不是也多写了一个冒号啊,在这确实多写了一个冒号,然后呢,我们把它去掉好,这一块都准备好了以后,然后我们再来启动我们的沙丁proxy走。好,我们现在看到们整个这一块呢,是启动成功的,那么这个sh proxy那就启动起来了,那以后我们的应用程序想要增删改查怎么办?我们不应该连下我们的数据库,而连下我们的shading proxy,那这个怎么连呢?我们在这来使用circle yo来做一个测试,好,我来添一个这个新连接,这个新连接我们新建一个这个就叫沙丁我们的这个proxy。
36:13
我来联系他,我来点一个确定,然后呢,我们的这个主机地址就是local house,因为我就装在我的这个Windows本机了,然后它的这个端口,我们shutding proxy自己的端口是多少呢?我们这一块呢,没有提示,没有提示我们先关掉,然后呢来看文档,文档呢这一块我们启动服务的时候,我们这个start sh,所以我们自己呢,其实可以配一个端口的,所以们在这我们重新来启动一下我们的这个杀丁proxy,那就是这个bet文件,那相当于给他的这个里边跟SS值都一样,我们可以传一个我们自己指定的这个端口号,好,那现在来重新启动。我们CMD先进来,我们使用start BAT们比如呢叫3388,我们是这个端口走。
37:04
好,现在呢,我们这个杀Ding proxy将会在我们这个3388这个端口呢启动起来,然后我们接下来使用我们的这个程序,联想我们这个本机的3388,然后呢,我们这个密码是多少密码其实是我们之前,之前呢,我们给shding proxy这个服务器,我们配了两个用户能用,一个呢是root,密码是root,一个叫沙D,密码叫沙定,而沙D呢,只能看到这个沙DDB看到这个玩意儿,咱们现在呢,就来使用root root,我们来做一个连接,Root root来点个测试连接。那么现在呢,在这测试这个连接呢,报错是这个空指针的问题,来看控制台,控制台这一块呢,还是我们这一块打印我们这个空指针问题,这个控制针问题呢,现在是我们这个circleq yo的这个事情,我们现在呢,不用circleq yo连接了,来可以使用别的这个连接工具,比如我是来使用NAV cat,好,那现在来使用它来连接我们的shading proxy来创建上一个新连接,这个连接的名我们就叫shading proxy,我们看一下它能不能连上,而本机沙丁proxy呢,是3388端口,我们自定义的,那我们使用root用户来测试一下,点一个连接测试发现呢,这是连接成功的,来点击确定好,现在呢,我们使用na k,我们就连上了Sha proxy,然后在这呢,我们看到了三个库,一个叫Sha DB,一个叫SHDB1 SHDB2,这三个库呢,其实是我们那块配置文件里边,我们写的S干ma那块的名字,好,我们可以来确认一下我们的这个配置文件。
38:40
我们之前在这来编写每一个配置的时候,特别我们在这儿分库分表的时候,我们给它起了一个总库名叫沙顶DB,所以我们以后所有的应用程序连上应该是我们的shading proxy的沙顶DB来做所有的增删改查操作,所以连上这个DB以后呢,那接下来我们就可以创建表,那现在呢,默认这个里边都没有任何表,我们刚才只是创建了一些库,这个表里边呢什么都没有,那么现在呢,相当于对order来进行分表的和order item,所以我来新建两张表,那么这个新建表呢,我不用这种方式,我点一个查询新建查询好,那么先来写第一个创建表的这个语句,打开我们的这个文档,来到我们这个创建表,我们先来创建第一个叫订单表,CTRLCCTRLV,好,我来点一个运行这订单表呢,这个就创建出来了,我们在这儿来确认一下。
39:34
看到这个表里边,我们来点一个刷新,这个表里边呢,我们确定创了一个订单表,然后呢,我们再来创建一个订单项的表,我们来到我们的这个,我们来复制一下订单项CTRLC,好,我们在这再来创建一个订单项,来选中点一个运行好订单项呢,这个也创建完,我们在这一块我们来刷新一下,这一块呢,接下来有一个订单项的表,诶我们发现呢,这两张表它的名字叫订单表,订单项表,但其实呢,映射到我们真正的物理数据库里边,我来刷新一下,来刷新在这个DS0里边呢,会有t order0order1 order item0order item1,这些呢,都是人家帮我们proxy帮我们来创建好的,好,那这一块创建好以后呢,我们假设来插入一条数据来做一个测试,来slave此时呢,早都已经同步好了,我们来刷新一下,在DS0里边同步了一些数据,DS1里边也同步了一些数据,但是有了shading proxy后台呢,是屏蔽了这些表的零一。
40:34
写的,我们所有的操作都是联想shding proxy,那就跟连一个数据库一样,来插入一条记录,比如们来插入记录的时候呢,我们来到这个order表里边,我们这个order表里边来查记录,比如我们现在在这来创建一个SQ语句,那一定大家要自己写SQL语句来插入,别在这来改数据,好,我现在来写一个insert insert into into,我们哪张表呢?我们现在是T-order表里边来插数据,插哪些数据?因为我们现在所有的主键都是由雪花算法给我们生成的唯一ID,所以我们现在这个order ID不用传,现在就来插user ID和status,我们现在就来插入第一个user ID,然后呢,还有status,我们给他来附一个值values,好,比如我们现在呢,User ID,默认呢,这是一号用户这个订单的状态呢,是一我们还插了一个记录,然后呢,其他的我们都是让他自己生成了,我们多插上几条记录好,然后呢,这是。
41:34
第一条,然后呢,接下来用户ID是二的,还有用户ID是三的,然后我们来准备上三条记录,那现在来先来查第一条记录,来点一个运行已选择的,好,现在我们第一条记录插入完成,我们来看order这张表里边的数据,来刷新一下,好,第一条记录呢,已经有数据了,这是我们雪花算法生成的ID,没问题,然后user ID status,然后接下来我们再来运行第二条记录。
42:01
我们还是在这来运行,已选择的走第二条记录,我们在我们的order表里边,我们再来确认一下刷新,然后呢又有一条记录,然后我们再来第三条记录,好把这个CTRLC我们复制过来,第三条记录走,然后我们现在来看order表,Order表呢,现在三条记录,在我们沙丁proxy看来,我们所有的订单表都在这个T里边,但实际呢,它分库分表连到我们真实的数据库,我们来看一下来真实的数据库,首先来我们的这个master master呢我们最好来刷新一下,我们两个数据源呢都刷新一下,因为我们现在是按照用户ID分库,然后呢按照订单进行分表的,所们先来看第一个库,第一个库的订单表里边有没有数据,诶,这是用户ID为二的,这个订单在第一个库里边,然后呢,这个一表里边也没有啥数据,然后呢,看第二个库,第二个库我们这个用户ID。我们点进来第二,第二个库呢,这个订单零表里边没数据,但是在一表里边有,一表里边有的原因是它对二求余,它都是余一,所以在这个里边,所们现在看到只要是在第二个库里边的用户ID都是奇数,在第一个库里的用户ID都是偶数,然后表又怎么分,就拿它的这些我们来对二求余,如果是零在这个里边,如果是一,那就在这个里边,咱们现在整个分工分表的效果是没有任何问题的,包括我们想要删除我们所有的增删改、查测试,我们一定要在这自己来写circle,因为我们整个山Ding proxy,它是来改写circle的,我们客户端发的一些命令,它加载了一些其他东西,我们可能呢就不能整个来改写了,那我们以后所有的应用程序,我们的这个Java代码,微服务们全部可以连下我们的Ding proxy来完成我们整个的分库分表功能。
我来说两句