Linux+MySQL+MyCat实现分库分表,通过MyCat数据库中间件实现分库分表配置实战

目录

前言

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实现读写分离,主从同步的解决方案

一、Linux下MySQL数据库服务的安装与部署

参考博主的另一篇文章进行《基于MySQL Yum存储库在Linux-7.2上安装MySQL-5.7.21数据库服务》

 

二、下载Linux MyCat

CSDN 下载:【Linux MyCat+文档下载】

官网下载:【MyCat官网下载】

 

三、上传Linux服务器,并解压

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主要的配置文件概述

MyCat配置文件:/usr/local/mycat/conf

如下图:

Linux+MySQL+MyCat实现分库分表,通过MyCat数据库中间件实现分库分表配置实战_第1张图片

说明:

配置文件 说明

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”,如下:

Linux+MySQL+MyCat实现分库分表,通过MyCat数据库中间件实现分库分表配置实战_第2张图片

 

五、创建据库实例

在本文章中,主要未来演示分库分表的效果,通过创建三个数据库实例来实现(三个实例中均没有数据表),在实际的项目部署过程中,一个数据库实例对应了一个实际的MySQL数据库服务。创建好后,如下图:

 

六、配置逻辑库

在 server.xml配置文件的末尾处配置一个MyCat的逻辑库名称,如果一个用户需要访问数据库中的数据,则直接通过该名称即可实现访问,如下图:

Linux+MySQL+MyCat实现分库分表,通过MyCat数据库中间件实现分库分表配置实战_第3张图片

 

具体内容如下:


        
                123456
                b2c_aiyou
                b2c_aiyou
                

                
                
        

        
                user
                b2c_aiyou
                true
                b2c_aiyou
        

 

七、配置数据库节点

在 schema.xml配置文件配置实际的数据库节点,数据库连接地址,用户名密码等。如下图:

Linux+MySQL+MyCat实现分库分表,通过MyCat数据库中间件实现分库分表配置实战_第4张图片

具体内容如下:

        
                
                
                
        
        
        
        
                select user()
                
                
                
                
        
 
  

 

八、配置分库分表的规则

在 rule.xml配置文件中,配置相关规则,如下图:

具体内容如下:


        
                
                        id
                        b2c_aiyou_item_id
                
        

定义的规则函数内容如下:

        
                3072
                b2c_aiyou_item_id.txt
        

 

如果需要配置其它规则,可以在源码包中找到,如下图:

Linux+MySQL+MyCat实现分库分表,通过MyCat数据库中间件实现分库分表配置实战_第5张图片

下载地址:【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,连通后如下图:

Linux+MySQL+MyCat实现分库分表,通过MyCat数据库中间件实现分库分表配置实战_第6张图片

 

连接成功后,是没有任何数据表的,如下图:

Linux+MySQL+MyCat实现分库分表,通过MyCat数据库中间件实现分库分表配置实战_第7张图片


第二部,在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,如下图:

Linux+MySQL+MyCat实现分库分表,通过MyCat数据库中间件实现分库分表配置实战_第8张图片

当然如果要查看方才创建的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; ” ,如下图:

Linux+MySQL+MyCat实现分库分表,通过MyCat数据库中间件实现分库分表配置实战_第9张图片

 

第六步,查看MySQL服务上的每个数据库中tb_item表中的数据,即b2c_aiyou_01~03.tb_item,

通过如下指令连接到MySQL数据库服务

[root@localhost conf]# mysql -uroot -pHuazai12345! -h192.168.159.128 -P3306

查看测试的数据库实例,如下图:

Linux+MySQL+MyCat实现分库分表,通过MyCat数据库中间件实现分库分表配置实战_第10张图片

查看每个库下tb_item表中的数据,通过指令 “ select * from b2c_aiyou_01~03.tb_item; ”,如下图:

Linux+MySQL+MyCat实现分库分表,通过MyCat数据库中间件实现分库分表配置实战_第11张图片

 

第七步,小技巧-》更快捷的查询方法,不用像查询输入查询指令那样,这么麻烦,通过Navicat工具来查询,一条查询语句,然后在数据库栏的下拉列表中选择相应的数据库,即可查询了,如下图:

Linux+MySQL+MyCat实现分库分表,通过MyCat数据库中间件实现分库分表配置实战_第12张图片

 

第八步,收尾管理

庆祝自己,通过不懈的努力,终于一步一的,在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
版权声明: 本文为博主原创文章,请在转载时务必注明博文出处!

你可能感兴趣的:(MySQL)