美文网首页
MyCat+MySQL实现高可用读写分离(实测记录)

MyCat+MySQL实现高可用读写分离(实测记录)

作者: 忧郁的冥 | 来源:发表于2022-01-28 16:07 被阅读0次

    一.测试环境

    创建两台CentOS7虚机,部署两套MySQL数据库配置主从同步,直接在主库服务器安装mycat进行测试。

    主库:192.168.216.128 port:3306
    从库:192.168.216.129 port:3306

    1.下载MyCat安装文件上传至主库服务器M

    Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
    百度网盘:https://pan.baidu.com/s/1Xeyno8pRomT__AvmzcvKnQ
    提取码:hmhc

    • 上传成功后解压至/home目录下
      tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

    2.配置环境变量

    • vim /etc/profile
    export PATH=/home/mycat/bin:$PATH
    
    • source /etc/profile

    3.修改MyCat配置文件

    • vim /home/mycat/conf/server.xml
          <!--读写权限管理员账户-->
            <user name="root">
                    <property name="password">123456</property>
                    <property name="schemas">test</property>
            </user>
         <!--只读权限普通账户-->
            <user name="user">
                    <property name="password">user123</property>
                    <property name="schemas">test</property>
                    <property name="readOnly">true</property>
            </user>
    
    • vim /home/mycat/conf/schems.xml
    <mycat:schema xmlns:mycat="http://io.mycat/">
            <!-- 定义一个MyCat的模式,逻辑数据库名称TestDB -->
            <!-- “checkSQLschema”:描述的是当前的连接是否需要检测数据库的模式 -->
            <!-- “sqlMaxLimit”:表示返回的最大的数据量的行数 -->
            <!-- “dataNode="dn1"”:该操作使用的数据节点是dn1的逻辑名称 -->
            <schema name="test" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"/>
            <!-- 定义个数据的操作节点,以后这个节点会进行一些库表分离使用 -->
            <!-- “dataHost="localhost1"”:定义数据节点的逻辑名称 -->
            <!-- “database="test"”:定义数据节点要使用的数据库名称 -->
            <dataNode name="dn1" dataHost="localhost1" database="test" />
            <!-- 定义数据节点,包括了各种逻辑项的配置 -->
            <dataHost name="test" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <!-- 配置真实MySQL与MyCat的心跳 -->
                <heartbeat>select user()</heartbeat>
                <!-- 配置真实的MySQL的连接路径 -->
                <writeHost host="hostM1" url="192.168.216.128:3306" user="root" password="123456">
                    <readHost host="hostS1" url="192.168.216.129:3306" user="root" password="123456"/>
                </writeHost>
                <writeHost host="hostM2" url="192.168.216.129:3306" user="root" password="123456">
                </writeHost>
            </dataHost>
    </mycat:schema>
    

    4.启动MyCat : mycat start

    二.关键配置项

    mycat/conf目录下 MyCat的核心配置文件schems.xml

    属性 状态 说明
    balance 表示负载模式
    balance 0 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。
    balance 1 全部的readHost与stand by writeHost参与select语句的负载均衡。简单的说当双主双从模式(M1->S1,M2->S2,并且M1与M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡。
    balance 2 所有读操作都随机的在writeHost、readhost上分发。
    balance 3 所有读请求随机的分发到wiriterHost对应的readhost执行,writerHost不负担读压力
    writeType 表示写模式
    writeType 0 所有的操作发送到配置的第一个writehost
    writeType 1 随机发送到配置的所有writehost
    writeType 2 不执行写操作
    switchType 指的是切换模式,目前的取值也有4种。
    switchType -1 表示不自动切换
    switchType 1 默认值,表示自动切换
    switchType 2 基于MySQL主从同步的状态决定是否切换,心跳语句为show slave status
    switchType 3 基于MySQL galary cluster的切换机制(适合集群)(1.4.1),心跳语句为show status like ‘wsrep%‘。

    三.测试记录

    采用 banlance =1,writeType = 0 ,switchType = 1的配置模式

    1.使主库宕机 service mysql stop;
    结果:读写转移至从库,mycat正常连接。
    2.恢复主库运行service mysql start
    结果:mycat依旧采用从库进行读写未重新接入主库

    四.参考

    配置属性详解-https://www.cnblogs.com/alan319/p/10556995.html

    相关文章

      网友评论

          本文标题:MyCat+MySQL实现高可用读写分离(实测记录)

          本文链接:https://www.haomeiwen.com/subject/fgrahrtx.html