05-mycat屏蔽主从同步

上一篇文章,我们基于mysql的读写分离完成了主从同步,但这样的主从同步有一个缺陷,程序员需要记录哪些机子提供增删改服务,哪些机子提供查询服务,如此一来就会形成硬编码。能不能使得程序员集中精力于业务,逻辑上只有一个mysql服务,但物理上却又多个mysql服务;能不能屏蔽复杂性却提升性能,mycat便应运而生,它的一个重要功能就是以读写分离为基础,统一多个mysql服务于一个。本文将阐述如何使用mycat做到这一点。

1、前提约束:

2、软件下载:

百度网盘
链接:https://pan.baidu.com/s/1APUIuLnU7G2J5K2tpCW5Iw
提取码:jtg6

3、解压Mycat-server-1.6.6.1-release-20181031195535-win.tar.gz到C:\Program Files\mycat

4、查看C:\Program Files\mycat\conf\server.xml

在这个文件的最下面有如下默认内容:

    <user name="root" defaultAccount="true">
        <property name="password">123456</property>
        <property name="schemas">TESTDB</property>
        
        <!-- 表级 DML 权限设置 -->
        <!--        
        <privileges check="false">
            <schema name="TESTDB" dml="0110" >
                <table name="tb01" dml="0000"></table>
                <table name="tb02" dml="1111"></table>
            </schema>
        </privileges>       
         -->
    </user>

    <user name="user">
        <property name="password">user</property>
        <property name="schemas">TESTDB</property>
        <property name="readOnly">true</property>
    </user>

即有两个账号,一个是root/123456,另外一个是user/user,对应的数据库实例就是TESTDB,而这个TESTDB就是真正的mysql实例映射而成的。

5、修改C:\Program Files\mycat\conf\schema.xml

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
    <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
        <table name="t1" primaryKey="id"  dataNode="dn1"/> 
    </schema>
    <dataNode name="dn1" dataHost="localhost1" database="db01" />
    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
              writeType="0" dbType="mysql" dbDriver="native" switchType="0"  slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <writeHost host="192.168.100.134" url="192.168.100.134:3306" user="root"
                   password="zhangli">
            <readHost host="192.168.100.136" url="192.168.100.136:3306" user="root" password="zhangli" />
        </writeHost>
    </dataHost>
</mycat:schema>

5、启动测试

打开命令行,进入C:\Program Files\mycat\bin,执行mycat.bat start,即可启动,注意mycat默认端口为8066。

  • 在134主机命令行,执行以下命令:
mysql -uroot -pzhangli;#进入mysql命令行
create database db01;
use db01;
create table t1(id int,name varchar(20));
  • 在136从机命令行,执行以下命令:
mysql -uroot -pzhangli;#进入mysql命令行
show database;#我们看到了db01已经同步过来
use db01;
show tables;#我们看到t1也已经同步过来
  • 在win10命令行,在C:\Program Files\mycat\bin路径执行以下命令:
mysql -uroot -p123456 -P8066  #注意,一定要跟上端口,要不然就会登录到mysql服务而非mycat
show databases; #我们看到有一个逻辑数据库TESTDB
use TESTDB;
show tables;#我们看到了t1
use t1;
insert into t1(id,name) varchar(1,'ali');
insert into t1(id,name) varchar(2,'zhangli');
select * from t1;

此时,再回到从机命令行,查询t1,也能看到刚才通过mycat插入的两条记录。

 

 
16204070-0951dbb7c3af1d66.gif
在mycat中插入,在从机中查询

 

 

在使用了mycat以后,开发人员只需要记住mycat的ip,端口以及数据库实例,但实际上却完成了读写分离,提高了开发效率,也提升了数据库性能。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值