Mysql集群搭建-mycat

一 MyCat

1.1MyCat介绍

什么是MyCat?

简单的说,MyCat就是:

一个彻底开源的,面向企业应用开发的“大数据库集群”

支持事务、ACID、可以替代Mysql的加强版数据库

一个可以视为“Mysql”集群的企业级数据库,用来替代昂贵的Oracle集群

一个融合内存缓存技术、Nosql技术、HDFS大数据的新型SQL Server

结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品

一个新颖的数据库中间件产品

MyCat的目标是:低成本的将现有的单机数据库和应用平滑迁移到“云”端,解决数据存储和业务规模迅速增长情况下的数据瓶颈问题。

 

MyCat的关键特性

支持 SQL 92标准

支持Mysql集群,可以作为Proxy使用

支持JDBC连接ORACLE、DB2、SQL Server,将其模拟为MySQL  Server使用

支持galera for mysql集群,percona-cluster或者mariadb cluster,提供高可用性数据分片集群

自动故障切换,高可用性支持读写分离,支持Mysql双主多从,以及一主多从的模式

支持全局表,数据自动分片到多个节点,用于高效表关联查询

支持独有的基于E-R 关系的分片策略,实现了高效的表关联查询

多平台支持,部署和实施简单

 

MyCat架构

如图所示:MyCat使用Mysql的通讯协议模拟成了一个Mysql服务器,并建立了完整的Schema(数据库)、Table (数据表)、User(用户)的逻辑模型,并将这套逻辑模型映射到后端的存储节点DataNode(MySQL Instance)上的真实物理库中,这样一来,所有能使用Mysql的客户端以及编程语言都能将MyCat当成是Mysql Server来使用,不必开发新的客户端协议。

MyCat对多数据库的支持

 

2.2下载安装MyCat

官方网站:

http://www.MyCat.org.cn/   ---》   http://www.mycat.io/

github地址

https://github.com/MyCatApache

 

环境准备

数据库准备,准备三个MySQL数据库。

在Linux上安装一个MySQL数据库进行模拟,在设置三个数据库,作为集群中的库进行使用。

Linux安装MySQL参考文档:

 

 

集群分片规则

 

MyCat安装

  1. 上传MyCat

 

移动并解压MyCat

[root@itcast-01 ~]# mv MyCat-server-1.4-RELEASE-20150901112004-linux.tar.gz /usr/local/

[root@itcast-01 ~]# cd /usr/local/

[root@itcast-01 local]# tar -zxf MyCat-server-1.4-RELEASE-20150901112004-linux.tar.gz

 

配置MyCat

[root@itcast-01 local]# cd MyCat/

[root@itcast-01 MyCat]# cd conf/

 

配置server.xml

[root@itcast-01 conf]# vim server.xml

 

配置schema.xml

[root@itcast-01 conf]# vim schema.xml

 

配置rule.xml

[root@itcast-01 conf]# vim rule.xml

 

查找分片算法

配置的分片规则算法,可以参考以下源码:

 

下面是压缩包中分片规则的算法,我们使用的是求余的方式:

org.opencloudb.route.function.PartitionByPattern

 

配置分片算法

根据分配片的java代码,继续在rule.xml配置分片算法

按下图方式配置分片规则算法:

 

添加并编辑配置文件

[root@itcast-01 conf]# vim auto-id.txt

0-127=0

128-255=1

255-511=2

 

启动MyCat

[root@itcast-01 conf]# cd /usr/local/MyCat/bin/

[root@itcast-01 bin]# ./MyCat start

 

MyCat测试

连接MyCat:

连接MyCat和链接MySQL是一样的,区别是,MyCat的端口号是8066

MyCat的账号密码在server.xml中进行配置

 

测试MyCat:

在MyCat中创建数据库表,发现使用的三个库都创建了表

在MyCat中插入数据,发现按照规则给三个数据库分别插入了数据

 

 

二 问题及其解决办法

 io.mycat.config.util.ConfigException: SelfCheck###  schema TESTDB refered by user user is not exist!
在配置server.xml时针对不同数据库设置了账号和密码,当我们把achema.xml中原始配置信息修改后,记得把server.xml中的原始的用户信息删除或注释,否则会报错,说该用户对应的数据库不存在

Caused by: io.mycat.config.util.ConfigException: org.xml.sax.SAXParseException; lineNumber: 93; columnNumber: 20; 元素类型为 "function" 的内容必须匹配 "(property)*"。

出现这个问题的原因是因为在修改配置文件中不小心输入了一些非法字符,比如多加了>

针对mycat的使用,我们需要先在集群的数据中每个都创建对应的表,然后再schema.xml中配置表的信息,然后才能使用客户端连接mycat操作对应的数据库表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值