1.什么是mycat
Mycat 是一款开源数据库中间件,由阿里巴巴前开源产品 Cobar 发展而来。mycat 的核心功能是将数据库拆分成表和库,可以将一个大表水平拆分成 N 个小表,将数据库分成 N 个 Shard,分别存储在 MySQL 服务器或其他数据库中,还可以实现读写分离、容灾备份等。
2.安装mycat并实现mysql分库分表
1、在两台或多台Linux服务器上安装MySQL并启动(具体步骤省略,建议使用.5以上版本,启动后务必设置远程登录权限)
2.mycat的安装与启动
下载mycat安装包,下载地址:
第一步:将下载的安装包上传到服务器
第二步:使用命令tar -zxvf Mycat--1.4--238-linux.tar.gz mycat解压压缩包
第三步:进入mycat目录的bin目录,启动mycat
mycat默认端口为:8066
3.mycat分片配置
(1)配置schma.xml
schma.xmls是mycat中重要的配置之一,管理mycat的逻辑库,逻辑表以及对应的规则等。
tags用于定义mycat实例的逻辑库,Table标签定义mycat中的逻辑表,rule用于指定规则,tag定义mycat中的数据节点,即数据分片,tag定义mycat具体的数据库实例,读写分离配置以及心跳语句。
在已经安装mysql的两台服务器上创建数据库db1、db2
修改.xml如下:
="0"="mysql"=""="1"="100">
用户()
=“mysql 密码”>
="0"="mysql"=""="1"="100">
用户()
=“mysql 密码”>
(2).xml
.xml保存了mycat所需的几乎所有系统配置信息,最常用的就是配置用户名、密码、权限等。里面要添加UTF-8字符集设置,否则存储中文时会出现问号。
utf8
修改用户配置,可以修改用户名,密码等(注意属性值要和配置文件一致)
测试
4.mycat分片测试
(1)使用工具连接mycat
进入mycat,执行如下语句,创建表:
桌子 (
id(20)不为空,
标题(100)NOT NULL,
密钥(ID)
)= =utf8
插入一些数据:
INTO (ID,TITLE) (1,'数据1');
进入(ID,标题)(2,'数据2');
INTO (ID,TITLE) (3,'data3');
INTO (ID,TITLE) (4,'data4);
注意:若出现ERROR 3009 (HY000): Java.lang.tion: :0错误,请按照以下方法解决:
将mysql中mysql.user表中root用户的host改为%后,重启mysql,mycat连接上之后就可以操作该表了。
我们会发现数据被写入到了第一个节点,那么如何才能将数据写入到第二个节点呢? 插入如下数据,将其插入到第二个节点中。
进入(ID,标题)(,“”);
进入(ID,标题)(,“”);
因为我们采用的分片规则是每个节点存储500万数据,当ID大于时,会存储在第二个节点上,分片规则在rule.xml文件中配置
在rule.xml中找到
ID
朗隆
接下来,找到 rang-long 的定义
类=“org..route..”>
-长.txt
再次打开-long.txt,可以看到这里配置了数据范围
# 范围起始-结束,数据节点索引
#K=1000,M=10000。
0-500米=0
500M-1000M=1
1000米-1500米=2
上述分片规则适用于主键id为连续数字的表,对于部分主键为字符串而非连续数字的表,上述规则不适用。可以使用一致性哈希将数据均匀划分为若干个分片,这也是在一个文件中配置的,比较简单,这里就不赘述了。
3.数据库读写分离
对于互联互通的应用,数据库的访问量很大,所以需要进行读写分离。通过实现数据库读写分离,当主节点宕机时,仍然可以从从节点查询数据。Mycat可以基于MySQL的主从模式实现读写分离。一个写节点后面跟着多个读节点,在进行增删改操作时,向主节点发起请求,在进行查询操作时,向从节点发起请求。主节点数据发生变化后,基于MySQL的主从复制模式,数据会自动同步到从节点。
配置mycat开启读写分离,也是在.xml中配置,主节点和从节点组成主从读写分离模式,参数决定哪些MySQL服务器参与读SQL的负载均衡,0表示不开启读写分离。
="0"="mysql"="">
用户()
/>
/>
总结:无论是数据库集群、数据库分片、还是读写分离,Mycat 都可以很轻松的使用,如果你的项目也面临高并发、海量数据的压力,不妨尝试一下。
结束语:如果你也是一名技术从业者,如果我的文章对你有帮助的话,请点赞关注,你们的支持是我继续分享文章的动力,谢谢!
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。