关于mycat:mycat-中间件安装与使用

38次阅读

共计 3737 个字符,预计需要花费 10 分钟才能阅读完成。

一,什么是 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 .

  1. writeType=”1″,所有写操作都随机的发送到配置的 writeHost。
  2. writeType=”2″,没实现。

具体参数:http://mycat.io/document/Myca…

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 了。

关键词:java 培训

正文完
 0