MyCat 1.6 读写分离、分库分表 配置



安装、配置

1、安装,官网下载 1.6-RELEASE,Mycat的安装其实只要解压下载的目录就可以了,非常简单。安装完成后,目录如下:

目录说明
binmycat命令,启动、重启、停止等
catletcatlet为Mycat的一个扩展功能
confMycat 配置信息
libMycat引用的jar包,Mycat是java开发的
logs日志文件,包括Mycat启动的日志和运行的日志。

2、配置,Mycat的配置文件都在conf目录里面,这里介绍几个常用的文件:

文件说明
server.xmlMycat的配置文件,设置账号、参数等
schema.xmlMycat对应的物理数据库和数据库表的配置
rule.xmlMycat分片(分库分表)规则

读写分离

配置读写分离之前,mysql 需要配置主从复制

1、在 server.xml 文件中配置 MyCat 的用户和密码等基本信息,server.xml 中其他配置省略,这里只有 user 的配置
...
<user name="root">
    <property name="password">root</property>
    <property name="schemas">testDB</property>
    <property name="readOnly">false</property>
</user>
...

参数说明
user用户配置节点
--name登录的用户名,也就是连接Mycat的用户名
--password登录的密码,也就是连接Mycat的密码
--schemas数据库名,这里会和schema.xml中的配置关联,多个用逗号分开,例如需要这个用户需要管理两个数据库db1,db2,则配置db1,dbs
--privileges配置用户针对表的增删改查的权限,具体见文档吧

2、在 schema.xml 文件中配置读写分离
<mycat:schema xmlns:mycat="http://io.mycat/">

    <!-- 数据库配置,与server.xml中的数据库对应 -->
    <schema name="testDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="testNode1"></schema>

    <!-- 分片配置 -->
    <dataNode name="testNode1" dataHost="localhost1" database="test" />

    <!-- 物理数据库配置 -->
    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>select user();</heartbeat>
        <writeHost host="hostMaster" url="192.168.49.130:3306" user="root" password="root">   <!-- 写入的库 -->
            <readHost host="hostSlave" url="192.168.49.131:3306" user="root" password="root"></readHost>    <!-- 读的库 -->
        </writeHost>
    </dataHost>

</mycat:schema>

参数说明
schema数据库设置,此数据库为逻辑数据库,name与server.xml中schema对应
dataNode分片信息,也就是分库相关配置
dataHost物理数据库,真正存储数据的数据库

每个节点的属性逐一说明

schema:
参数说明
name逻辑数据库名,与server.xml中的schema对应
checkSQLschema数据库前缀相关设置,建议看文档,这里暂时设为folse
sqlMaxLimitselect 时默认的limit,避免查询全表

dataNode
参数说明
name节点名,与table中dataNode对应
datahost物理数据库名,与datahost中name对应
database物理数据库中数据库名

dataHost
参数说明
name物理数据库名,与dataNode中dataHost对应
balance均衡负载的方式
writeType写入方式
dbType数据库类型
heartbeat心跳检测语句,注意语句结尾的分号要加。

3、启动、停止、重启  mycat

shell>./mycat start    # 启动
shell>./mycat stop    # 停止
shell>./mycat restart    #重启

4、连接 mycat
mysql -h localhost -P 9906 -u root -p root

5、日志查看,如果在启动时发现异常,在logs目录中查看日志。
wrapper.log 为程序启动的日志,启动时的问题看这个
mycat.log 为脚本执行时的日志,SQL脚本执行报错后的具体错误内容,查看这个文件。mycat.log是最新的错误日志,历史日志会根据时间生成目录保存。


6、测试读写分离
6.1、先执行一条 insert 语句,然后查看 mycat.log 中的日志,fromSlaveDB=false 表示写入的是 master 库,fromSlaveDB=true 表示是 slave 库。我们配置的 master 库 ip 是 192.168.49.130,所以日志中 fromSlaveDB=false,表示写入到了 master 库
[id=3, lastTime=1516445569517, user=root, schema=test, old shema=test, borrowed=true,fromSlaveDB=false, threadId=17, charset=latin1, txIsolation=3, autocommit=true, attachment=null, respHandler=null,host=192.168.49.130, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]

6.2、再执行一条 select 语句,此时 fromSlaveDB=true,表示从 slave 库取的数据,而我们配置的 slave 库 ip 为 192.168.49.131,说明读写分离配置成功。
[id=11, lastTime=1516445571795, user=root, schema=test, old shema=test, borrowed=false,fromSlaveDB=true, threadId=11, charset=latin1, txIsolation=3, autocommit=true, attachment=null, respHandler=null,host=192.168.49.131, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值