Windows中使用MyCat实现读写分离

一、关于MyCat

什么是MyCat?

  1. 一个彻底开源的,面向企业应用开发的大数据库集群 。
  2. 支持事务、ACID、可以替代MySQL的加强版数据库。
  3. 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群。
  4. 一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server。
  5. 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品。
  6. 一个新颖的数据库中间件产品。

MyCat能做什么,有什么用途?

  1. 分库分表,把一个数据库切分成多个部分放到不同的数据库(server)上,从而缓解单一数据库的性能问题。
  2. 读写分离,线性的提升数据库的读性能,消除读写锁冲突从而提升数据库的写性能。

MyCat官方链接:

GitHub:https://github.com/MyCATApache/Mycat-Server

官网: http://www.mycat.io/

下载路径:https://github.com/MyCATApache/Mycat-download

具体下载哪个版本以发布为准,官方推荐1.4,1.5。

二、使用教程

注意:mycat不负责任何数据同步问题,因此需提前配置好mysql的主从复制数据自动同步。

MyCat三个主要配置文件,rule.xml表示分片规则、schema.xml是最主要的配置项,可配置物理数据库连接与分片等、server.xml可配置连接用户名与密码等。

1.在server.xml添加用户

在mycat:server标签下添加user

1
2
3
4
<user name="admin">
<property name="password">admin</property>
<property name="schemas">api</property>
</user>

name表示连接时用户名称,password表示连接密码,api表示schema.xml中名为api的schema标签配置,同时也是数据库名称。

2.在schema.xml中配置’api’

1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- 数据库配置,与server.xml中的数据库对应 -->
<schema name="api" checkSQLschema="false" dataNode="apiNode"></schema>

<!-- 分片配置 -->
<dataNode name="apiNode" dataHost="apiHost" database="api" />

<!-- 物理数据库配置 -->
<dataHost name="apiHost" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native">
<heartbeat>select user();</heartbeat>
<writeHost host="apiWriteHost" url="127.0.0.1:3306" user="root" password="root">
<readHost host="apiReadHost" url="127.0.0.1:3307" user="root" password="root"></readHost>
</writeHost>
</dataHost>

schema中的name是数据库名称

sqlMaxLimit配置默认查询数量 。

database为真实数据库名 。

balance=”0”, 不开启读写分离机制,所有读操作都发送到当前可用的writeHost 上。

balance=”1”,全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡。

balance=”2”,所有读操作都随机的在 writeHost、 readhost 上分发。

balance=”3”, 所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost 不负担读压力,注意 balance=3 只在 1.4 及其以后版本有, 1.3 没有。

writeType=”0”, 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties 。

writeType=”1”,所有写操作都随机的发送到配置的 writeHost。

3.Mycat启动

点击bin/mycat.bat,安装mycat服务

启动服务,默认端口8066。

4.用Mysql客户端连接Mycat,并写入数据

用户名和密码就是在server.xml中配置的数据。

在MyCat连接中插入一条数据:

查看3306库中的api_user表:

查看3307库中的api_user表:

有一个需要注意的是,主节点(写库)宕机时,读节点也不能读。

查看评论