MyCat配置读写分离

作者: 1ff5a98e5398 | 来源:发表于2018-10-27 23:53 被阅读1次

说明

配置MyCat读写分类前需要先配置MySQL的主从复制,参考我之前的文章https://www.jianshu.com/p/b3d4dce1fcb5,已经做了比较详细地讲解了。

环境

centos7、MySQL5.7、mycat1.6

配置MyCat账号密码和数据库名(server.xml)

MyCat作为数据库的中间件,对于上层应用来说,他就是一个数据库。因此需要配置数据库的用户名,密码,数据库名,以及读写权限。
下面是MyCat的默认配置(部分):


server.xml

user节点配置用户信息,详细说明如下:
user 用户配置节点
--name 登录的用户名,也就是连接Mycat的用户名
--password 登录的密码,也就是连接Mycat的密码
--schemas 数据库名,这里会和schema.xml中的配置关联,多个用逗号分开,例如需要这个用户需要管理两个数据库db1,db2,则配置db1,dbs
我这里修改如下(只需要改动user节点信息即可):

<user name="root">
        <property name="password">123456</property>
        <property name="schemas">db_test</property>
</user>

在 schema.xml 文件中配置读写分离

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

        <!-- 数据库配置,与server.xml中的数据库对应 -->
    <schema name="db_test" checkSQLschema="false" sqlMaxLimit="100" dataNode="db_node"></schema>

    <!-- 分片配置 -->
    <dataNode name="db_node" dataHost="db_host" database="db_test" />

        <!-- 物理数据库配置 -->
        <dataHost name="db_host" maxCon="1000" minCon="10" balance="3"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <!-- can have multi write hosts -->
                <writeHost host="hostM1" url="mysql_master:3306" user="root"
                                   password="apple">
                        <!-- can have multi read hosts -->
                        <readHost host="hostS2" url="mysql_slaver:3306" user="root" password="apple" />
                </writeHost>
        </dataHost>

</mycat:schema>

这里有几个配置需要说明下:

sqlMaxLimit配置默认查询数量
database为真实数据库名

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 不负担读压力,注意 balance=3 只在 1.4 及其以后版本有, 1.3 没有。

writeType="0", 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties .
writeType="1",所有写操作都随机的发送到配置的 writeHost。
writeType="2",没实现。

-1 表示不自动切换
1 默认值,自动切换
2 基于MySQL 主从同步的状态决定是否切换

启动mycat

在mycat所在的服务器启动

./mycat start
mysql -uroot -p123456 -P8066 -h127.0.0.1

#stop
./mycat stop

连上之后跟普通的MySQL一模一样

使用Navicat连接mycat

在外网 (相对虚拟机而言)访问mycat,需要配置ip白名单。
配置文件在server.xml中

<!-- 全局SQL防火墙设置 -->
<firewall>
        <whitehost>
              <host host="192.168.74.1" user="root"/>
              <host host="127.0.0.1" user="root"/>
        </whitehost>
       <blacklist check="false">
       </blacklist>
l</firewall>

这里192.168.74.1为我本机相对虚拟机的ip地址,这里要说明下,如果配置了ip白名单,则127.0.0.1也是要加上才能本地访问的,不然会被拒绝掉。


示例

这里的common是我本地在host文件里设置了的,映射到mycat所在虚拟机的ip。
这里可以通过在mycat中插入数据检测是否主从复制配置成功,通过修改从数据库的数据来验证是否读写进行分离。


结果
可以看到,mycat读取的是从库的数据

相关文章

  • Mycat 实现 MySQL 读写分离

    Mycat 实现 MySQL 读写分离 目前MyCat配置Mysql 读写分离的文章虽然很多,但是看起来比较杂乱,...

  • mycat读写分离

    配置读写分离注意:由于系统已经配置好Java环境,我就没配置,使用mycat需要配置Java环境1.下载mycat...

  • day14 MyCAT--分布式及优化

    六、配置文件模板说明(读写分离) 七 、配置文件--读写分离+高可用 八、垂直分库 九、垂直分表 十、 MyCAT...

  • Mysql读写分离

    常见读写分离方式 MySQL-Proxy读写分离 Amoeba读写分离 Mycat读写分离 基于程序读写分离 My...

  • MyCat配置读写分离

    说明 配置MyCat读写分类前需要先配置MySQL的主从复制,参考我之前的文章https://www.jiansh...

  • myCat MyCat读写分离多主库配置切换

    起因:学完mysql,了解一下mycat,对数据相关知识进一步了解。 1. MyCat读写分离多主库配置切换 读写...

  • Mycat 实现 MySQL 读写分离

    Mycat 实现 MySQL 读写分离 环境:CentOS 6.8 实验拓扑: mycat: 192.168.0....

  • 基于mycat实现读写分离(一主一从)

    mycat 读写分离是基于mysql 的主从复制或者集群。 一、server.xml相关配置 二、schema.x...

  • mycat读写分离 初体验

    公司项目要做数据库读写分离,直接代码撸读写分离工作量太庞大了,还是考虑用mycat中间件来做。 下载 mycat官...

  • mycat 读写分离

    准备,安装两个mysql数据库,并且配置主从复制,我主是3306端口,从是3307端口,ip都为192.168.6...

网友评论

    本文标题:MyCat配置读写分离

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