一、下载mycat
mycat的官网网址http://www.mycat.org.cn/,我使用的是mycat的1.4的Linux安装包
下载地址
https://github.com/MyCATApache/Mycat-download/blob/master/1.4-RELEASE/Mycat-server-1.4-release-20151019230038-linux.tar.gz
下载mycat的安装包到/opt目录下
#cd /opt
#wgethttps://github.com/MyCATApache/Mycat-download/blob/master/1.4-RELEASE/Mycat-server-1.4-release-20151019230038-linux.tar.gz
# tar -xvf Mycat-server-1.4-RELEASE-20151017210032-linux.tar.gz
解压后放到/usr/local下
#mv mycat /usr/local
# pwd
/usr/local/mycat
# ls
bin catlet conf lib logs version.txt
二、配置环境变量
检查是否已经配置好了java的环境变量
#java -version
显示
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
表示我的java环境变量配置好了.,如果你还没用配置好,需先配置.如果你不会请自己度娘.非常多我就不写了
三、修改mycat配置文件
接下来修改mycat的配置文件
#cd /usr/local/mycat/conf
#ls
autopartition-long.txt partition-hash-int.txt sequence_db_conf.properties
cacheservice.properties partition-range-mod.txt sequence_time_conf.properties
dnindex.properties router.xml server.xml
ehcache.xml rule.xml wrapper.conf
index_to_charset.properties schema.xml
log4j.xml sequence_conf.properties
配置文件非常多,配置项也远比amoeba复杂.如果只是简单配置在不同的服务器上进行读写分离只需要配置两个文件
server.xml和schema.xml
(一)先配置server.xml
找到这一段
test
TESTDB
user
TESTDB
true
这里配置了两个可以来连接的用户
用户1 test密码test给予了此用户TESTDB数据库的权限
用户2 user密码user给予了此用户TESTDB数据库的只读权限
注意这里的testdb不一定是你数据库上的真实库名.可以任意指定.只要和接下来的schema.xml的配置文件中的库名统一即可
(二)接下来配置schema.xml
with any table whose sharding node is in the same data node -->
rule="mod-long" />
rule="mod-long" /> -->
rule="sharding-by-intfile" />
rule="sharding-by-intfile">
parentKey="id">
parentKey="id" />
parentKey="id" />
/> -->
/> -->
-->
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
select user()
password="123456">
password="123456" />
看着这一大篇你是否和我一样的开始蛋疼.好复杂有木有!
算了给大家来一份我的简单点的.因为我们现在只做库的读写分离,没用分库 没用分表这些东西.
select user()
(三)配置文件解释
一,
这里TESTDB就是我们对外声称的我们有数据库的名称必须和server.xml中的用户指定的数据库名称一致
添加一个dataNode="dn1"是指定了我们这个库只在dn1上.没有进行分库
二,
这里只需要改database的名字db1就是你真实数据库服务上的数据库名.
根据你自己的数据库名进行修改.
三,
这里只需要配置三个地方balance="1"与writeType="0",switchType=”1”
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",没实现。
c.switchType属性
- -1表示不自动切换
- 1默认值,自动切换
- 2基于MySQL主从同步的状态决定是否切换
四,
这里是配置的我们的两台读写服务器IP地址访问端口和 访问用户的用户名和密码
四、启动mycat