这篇文章将为大家详细讲解有关mysql中间件mycat怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

一,什么是mycat

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

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

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

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

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

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

以上是官方说明。其实就是数据库的连接池。mysql proxy也是一种连接池,但是效率很低。

二,mycat 安装

1,下载地址mycat

http://dl.mycat.io/

2,安装mycat

#tarzxvfMycat-server-1.6-RELEASE-20161028204710-linux.tar.gz-C/usr/local/

三,配置mycat

1,配置server.xml

#vim/usr/local/mycat/conf/server.xml//添加以下内容<username="user">//mycat用户名<propertyname="password">user</property>//mycat密码<propertyname="schemas">mytest</property>//mycat虚拟数据库名<propertyname="readOnly">true</property>//只读</user><username="tankzhang"><propertyname="password">admin</property><propertyname="schemas">mytest</property></user>

在这里要注意,默认的虚拟数据名是TESTDB,如果schema.xml里面没有配置testdb,那就要把testdb改成schema.xml里面有的虚拟数据名。这里定义的用户名和密码,虚拟数据库名,并不是在mysql中真实存在的。

2,配置schema.xml

#catschema.xml<?xmlversion="1.0"?><!DOCTYPEmycat:schemaSYSTEM"schema.dtd"><mycat:schemaxmlns:mycat="http://io.mycat/"><schemaname="mytest"checkSQLschema="false"sqlMaxLimit="100"dataNode="my1"/>//定义虚拟数据库名mytest<dataNodename="my1"dataHost="test1"database="test"/>//真实数据库名test<dataHostname="test1"maxCon="1000"minCon="10"balance="1"writeType="0"dbType="mysql"dbDriver="native"><heartbeat>selectuser()</heartbeat><writeHosthost="hostM1"url="192.168.5.213:3306"user="tank"password="123456">//真实数据库的连接方式<readHosthost="hostS1"url="192.168.5.214:3306"user="tank"password="123456"/>//同上</writeHost></dataHost></mycat:schema>

mycat的配置参数,相当的多。重点说一下 balance="1"与writeType="0"

a. balance 属性负载均衡类型,目前的取值有 4 种:

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

2. balance="1",全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1 ->S1 , M2->S2,并且 M1 与 M2 互为主备),正常情况下, M2,S1,S2 都参与 select 语句的负载均衡。

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

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

b. writeType 属性

负载均衡类型,目前的取值有 3 种:

1. writeType="0", 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个

writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties .

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

3. writeType="2",没实现。

具体参数:http://mycat.io/document/Mycat_V1.6.0.pdf

3,配置主从服务器,就不在这儿说了,博客中有

4,添加真实用户

grantallprivilegesontest.*totank@"192.168.%"identifiedby'123456';flushprivileges

在213,214二台机器上添加用户。

5,测试真实用户连接,确保schema.xml中配置的真实用户,能连上真实的数据库。注意防火墙。

四,启动mycat

1,常用参数
./mycat start 启动
./mycat stop 停止
./mycat console 前台运行
./mycat restart 重启服务
./mycat pause 暂停
./mycat status 查看启动状态

2,启动,并查看mycat

#./mycatstartStartingMycat-server...#netstat-tpnl|grep8066tcp00:::8066:::*LISTEN31728/java#./mycatstatusMycat-serverisrunning(31726).

五,测试读写分离

#mysql-utankzhang-p-P8066-h127.0.0.1//一定要带上127.0.0.1Enterpassword:WelcometotheMySQLmonitor.Commandsendwith;or\g.YourMySQLconnectionidis1Serverversion:5.6.29-mycat-1.6-RELEASE-20161028204710MyCatServer(OpenCloundDB)Copyright(c)2000,2016,Oracleand/oritsaffiliates.Allrightsreserved.OracleisaregisteredtrademarkofOracleCorporationand/oritsaffiliates.Othernamesmaybetrademarksoftheirrespectiveowners.Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.mysql>showdatabases;+----------+|DATABASE|+----------+|mytest|//虚拟数据库+----------+1rowinset(0.00sec)mysql>usemytest;ReadingtableinformationforcompletionoftableandcolumnnamesYoucanturnoffthisfeaturetogetaquickerstartupwith-Amysql>CREATETABLEIFNOTEXISTS`user`(->`id`int(11)unsignedNOTNULLDEFAULT'0'COMMENT'ID',->`name`varchar(20)NOTNULLDEFAULT''COMMENT'姓名',->`create_time`int(10)NOTNULLDEFAULT'0'COMMENT'创建时间',->PRIMARYKEY(`id`)->)ENGINE=MyISAMDEFAULTCHARSET=utf8AUTO_INCREMENT=1;QueryOK,0rowsaffected(0.08sec)Databasechangedmysql>showtables;+----------------+|Tables_in_test|+----------------+|user|+----------------+1rowinset(0.01sec)mysql>INSERTINTO`user`(`id`,`name`)VALUES('1','tank');QueryOK,1rowaffected(0.00sec)mysql>select*fromuser;//修改从数据库的user表中的name,会发现读是从从数据库读取的+----+-----------+-------------+|id|name|create_time|+----+-----------+-------------+|1|tankzhang|0|+----+-----------+-------------+1rowinset(0.01sec)

关于“mysql中间件mycat怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。