MyCat加MySQL实现读写分离,故障转移

采用专职专责的设计减少数据库压力,提高性能,将写请求交给Master处理,读请求交给Slave处理,从而提高系统性能,减缓数据库压力
在这里插入图片描述

MySQL5.7主从同步环境搭建
https://blog.csdn.net/l_learning/article/details/103629651

MyCat官网
http://www.mycat.io/

环境Mycat-server-1.5.1 + MySQL5.7

MyCat 127.0.0.1
MySQL master 192.168.241.200
MySQL slave1 192.168.241.201
MySQL slave2 192.168.241.202

在数据库中为Mycat新建一个账号并赋权

CREATE USER  'MyCat'@'host'  IDENTIFIED BY  '666666';
GRANT ALL privileges ON `goods`.* TO 'MyCat'@'host';
--赋予所有权限
GRANT ALL PRIVILEGES ON `goods`.* TO  'MyCat'@'host';
--刷新权限
FLUSH PRIVILEGES;

server.xml配置

在conf目录下的server.xml
配置一个MyCat用户供应用连接到mycat,同时mycat 在schema.xml中配置后了一个逻辑库MyCat,配置好逻辑库与用户的映射关系

<user name="MyCat">
    <property name="password">666666</property>
    <property name="schemas">MyCat</property>
</user>

schema.xml配置

schema标签中的name属性(MyCat)必须与server.xml中的user标签的逻辑库一致(MyCat)

<schema name="MyCat" checkSQLschema="false" sqlMaxLimit="100" dataNode="mycatdb">
</schema>
<dataNode name="mycatdb" dataHost="mycluster" database="goods" />

<!-- 开启读写分离必须将balance修改为1-->
<dataHost name="mycluster" maxCon="1000" minCon="10" balance="1"
    writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
    <heartbeat>show slave status</heartbeat>
    <!-- 读写分离 -->
    <writeHost host="Master" url="192.168.241.200:3306" user="root" password="666666">
        <readHost host="Slave1" url="192.168.241.201:3306" user="root" password="666666" />
        <readHost host="Slave2" url="192.168.241.202:3306" user="root" password="666666" />
    </writeHost>
</dataHost>

启动MyCat

修改conf目录下的log4j.xml的日志等级为DEBUG

<root>
   <level value="DEBUG" />
   <appender-ref ref="FILE" />
</root>

这里使用的是window版,双击startup_nowrap.bat即可
Linux启动

./mycat start

插入一条数据,通过mycat.log查看mycat连接的真实数据库

INSERT INTO good VALUES (3,'方便面',8)

200的是主节点,执行写操作
在这里插入图片描述
查询数据库记录,通过mycat.log查看mycat连接的真实数据库

DELETE FROM good WHERE good_id = 3

202的是从节点,执行读操作
在这里插入图片描述

故障转移

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/" >

    <schema name="MyCat" checkSQLschema="false" sqlMaxLimit="100" dataNode="mycatdb">
    </schema>
    <dataNode name="mycatdb" dataHost="mycluster" database="goods" />

    <!-- 开启读写分离必须将balance修改为1-->
    <dataHost name="mycluster" maxCon="1000" minCon="10" balance="1"
        writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>show slave status</heartbeat>
        <!-- 读写分离 -->
        <writeHost host="Master" url="192.168.241.200:3306" user="root" password="666666">
            <readHost host="Slave1" url="192.168.241.201:3306" user="root" password="666666" />
            <readHost host="Slave2" url="192.168.241.202:3306" user="root" password="666666" />
        </writeHost>
        <!-- 主从切换 -->
        <writeHost host="Slave1" url="192.168.241.201:3306" user="root" password="666666"></writeHost>
        <writeHost host="Slave2" url="192.168.241.202:3306" user="root" password="666666"></writeHost>
    </dataHost>
  
</mycat:schema>

把主节点关闭,执行写操作会将一个从节点提升为主节点,执行写操作从而实现故障转移

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值