环境
- 操作系统:CentOS 7
- Mycat版本:Mycat1.6.7.6
下载
首先下载Mycat的压缩包,Mycat1官网:http://www.mycat.org.cn/mycat1.html Mycat1.6.7.6官网下载地址:http://dl.mycat.org.cn/1.6.7.6/ 找到最新日期的下载即可
安装
将下载好的压缩包,上传至服务器解压即可,无须编译安装 解压
代码语言:javascript复制tar -zxvf Mycat-server-1.6.7.6-release-linux.tar.gz(名字改成自己下载的压缩包名称)
修改配置
涉及到需要修改的配置文件 – server.xml:定义用户以及系统相关变量,如端口等 – schema.xml:定义逻辑库,表、分片节点等内容 1. 修改配置文件server.xml
代码语言:javascript复制 <user name="mycat" defaultAccount="true"> <!-- mycat登陆用户名 -->
<property name="password">123456</property> <!-- mycat登陆密码 -->
<property name="schemas">TESTDB</property> <!-- mycat连接逻辑库 -->
<property name="defaultSchema">TESTDB</property> <!-- mycat连接逻辑库 -->
</user>
配置解释 – user name=”mycat”:通过Mycat服务连接Mysql服务的用户名,可随意修改 – name=”schemas”:Mycat的逻辑库TESTDB,可随意修改 2. 修改配置文件 schema.xml
代码语言:javascript复制<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" randomDataNode="dn1" dataNode="dn1">
</schema>
<dataNode name="dn1" dataHost="host1" database="testdb" />
<dataHost name="host1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="jdbc:mysql://127.0.0.1:3306" user="root"
password="123456">
</writeHost>
</dataHost>
</mycat:schema>
标签解释
schema
- name:对应Server.xml中配置的逻辑库名TESTDB
- checkSQLschema:当该值设置为true时,如果我们执行语句select * from TESTDB.travelrecord;则MyCat会把语句修改为select * from travelrecord;即把表示schema的字符去掉,避免发送到后端数据库执行时报(ERROR 1146 (42S02): Table ‘testdb.travelrecord’ doesn’t exist)。不过,即使设置该值为 true ,如果语句所带的是并非是schema指定的名字,例如:select * from db1.travelrecord; 那么MyCat并不会删除db1这个字段,如果没有定义该库的话则会报错,所以在提供SQL语句的最好是不带这个字段。
- sqlMaxLimit:当该值设置为某个数值时。每条执行的SQL语句,如果没有加上limit语句,MyCat也会自动的加上所对应的值。例如设置值为100,执行select * from TESTDB.travelrecord;的效果为和执行select * from TESTDB.travelrecord limit 100;相同设置该值的话,MyCat默认会把查询到的信息全部都展示出来,造成过多的输出。所以,在正常使用中,还是建议加上一个值,用于减少过多的数据返回。当然SQL语句中也显式的指定limit的大小,不受该属性的约束。需要注意的是,如果运行的schema为非拆分库的,那么该属性不会生效。需要手动添加limit语句。
- randomDataNode和dataNode:同时存在,指定默认存储节点,比如建表默认会创建到该节点下
dataNode
- name:节点名称,可随意填写
- dataHost:对应dataHost标签中name属性值
- database:真实Mysql服务中创建的数据库名称
dataHost
- name:主机名称,可随意填写
- maxCon:指定每个读写实例连接池的最大连接。也就是说,标签内嵌套的writeHost、readHost标签都会使用这个属性的值来实例化出连接池的最大连接数。
- minCon:指定每个读写实例连接池的最小连接,初始化连接池的大小。
- balance:负载均衡类型,目前的取值有3种: balance=”0″, 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。 balance=”1″,全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与 M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡。balance=”2″,所有读操作都随机的在writeHost、readhost上分发。balance=”3″,所有读请求随机的分发到wiriterHost对应的readhost执行,writerHost不负担读压力,注意balance=3只在1.4及其以后版本有,1.3没有。
- writeType:负载均衡类型,目前的取值有3种:writeType=”0″, 所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties,writeType=”1″,所有写操作都随机的发送到配置的writeHost,1.5以后废弃不推荐。switchType属性 1 表示不自动切换。 1 默认值,自动切换。 2 基于MySQL主从同步的状态决定是否切换。
- dbType:指定后端连接的数据库类型,目前支持二进制的mysql协议,还有其他使用JDBC连接的数据库。例如:mongodb、oracle、spark等。
- dbDriver:指定连接后端数据库使用的Driver,目前可选的值有native和JDBC。使用native的话,因为这个值执行的是二进制的mysql协议,所以可以使用mysql和maridb。其他类型的数据库则需要使用JDBC驱动来支持。从1.6版本开始支持postgresql的native原始协议。 如果使用JDBC的话需要将符合JDBC 4标准的驱动JAR包放到MYCATlib目录下,并检查驱动JAR包中包括如下目录结构的文件:META-INFservicesjava.sql.Driver。在这个文件内写上具体的Driver类名,例如:com.mysql.jdbc.Driver。
- switchType: -1 表示不自动切换 1 默认值,自动切换 2 基于MySQL主从同步的状态决定是否切换 心跳语句为 show slave status 3 基于MySQL galary cluster的切换机制(适合集群)(1.4.1) 心跳语句为 show status like ‘wsrep%’
heartbeat
这个标签内指明用于和后端数据库进行心跳检查的语句。例如,MYSQL可以使用select user(),Oracle可以使用select 1 from dual等。 这个标签还有一个connectionInitSql属性,主要是当使用Oracla数据库时,需要执行的初始化SQL语句就这个放到这里面来。例如:alter session set nls_date_format=’yyyy-mm-dd hh24:mi:ss'(把这里的中文冒号改为英文冒号),1.4主从切换的语句必须是:show slave status
启动
mycat启动相关命令,要先cd 到mycatbin路径下 linux 环境为:
代码语言:javascript复制./mycat start 启动
./mycat stop 停止
./mycat console 前台运行
./mycat restart 重启服务
./mycat pause 暂停
./mycat status 查看启动状态
window 启动为: 直接双击运行 startup_nowrap.bat ,如果闪退用 cmd 模式运行查看日志 建议先使用前台运行,便宜查看运行情况
登陆
登陆前提,需要机器装有Mysql服务环境,Mycat默认服务端口8066,后台维护端口9066 登陆数据窗口
代码语言:javascript复制mysql -umycat -p123456 -P8066 -h127.0.0.1(换成Mycat服务安装机器IP)
执行一下命令,查看,注意TESTDB是Server.xml中配置的逻辑库名称
代码语言:javascript复制show database;