使用mycat管理mysql数据库,实现读写分离,热切换

本文详细介绍如何在Windows系统下使用Mycat中间件配置MySQL数据库的读写分离,包括资源准备、Mycat安装配置、schema.xml及server.xml配置,以及如何测试配置的有效性和查看状态。

一、资源准备

工具:

    java 支持 :jdk1.7以上

    一台服务器配置 mycat-1.6.6.1 

    两台服务器配置 mysql-7.9.24数据库,分别为 库1 和 库2 

    将两个mysql的数据库配置为主从服务器(库1 为主,库2为从)或 设置为主主服务器(互为主从)

    参考《MySql 配置主从服务器、配置主主服务器》https://blog.csdn.net/rdisme/article/details/78910841

《MySQL主从介绍,配置主服务器,配置从服务器,实现主从同步》https://blog.csdn.net/weixin_39663255/article/details/80851257

二、简单介绍

  使用mycat中间件可以通过编写rule.xml实现数据库分表查询,分表存储等功能,通过schema.xml配置文件配置主1 和主2 数据库,当主数据宕机,可以实现自动切换到主2 数据库,不影响业务使用。主1 一般执行写操作,主2 执行读操作,主1 宕机,主2 切换为可读写操作(可以通过schema.xml进行配置)。

三、安装配置mycat(本文是在windows系统安装)

  1.  管理员权限运行cmd,进入mycat安装目录的bin目录下
  2.  

    C:\Windows\system32>d:
    
    D:\>cd D:\Tools\mysql\mycat\bin
    
    #使用mycat.bat install 进行初步安装
    D:\Tools\mysql\mycat\bin>mycat.bat install
    
    #安装完成使用mycat.bat start启动mycat
    D:\Tools\mysql\mycat\bin>mycat.bat start
    wrapper  | Starting the Mycat-server service...
    wrapper  | Mycat-server started.
    
    启动报错的话 查看安装目录下的logs/wrapper.log文件错误信息
    
    
    #使用mycat.bat stop停止mycat
    D:\Tools\mysql\mycat\bin>mycat.bat stop
    wrapper  | Stopping the Mycat-server service...
    wrapper  | Mycat-server stopped.
  3.  

    配置MYCAT_HOME\conf\server.xml文件

     

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mycat:server SYSTEM "server.dtd">
    <mycat:server xmlns:mycat="http://io.mycat/">
        <system>
          <property name="defaultSqlParser">druidparser</property>
        </system>
        <user name="test">
            <property name="password">test</property>
            <property name="schemas">mycattest</property>
        </user>
    
        <user name="user">
            <property name="password">user</property>
            <property name="schemas">mycattest</property>
            <property name="readOnly">true</property>
        </user>
    </mycat:server>
    

    test和user分别设置密码,用于连接mycat,test用于读写,user用于只读,mycattest是逻辑库 

     

  4.  配置MYCAT_HOME\conf\schema.xml文件

 

  1. <?xml version="1.0"?>
    <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
    <mycat:schema xmlns:mycat="http://io.mycat/">
    
        <schema name="mycattest" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
           <!-- <table name="test" dataNode="dn1"  primaryKey="id"/> -->
        </schema>
    
        <!--将逻辑数据库和实际数据库进行关联-->
        <dataNode name="dn1" dataHost="master1" database="mycattest" /> 
        <!-- <dataNode name="dn2" dataHost="master2" database="fenpian" /> -->
    
        <!--mysql-1-->
        <dataHost name="master1" maxCon="1000" minCon="10" balance="1"
           writeType="0" dbType="mysql" dbDriver="native" switchType="1">
           <heartbeat>show slave status</heartbeat> 
           <!--主,用于写-->
           <writeHost host="host1" url="192.168.228.128:3306" user="will" password="123456" /> 
           <!--主2,用于读,host1 down了,自动切换为主,读写都可以-->
           <writeHost host="host3" url="192.168.228.130:3306" user="will" password="123456" />
        </dataHost> 
        <!--mysql-2-->
        <!-- <dataHost name="master2" maxCon="1000" minCon="10" balance="1"
           writeType="0" dbType="mysql" dbDriver="native">
           <heartbeat>show slave status</heartbeat> 
           主1,用于写
           <writeHost host="host2" url="192.168.137.102:3306" user="root" password="123" />
           主2,用于读,host2 down了,自动切换为主,读写都可以
           <readHost host="host4" url="192.168.137.104:3306" user="root" password="123" /> 
        </dataHost> -->
    
    </mycat:schema>

其中 

      schema name名称需要与server.xml设定的库名mycattest一致,设置数据节点dn1 

      dataHost即数据节点名称,database为真实数据库名称,即discuz的后台数据库ultrax

balance :

  • 0表示不开启读写分离,都在master上执行读写操作 
  • 1表示都参与select 
  • 2表示所有读请求随机在readhost和writehost分担 
  • 3表示所有读请求对应到readhost里去

writeType :

  • 0,所有写操作发送到配置的第一个writeHost 
  • 1,所有写操作都随机的发送到配置的writeHost 
  • 2,不执行写操作。

switchType :

  • -1,不自动切换 
  • 1,默认值,自动切换 
  • 2,基于MySQL 主从同步的状态决定是否切换 
  • 3,基于MySQL galary cluster的切换机制(适合集群)(1.4.1),心跳语句为 show status like ‘wsrep%’

writeHost和readHost分别配置对应后台的mysql主从真实用户密码

5 . 配置完成之后,重启mycat,错误日志在安装目录下的logs/wrapper.log;

     运行日志在安装目录下的logs/mycat.log

6 . 测试mycat

     使用mysql -utest -ptest -h127.0.0.1 -P8066进入mycat的数据库操作页面

  • 插入数据,测试数据能否成功进入配置的数据库中
  • 关闭主1 数据库,测试数据库操作是否能够正常进行,数据能否正常读写,查看主2 数据库的变化

7 . 可以进入mycat的管理平台进行mycat的状态查看管理(端口号默认为:9066)

    使用mysql -utest -ptest -h127.0.0.1 -P9066进入mycat的管理页面

    具体的管理操作测试参考《MyCAT管理监控命令https://blog.csdn.net/meitingbee/article/details/46530171

    linux版本安装配置mycat参考《mysql+mycat读写分离》https://blog.csdn.net/hellowidow_2020/article/details/78714241

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值