300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Linux+MySQL+MyCat实现分库分表 通过MyCat数据库中间件实现分库分表配置实战

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

时间:2020-09-28 16:48:38

相关推荐

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-0105164103-linux.tar.gz[root@localhost software]# mv mycat /usr/local/

四、MyCat主要的配置文件概述

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

如下图:

说明:

描述:

将需要进行分片的表分别存储到三个数据节点上,这儿为了便于进行测试,准备三个MySQL数据库实例即可,这儿就创建几个测试库。

* 注意:如果是Linux版本的MySQL服务器,在配置MyCat分片之前,还需要配置MySQL的大小写,否则为存在找不到表的问题,在MySQL的配置文件 “vi /etc/f”中新增一行配置 “lower_case_table_names = 1”,如下:

五、创建据库实例

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

六、配置逻辑库

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

具体内容如下:

<user name="root" defaultAccount="true"><property name="password">123456</property><property name="schemas">b2c_aiyou</property><property name="defaultSchema">b2c_aiyou</property><!--No MyCAT Database selected 错误前会尝试使用该schema作为schema,不设置则为null,报错 --><!-- 表级 DML 权限设置 --><!--<privileges check="false"><schema name="TESTDB" dml="0110" ><table name="tb01" dml="0000"></table><table name="tb02" dml="1111"></table></schema></privileges>--></user><user name="user"><property name="password">user</property><property name="schemas">b2c_aiyou</property><property name="readOnly">true</property><property name="defaultSchema">b2c_aiyou</property></user>

七、配置数据库节点

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

具体内容如下:

<schema name="b2c_aiyou" checkSQLschema="true" sqlMaxLimit="100" randomDataNode="dn1"><!-- auto sharding by id (long) --><!--splitTableNames 启用<table name 属性使用逗号分割配置多个表,即多个表使用这个配置--><table name="tb_item,tb_item_cat,tb_item_desc" dataNode="dn1,dn2,dn3" rule="b2c_auto_id" splitTableNames ="true"/><!-- <table name="oc_call" primaryKey="ID" dataNode="dn1$0-743" rule="latest-month-calldate"/> --></schema><!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"/> --><dataNode name="dn1" dataHost="b2c_aiyou_data_host" database="b2c_aiyou_01" /><dataNode name="dn2" dataHost="b2c_aiyou_data_host" database="b2c_aiyou_02" /><dataNode name="dn3" dataHost="b2c_aiyou_data_host" database="b2c_aiyou_03" /><!--<dataNode name="dn4" dataHost="sequoiadb1" database="SAMPLE" /><dataNode name="jdbc_dn1" dataHost="jdbchost" database="db1" /><dataNode name="jdbc_dn2" dataHost="jdbchost" database="db2" /><dataNode name="jdbc_dn3" dataHost="jdbchost" database="db3" /> --><dataHost name="b2c_aiyou_data_host" maxCon="1000" minCon="10" balance="0"writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"><heartbeat>select user()</heartbeat><!-- can have multi write hosts --><writeHost host="hostM1" url="192.168.159.128:3306" user="root"password="Huazai12345!"></writeHost><!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> --></dataHost>

八、配置分库分表的规则

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

具体内容如下:

<mycat:rule xmlns:mycat="http://io.mycat/"><tableRule name="b2c_auto_id"><rule><columns>id</columns><algorithm>b2c_aiyou_item_id</algorithm></rule></tableRule>

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

<function name="b2c_aiyou_item_id"class="io.mycat.route.function.PartitionByPattern"><property name="patternValue">3072</property><property name="mapFile">b2c_aiyou_item_id.txt</property></function>

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

下载地址:【Mycat 2-1.06 源码包CSDN下载】

在当前目录下,也就是 MyCat的 conf目录下,新增b2c_aiyou_item_id.txt规则定义文件,并且授权 “ chmod 777b2c_aiyou_item_id.txt” 的最高权限,添加如下内容:

0-1023=01024-2047=12048-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社区。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。