mysql中间件mycat怎么用
这篇文章将为大家详细讲解有关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怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。