一,什么是mycat
一个完全开源的,面向企业运用开辟的大数据库集群
支撑事件、ACID、能够替换MySQL的加强版数据库
一个能够视为MySQL集群的企业级数据库,用来替换高贵的Oracle集群
一个融会内存缓存手艺、NoSQL手艺、HDFS大数据的新型SQL Server
连系传统数据库和新型分布式数据仓库的新一代企业级数据库产物
一个新鲜的数据库中间件产物
以上是官方申明。实在就是数据库的衔接池。mysql proxy也是一种衔接池,然则效力很低。
二,mycat 装置
1,下载地点mycat
http://dl.mycat.io/
2,装置mycat
# tar zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/
三,设置mycat
1,设置server.xml
# vim /usr/local/mycat/conf/server.xml //增加以下内容 <user name="user"> //mycat用户名 <property name="password">user</property> //mycat暗码 <property name="schemas">mytest</property> //mycat假造数据库名 <property name="readOnly">true</property> //只读 </user> <user name="tankzhang"> <property name="password">admin</property> <property name="schemas">mytest</property> </user>
在这里要注重,默许的假造数据名是TESTDB,假如schema.xml内里没有设置testdb,那就要把testdb改成schema.xml内里有的假造数据名。这里定义的用户名和暗码,假造数据库名,并非在mysql中实在存在的。
2,设置schema.xml
# cat schema.xml <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="mytest" checkSQLschema="false" sqlMaxLimit="100" dataNode="my1" />//定义假造数据库名mytest <dataNode name="my1" dataHost="test1" database="test" /> //实在数据库名test <dataHost name="test1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" > <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="192.168.5.213:3306" user="tank" password="123456" > //实在数据库的衔接体式格局 <readHost host="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,增加实在用户
grant all privileges on test.* to tank@"192.168.%" identified by '123456'; flush privileges
在213,214二台机械上增加用户。
5,测试实在用户衔接,确保schema.xml中设置的实在用户,能连上实在的数据库。注重防火墙。
四,启动mycat
1,经常运用参数
./mycat start 启动
./mycat stop 住手
./mycat console 前台运转
./mycat restart 重启效劳
./mycat pause 停息
./mycat status 检察启动状况
2,启动,并检察mycat
# ./mycat start Starting Mycat-server... # netstat -tpnl |grep 8066 tcp 0 0 :::8066 :::* LISTEN 31728/java # ./mycat status Mycat-server is running (31726).
五,测试读写星散
# mysql -u tankzhang -p -P 8066 -h 127.0.0.1 //一定要带上127.0.0.1 Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.6.29-mycat-1.6-RELEASE-20161028204710 MyCat Server (OpenCloundDB) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +----------+ | DATABASE | +----------+ | mytest | //假造数据库 +----------+ 1 row in set (0.00 sec) mysql> use mytest; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A mysql> CREATE TABLE IF NOT EXISTS `user` ( -> `id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'ID', -> `name` varchar(20) NOT NULL DEFAULT '' COMMENT '姓名', -> `create_time` int(10) NOT NULL DEFAULT '0' COMMENT '建立时候', -> PRIMARY KEY (`id`) -> ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; Query OK, 0 rows affected (0.08 sec) Database changed mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | user | +----------------+ 1 row in set (0.01 sec) mysql> INSERT INTO `user` (`id` ,`name`)VALUES ('1', 'tank'); Query OK, 1 row affected (0.00 sec) mysql> select * from user; //修正从数据库的user表中的name,会发明读是从从数据库读取的 +----+-----------+-------------+ | id | name | create_time | +----+-----------+-------------+ | 1 | tankzhang | 0 | +----+-----------+-------------+ 1 row in set (0.01 sec)
六,小结
mycat支撑 mysql的分表,分片等等,然则不发起运用。mycat支撑的集群不多,假如能合营mha运用就比较牛B了。
相干引荐:
Mycat读写星散在MySQL主从复制基础上完成的实例
怎样举行MyCat的设置
MySQL分布式集群之MyCAT(一)简朴引见
以上就是mysql 中间件mycat装置与运用方法实例分享的细致内容,更多请关注ki4网别的相干文章!