MyCat 基本配置

本贴最后更新于 2733 天前,其中的信息可能已经时异事殊

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;
  • mycat
    6 引用 • 6 回帖 • 1 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3194 引用 • 8214 回帖
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    951 引用 • 943 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...