开发者学堂课程【数据库中间件ShardingSphere详解:ShardingSphere-Sharding-Proxy(分库配置)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/666/detail/11258
ShardingSphere-Sharding-Proxy(分库配置)
刚才的内容完成了 ShardingProxy 对数据库的分表操作,最终通过 ShardingProxy 看到在 edu_1 里面创建出了 t_order_0 和 t_order_1 两个表。然后下面继续用 ShardingProxy 完成其他配置,主要做连个配置,第一个用 ShardingProxy完成一个分库的一个配置,然后第二个用 ShardingProxy 完成读写分离的操作。
第一个用 ShardingProxy 完成一个分库的操作怎么做?它的配置应该跟刚才写法差不多。
1.创建两个数据库
2.找到 conf 目录,config-sharding.yaml
找到 ShardingProxy 里边 conf 目录,在里边找到一个配置文件 config-sharding.yaml,在这里边来完成相应的修改,然后把它打开进行相应的修改,看在里边配置是一个数据库,就是 ds0,然后里边有两个表 t_order_0 和 t_order_1,然后现在给 t 它改成多个库和多个表的情况,那怎么改?来看一下就是之前把那个原始配置文件已经放到了这个 application.yaml 里边,现在把它就直接复制过去,把之前内容给它替换掉,用它改装的效果,因为这是它这个文件中自带的一种原始的效果,现在演示一下,因为现在要做成这种分库操作,并且里边也要做到分表。
首先创建两个数据库,比如这个数据库已经创建过了,一个叫edu_db_1,一个叫 edu_db_2,这是第一部分先建两个库,第二部就在配置文件中完成相应的配置,现在有两库是配置两个datasources 数据源,第一个看一下表 edu_db_1,把 demo_ds_0 改为 edu_db_1,下一个把 demo_ds_1 改为 edu_db_2,它们用的都是 3306,然后用户名密码都是 root,修改配置两个数据源 demo_ds_0 和 demo_ds_1,然后在下面就创建一个表 t_order,保留一个表,这里边是t_order_${0..1},其实也可以建为 t_order_${1..2},稍微改一下这个规则,在规则位置 t_order_$(user_id % 2+1),之前说过如果能整除零或者零加一就是一,然后放到 order1 里边,然后其它值放到 order2 中,这是里边一种分表和分库的一个策略,看一下在策略中应该都是咱们这些学到的,它在分库的时候根据 user_id 能被二整除,那就是 ds_0,如果不能整除,那就是 ds_1,这是分库策略,由 user_id 决定,如果 ds_0 和 ds_1 都有 t_order_${1..2}这个表,这个表根据 user_id,如果它能被二整除,那就是 ds_1,不能整除,就是 ds_2,这个完成分库分表的这么一个配置。
3.启动 ShardingProxy 服务
接下来测试一下配置效果,按照刚才那个分表过程,启动这个ShardingProxy 服务,然后在里面进行相应的操作,现在就启动一下,看一下现在打开这个文件应该保存了,然后打开 bin 目录下的 start.bat,把这个先启动,里边有一个叫 active,表示现在就启动成功了。
4.打开 cmd 窗口,连接 ShardingProxy 服务
打开 cmd 窗口,连接 ShardingProxy 服务可以当做 mysql 使用,连接之后,然后在里面还是进行一系列操作,创建表和添加记录最终的过程,然后最后进行实现,现在进行连接,打开 cmd 窗口,窗口输入 mysql -3307 -uroot -p,输入密码,连上之后看一下里面有哪些数据库,里面使用 use Sharding_db ,然后使用之后,在里面把这个表做创建,用之前使用的连接方式连上之后,连上之后就创建了一个数据库:
(1) :创建库数据库表,向表添加记录
把 ds0 里面的内容进行复制,创建为一个 order 表,在里边执行下,表创建创建了之后,向表里面给它添加记录,还是刚才那个给它加 11,然后在 cmd 窗口中完成了建表和线下操作,然后之后打开本地的 3306,这里边发现两个数据库中有两个表,一个 t_order_1,一个 t_order_2,包括里边数据都有,刚才加的是奇数,所以它放到这里边,现在把这个就完成了一个创建。
(2)连接本地 3306 的 MySql 数据库服务器
接下来连接本地 3306 的 MySql 数据库服务器,然后这个时候看到这个表已定创建出来了,里边也已经有了刚才加的这个数据,比如包括 order_1 和 order_2,所以这样的话我们就完成了用 ShardingProxy 分库分表的操作,这个就完成了,所以各位把这个配置给他快速做到,这个流程并不复杂,比如说为了明显再试一条记录,把 VALUES<11,1.’init’>改为 VALUES<13,2.’init’>,但是 user_id是偶数,它的数据是到 edu_db_1 里面,然后 13 是奇数,所以它应该在 t_order_2里边的数据。这样完成了分库和分表的操作,效果就做到了,所以把这个过程要特别熟练,能快速的配出来,因为是一个固定的一个流程。
总结:
先创建两个数据库,然后改配置文件,按照我们的规则,两个数据库的数据源,包括你的分库分表规则,最终启动,然后建表,建这个家记录,最终在本地表创建了,数据加进去,就完成了分库分表的过程,这样就完成了 ShardingSphere-Sharding-Proxy(分库配置)。