Mysql配合mycat实现读写分离

21世纪世界快速发展的一个新的纪元,每一天人们都会生产很多数据,而这些数据肯定是很大的财富,也是很主要的,但是要想存储和读取这些数据就变得有些棘手,这时候我们就要立足于数据库端的主从复制上开始思考了,于是就产生了mycat。

  1. 什么时候要读写分离
    数据库不一定要读写分离,如果程序使用的数据库比较多时,而跟新少,查询多的情况下会考虑使用,利用数据库 主从同步。可以减少数据库压力,提高性能。

  2. 什么是mycat?
    mycat是一个开源的分布式数据库系统,经常被称之为数据库中间件,可以通过他实现读写分离和分库表的管理
    mycat发展到目前的版本,已经不是一个单纯的mysql代理了,他的后端可以支持MYSQL,SQL Server,Oracle,DB2
    ,PostgreSQL等主流数据库,也会支持MongoDB这种新型NoSQL方式的存储

    简而言之:就是阿里巴巴出产的开源免费的一款数据库中间件(就是后台程序与数据库之间的一个软件产品)

  3. mycat目录
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

  4. mycat实现读写分离
    1)编辑mycat配置文件server.xml

    <!--表示mycat的登录用户名-->
    <user name="test">
          <!--表示mycat的登录密码-->
           <property name="password">test</property>
         <!--表示mycat的逻辑数据库名称,可以自定义-->
           <property name="schemas">TESTDB</property>
    </user>
    <user name="user">
          <property name="password">user</property>
           <property name="schemas">TESTDB</property>
           <property name="readOnly">true</property>
    </user>
    

    2)编辑mycat配置文件schema.xml

    <!--TESTDB表示mycat的逻辑数据库名称
     当schema节点没有子节点table的时候,一定要有dataNode属性存在(指向mysql真实数据库),
    -->
    <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema>
    <!--指定master的数据库db1-->
    <dataNode name="dn1" dataHost="192.168.0.4" database="db1" />
    <!--指定mastet的ip -->
    <dataHost name="192.168.0.4" maxCon="1000" minCon="10" balance="3" 
    writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
            <!--表示mysql的心跳状态-->
            <heartbeat>select user()</heartbeat>
            <!-- master负责写 -->
            <writeHost host="hostM1" url="192.168.0.4:3306" user="root" password="admin">
    	         <!--slave负责读-->
    	         <readHost host="hostS2" url="192.168.0.5:3306" user="root" password="admin" />
            </writeHost>
    </dataHost>
    

    注意 dataHost节点的下面三个属性

    balance, switchType, writeType

    balance=“0”, 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。

    balance=“1”,全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡。

    扫描二维码关注公众号,回复: 5382576 查看本文章

    balance=“2”,所有读操作都随机的在writeHost、readhost上分发。

    balance=“3”,所有读请求随机的分发到writeHost下的readhost执行,writeHost不负担读压力

    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%‘。

    3)进入到bin目录下以管理员权限dos启动mycat: startup_nowrap.bat
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_40836501/article/details/88061183