MyCat 开发那么一定需要 MySQL 数据库。本次做一个 MyCat 基本配置,需要的使用一个 MySQL 服务。
如果要想取得 MyCat 开发包,下载地址为:
https://github.com/MyCATApache/Mycat-download
然后选择相应的版本即可
本次下载的的版本为:
http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
本次主要使用两台主机实现服务的搭建
No. | 主机名称 | IP 地址 | 描述 |
---|---|---|---|
1 | mysql-server-single | 192.168.1.165 | MySQL 服务 |
2 | mycat-server-01 | 192.168.1.166 | MyCat 服务 |
1.【mysql-server-single】登录 mysql 数据库:
mysql -u root -phahaha
2.【mysql-server-single】创建一个数据库脚本
DROP DATABASE IF EXISTS zsl; CREATE DATABASE zsl CHARACTER SET UTF8 ; use zsl ; CREATE TABLE member( mid VARCHAR(50) , name VARCHAR(50) , age INT , salary DOUBLE , birthday DATE , note TEXT , CONSTRAINT pk_mid PRIMARY KEY(mid) ) ; INSERT INTO member(mid,name,age,salary,birthday,note) VALUES ('zsl','hello',10,2000.0,'2017-11-11','very good') ; INSERT INTO member(mid,name,age,salary,birthday,note) VALUES ('admin','admin',10,2000.0,'2017-11-11','very good') ; INSERT INTO member(mid,name,age,salary,birthday,note) VALUES ('guest','admin',10,2000.0,'2017-11-11','very good') ;
3.【mycat-server-01】将 mycat 的开发包下载到系统之中,而后对其进行解压缩
wget -c http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz tar xzvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar. -C /usr/local/
解压缩之后将得到 /usr/local/mycat 目录,所有的配置项都在此目录之中
4.【mycat-server-01】编辑 mycat 的核心配置文件:schema.xml(所有的库表分离配置)。
打开编辑器:
vim /usr/local/mycat/conf/schema.xml
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <!-- 定义一个MyCat的模式,此处定义了一个路基数据库名称TestDB --> <!-- “checkSQLschema”:描述的是当前的连接是否需要检测数据的模式 --> <!-- “sqlMaxLimit”:表示返回的最大的数据量的行数 --> <!-- “dataNode="dn1"” :该操作使用的数据节点是dn1的逻辑名称 --> <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"/> <!-- 定义个数据的操作节点,以后这个节点会进行一些苦逼哦分离使用 --> <!-- dataHost="localhost1" :定义数据节点的逻辑名称 --> <!-- database="zsl":定义数据界定啊要使用的数据库名称 --> <dataNode name="dn1" dataHost="localhost1" database="zsl" /> <!-- 定义数据节点,包括了各种逻辑项的配置 --> <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <!-- 配置真实 MySQL与MyCat的心跳 --> <heartbeat>select user()</heartbeat> <!-- can have multi write hosts --> <!-- 配置真实的MySQL的连接路径 --> <writeHost host="hostM1" url="192.168.1.165:3306" user="root" password="hahaha"> </writeHost> </dataHost> </mycat:schema> -->
该文件由如下几个部分组成:
A.定义 MyCat 整体的配置项:
<!-- 定义一个MyCat的模式,此处定义了一个路基数据库名称TestDB --> <!-- “checkSQLschema”:描述的是当前的连接是否需要检测数据的模式 --> <!-- “sqlMaxLimit”:表示返回的最大的数据量的行数 --> <!-- “dataNode="dn1"” :该操作使用的数据节点是dn1的逻辑名称 --> <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"/>
B.定义数据节点项:
<!-- dataHost="localhost1" :定义数据节点的逻辑名称 --> <!-- database="zsl":定义数据界定啊要使用的数据库名称 --> <dataNode name="dn1" dataHost="localhost1" database="zsl" />
C.定义数据主机的信息:
<!-- 定义数据节点,包括了各种逻辑项的配置 --> <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <!-- 配置真实 MySQL与MyCat的心跳 --> <heartbeat>select user()</heartbeat> <!-- can have multi write hosts --> <!-- 配置真实的MySQL的连接路径 --> <writeHost host="hostM1" url="192.168.1.165:3306" user="root" password="hahaha"> </writeHost> </dataHost>
定义数据主机信息
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> balance属性负载均衡类型; 负载均衡类型,目前的取值有4种: balance=“0”,不开启读写分离机制,所有读操作都发送到当前可用的writeHost上; balance="1",全部的readHost与stand bywriteH魔术贴参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡; balance=“2”,所有读操作都随机的再writeHost,readhost上分发; balance=“3”,所有读请求随机的分发到wiriteHost对应的readhost执行,writerHost不负担读压力,注意balance=3只在1.4级其月以后版本有1.3没有; writeType 属性,负载均衡类型; 负载均衡类型,目前的取值有三种: writeType="0":所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后以切换后的为准,切换记录在配置文件中:dnindex.properties writeType="1",所有写操作都随机的发送到配置writeHost; writeType="2",没实现 switchType 属性,有三种取值 “-1”:表示不自动切换; “1” :默认值,自动切换; “2” :基于MySQL主从同步的状态决定是否切换;
5.【mycat-server-01】 启动 mycat 服务:
/usr/local/mycat/bin/mycat console;
MyCat操作命令 启动MyCat : mycat start; 停止Mycat : mycat stop; 前台运行 : mycat console; 重启服务 : mycat restart; 暂停 : mycat pause; 查看启动状态:mycat sttus;
6.【mysql-server-single】 如果要想操作 Mycat 必须使用 mysql 的命令。
对于连接的时候需要考虑一个端口问题,在 Mycat 里面提供有两类的操作端口:
-
|- 管理端口 : 9066 (查看 Mycat 的运行状态):
-
|- 数据端口 : 8066 (进行数据的 CRUD 操作)
如果要想知道连接的用户名则可以查看配置文件:
more /usr/local/mycat/conf/server.xml
<user name="root"> <property name="password">123456</property> <property name="schemas">TESTDB</property> </user>
连接 MyCat 管理界面
mysql -u root -p123456 -h 192.168.1.166 -P9066 -DTESTDB;
查看所有的可用命令: show @@help 查看所有的逻辑数据 show @@database; 查看所有的数据节点:show @@datanode; 查看所有的数据源: show @@datasource;
连接 MyCat 数据操作端口:
mysql -u root -p123456 -h 192.168.1.166 -P8066 -DTESTDB;
可以看见的都是逻辑数据库: show datbases; 使用指定的数据库:use TESTDB; 查看所有的数据表: show tables; 查看所有的数据: select * from member;
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于