Mycat安装

Mycat

Posted by 冷小冰 on August 22, 2018

Mycat安装

MyCat是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信。
MyCat发展到目前的版本,已经不是一个单纯的MySQL代理了,它的后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流数据库,也支持MongoDB这种新型NoSQL方式的存储,未来还会支持更多类型的存储。而在最终用户看来,无论是那种存储方式,在MyCat里,都是一个传统的数据库表,支持标准的SQL语句进行数据的操作,这样一来,对前端业务系统来说,可以大幅降低开发难度,提升开发速度。

环境准备

Linux:Centos7
JDK:jdk1.8.0_172
MySQL:MySQL-5.7.23
Mycat:Mycat-server-1.6-RELEASE
下载地址:http://www.mycat.io/

安装Mycat

下载上传到服务器,直接解压就可以使用了。

1
2
#解压
tar -zxvf Mycat-server-1.6-RELEASE-20161012170031-linux.tar.gz

读写分离

读写分离是建立在主从复制的基础之上,使用中间件实现的,本文使用的是Mycat中间件。
修改Mycat的配置文件 **
**schema.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!-- 数据库配置,与server.xml中的数据库对应 -->
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="database1"></schema> 
<!-- 分片配置 -->
<dataNode name="database1" dataHost="localhost1" database="first_db" />
<!-- 物理数据库配置 -->
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="3" writeType="0" dbType="mysql" dbDriver="native" switchType="2"  slaveThreshold="100">
<heartbeat>show slave status</heartbeat>
<writeHost host="hostM1" url="192.168.3.11:3306" user="root" password="root">
<readHost host="hostS1" url="192.168.3.12:3306" user="root" password="root"/>
</writeHost>
<writeHost host="hostS2" url="192.168.3.12:3306" user="root" password="root"/>
</dataHost>
</mycat:schema>

server.xml

1
2
3
4
5
6
<!-- 用户信息配置 -->
<user name="root">
<property name="password">root</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">false</property>
</user>

启动Mycat

1
2
cd /usr/mycat/bin
./mycat start

连接测试

1
2
3
4
mysql -uroot -proot -h192.168.3.11 -P8066 -DTESTDB
> use TESTDB;
> inser into first_tb values(1,@@server_id); 
> select * from first_tb;

参数说明:

  • -u,-p,-h分别是用户名,密码和主机
  • -P是mycat端口
  • -D是连接的逻辑库
  • 8066 为数据连接端口
  • 9066 为管理连接端口

:由于主从复制的server_id是不同的,这里可以用来验证读写分离是否成功,前提是复制的策略是按语句复制,即binlog_format=STATEMENT,生产环境还是推荐使用binlog_format=MIXED,不然会导致主从数据的不一致。

分库分表

修改配置文件 schema.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!-- 数据库配置,与server.xml中的数据库对应 -->
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="database1">
<table name="first_tb" dataNode="dn1"  />
   <table name="dictionary" primaryKey="id" autoIncrement="true" dataNode="dn1,dn2"  rule="mod-long" />
</schema> 
<!-- 分片配置 -->
<dataNode name="dn1" dataHost="dh1" database="frist_db" />
<dataNode name="dn2" dataHost="dh2" database="frist_db" />
<!-- 物理数据库配置 -->
<dataHost name=" dh1" maxCon="1000" minCon="10" balance="3" writeType="0" dbType="mysql" dbDriver="native" switchType="2"  slaveThreshold="100">
<heartbeat>show slave status</heartbeat>
<writeHost host="hostM1" url="192.168.3.11:3306" user="root" password="root">
<readHost host="hostS1" url="192.168.3.12:3306" user="root" password="root"/>
</writeHost>
<writeHost host="hostS2" url="192.168.3.12:3306" user="root" password="root"/>
</dataHost>
<dataHost name="dh2" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="2"  slaveThreshold="100">  
<heartbeat>select user();</heartbeat>  
<writeHost host="hostM2" url="192.168.3.10:3306" user="root" password="root">
</writeHost>
</dataHost>
</mycat:schema>

server.xml

1
2
3
4
5
<user name="root">
<property name="password">root</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">false</property>
</user>

rule.xml

1
2
3
4
5
6
7
8
9
10
11
<!-- 分库分表的规则配置 -->
<tableRule name="mod-long">
<rule>
	<columns>id</columns>
	<algorithm>mod-long</algorithm>
</rule>
</tableRule>
<function name="mod-long" class="io.mycat.route.function.PartitionByMod">
	<!-- 数据库节点数量 -->
	<property name="count">2</property>
</function>

重启Mycat。

安装Mycat Web

Mycat Web的作用:

  • 支持对Mycat、Mysql性能监控
  • 支持对Mycat的JVM内存提供监控服务
  • 支持对线程的监控
  • 支持对操作系统的CPU、内存、磁盘、网络的监控

安装环境
Zookeeper: zookeeper-3.5.4-beta
Mycat Web: Mycat-web-1.0-SNAPSHOT-20170102153329-linux
JDK:jdk1.8.0_172
开始安装

1
2
#解压
tar -zxvf Mycat-web-1.0-SNAPSHOT-20170102153329-linux.tar.gz

启动
参考readme.txt文件

1
2
3
#打开start.sh在末尾加上&,使程序后台运行
cd /usr/mycatweb/mycat-web
./start.sh

启动后,浏览器访问:http://localhost:8082/mycat