目录
前言
Linux+MySQL+MyCat实现读写分离,主从同步的解决方案
一、Linux下MySQL数据库服务的安装与部署
二、下载Linux MyCat
三、上传Linux服务器,并解压
四、MyCat主要的配置文件概述
五、创建据库实例
六、配置逻辑库
七、配置数据库节点
八、配置分库分表的规则
九、测试分库分表八步走(天龙八步)
前言
在项目建设过程中,根据项目业务需求考虑到数据量大、复杂,且需要承受巨大的访问量(在项目中使用关系型数据库RDBMS,MySQL)。一般情况下,如果采用传统的Master-Slave复制模式,此时的数据库服务器的压力承载量受限于Master数据库服务和其负载量。
所以,采用了分库分表方法,将其服务能力和负载量进行横向扩展,并且选择了 PartitionByPattern分表的策略(注:在进行分表时,根据自身业务需求选择合适的分表策略,将会大大提高分表的效果,当然,如果分表策略选择不当,可能会导致分表后的出现冷热数据的情况,达不到预期的效果,这个就需要Team-Leader来衡量了)。本文主要实现,在Linux系统中实现MySQL的分库分表,通过MyCat数据库中间件来实现!
前面对MyCat进行了详细的全方位的介绍,这儿就不再做详细的介绍了,可以点击下列连接翻阅查看,如下:
《开源分布式数据库中间件MyCat架构简介(一)》
《开源分布式数据库中间件MyCat架构简介(二)》
Linux+MySQL+MyCat实现读写分离,主从同步的解决方案
参考博主的另一篇文章进行《基于MySQL Yum存储库在Linux-7.2上安装MySQL-5.7.21数据库服务》
CSDN 下载:【Linux MyCat+文档下载】
官网下载:【MyCat官网下载】
Linux下输入指令:tar -zxvf
并移动到本地目录:mv mycat /usr/local/
[root@localhost software]# tar -zxvf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz
[root@localhost software]# mv mycat /usr/local/
MyCat配置文件:/usr/local/mycat/conf
如下图:
说明:
配置文件 | 说明 |
---|---|
schema.xml |
Schema.xml作为MyCat中重要的配置文件之一,管理着MyCat的逻辑库、表、分片规则、DataNode以及DataSource。弄懂这些配置,是正确使用MyCat的前提。这里就一层层对该文件进行解析。 |
server.xml |
server.xml几乎保存了所有mycat需要的系统配置信息。其在代码内直接的映射类为SystemConfig类。 |
rule.xml |
rule.xml里面就定义了我们对表进行拆分所涉及到的规则定义。我们可以灵活的对表使用不同的分片算法,或者对表使用相同的算法但具体的参数不同。这个文件里面主要有tableRule和function这两个标签。 |
描述:
将需要进行分片的表分别存储到三个数据节点上,这儿为了便于进行测试,准备三个MySQL数据库实例即可,这儿就创建几个测试库。
* 注意:如果是Linux版本的MySQL服务器,在配置MyCat分片之前,还需要配置MySQL的大小写,否则为存在找不到表的问题,在MySQL的配置文件 “vi /etc/my.cnf”中新增一行配置 “lower_case_table_names = 1”,如下:
在本文章中,主要未来演示分库分表的效果,通过创建三个数据库实例来实现(三个实例中均没有数据表),在实际的项目部署过程中,一个数据库实例对应了一个实际的MySQL数据库服务。创建好后,如下图:
在 server.xml配置文件的末尾处配置一个MyCat的逻辑库名称,如果一个用户需要访问数据库中的数据,则直接通过该名称即可实现访问,如下图:
具体内容如下:
123456
b2c_aiyou
b2c_aiyou
user
b2c_aiyou
true
b2c_aiyou
在 schema.xml配置文件配置实际的数据库节点,数据库连接地址,用户名密码等。如下图:
具体内容如下:
select user()
在 rule.xml配置文件中,配置相关规则,如下图:
具体内容如下:
id
b2c_aiyou_item_id
定义的规则函数内容如下:
3072
b2c_aiyou_item_id.txt
如果需要配置其它规则,可以在源码包中找到,如下图:
下载地址:【Mycat 2-1.06 源码包CSDN下载】
在当前目录下,也就是 MyCat的 conf目录下,新增 b2c_aiyou_item_id.txt规则定义文件,并且授权 “ chmod 777 b2c_aiyou_item_id.txt” 的最高权限,添加如下内容:
0-1023=0
1024-2047=1
2048-3072=2
第一步,启动MyCat Server,进入 MyCat的bin目录下,输入指令 “ ./mycat start ”
当然,还有其它:
./mycat { console | start | stop | restart | status | dump }
第二步,连接到 MyCat Server,需要注意的是,MyCat的默认端口为8066,连通后如下图:
连接成功后,是没有任何数据表的,如下图:
第二部,在MyCat服务上,创建一个测试的数据表
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for tb_item
-- ----------------------------
DROP TABLE IF EXISTS `tb_item`;
CREATE TABLE `tb_item` (
`ID` int(11) NOT NULL,
`NAME` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`ID`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
第三步,向MyCat上的tb_item表插入数据(确保每个库中的tb_item表中一条数据,根据上面配置的rule规则范围来添加)
在Linux服务器上,直接通过指令连接到MyCat服务器,输入如下指令:
[root@localhost conf]# mysql -uroot -p123456 -h192.168.159.128 -P8066 -Db2c_aiyou
连接到MyCat服务器后,可以通过指令 “ show databases; ” 看到,在上面配置的schema.name 为 b2c_aiyou,如下图:
当然如果要查看方才创建的tb_item表,则可以通过指令 “ show tables; ” 查看咯,
第四步,向MyCat服务中的tb_item表插入三条数据,id的定义,可以根据配置rule.xml中的id分配规则,确保三个库中都有一条数据,方便更直观的查看MyCat分表是否成功咯,
insert into tb_item(id,name) values(1001,'huazai');
insert into tb_item(id,name) values(1598,'wangwu');
insert into tb_item(id,name) values(98291,'zhangsan');
第五步,查看MyCat服务上的tb_item表中数据是否插入成功,数据查询指令 “ select * from tb_item; ” ,如下图:
第六步,查看MySQL服务上的每个数据库中tb_item表中的数据,即b2c_aiyou_01~03.tb_item,
通过如下指令连接到MySQL数据库服务
[root@localhost conf]# mysql -uroot -pHuazai12345! -h192.168.159.128 -P3306
查看测试的数据库实例,如下图:
查看每个库下tb_item表中的数据,通过指令 “ select * from b2c_aiyou_01~03.tb_item; ”,如下图:
第七步,小技巧-》更快捷的查询方法,不用像查询输入查询指令那样,这么麻烦,通过Navicat工具来查询,一条查询语句,然后在数据库栏的下拉列表中选择相应的数据库,即可查询了,如下图:
第八步,收尾管理
庆祝自己,通过不懈的努力,终于一步一的,在Linux下通过MyCat数据库中间件实现了分库分表了,给自己点掌声!!!
参考文献:
MyCat官网:【MyCat官方网站】
GitHub:【MyCATApache】
Issues:【Mycat-Server-issues】
MyCat指南:【MyCat指南CSDN】
好了,关于 Linux+MySQL+MyCat实现分库分表,通过MyCat数据库中间件实现分库分表配置实战 就写到这儿了,如果还有什么疑问或遇到什么问题欢迎扫码提问,也可以给我留言哦,我会一一详细的解答的。
歇后语:“ 共同学习,共同进步 ”,也希望大家多多关注CSND的IT社区。
作 者: | 华 仔 |
联系作者: | [email protected] |
来 源: | CSDN (Chinese Software Developer Network) |
原 文: | https://blog.csdn.net/Hello_World_QWP/article/details/105662439 |
版权声明: | 本文为博主原创文章,请在转载时务必注明博文出处! |