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

2022-01-28  本文已影响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

2.配置环境变量

export PATH=/home/mycat/bin:$PATH

3.修改MyCat配置文件

      <!--读写权限管理员账户-->
        <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>
<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

上一篇下一篇

猜你喜欢

热点阅读