Mysql基础知识,读写分离(Mycat实现)

1. 原理

MySQL的主从复制和MySQL的读写分离两者有着紧密联系,首先部署主从复制,只有主从复制完了,才能在此基础上进行数据的读写分离。
  简单来说,读写分离就是只在主服务器上写,只在从服务器上读,基本的原理是让主数据库处理事务性查询,而从数据库处理select查询,数据库复制被用来把事务性查询导致的改变更新同步到集群中的从数据库。
  在高并发下,如图所示那样,mysql的读写分离能更好的提升程序的性能. 在这里插入图片描述

2.Mysql读写分离

2.1 Mycat的介绍

MyCAT是mysql中间件,前身是阿里大名鼎鼎的Cobar,Cobar在开源了一段时间后,不了了之。于是MyCAT扛起了这面大旗,在大数据时代,其重要性愈发彰显。而且现在相比于其他的mysql中间件来说,他的社区非常的活跃,而且很多生产环境中在使用.

2.2 Mycat的使用

  1. 安装和解压

    //先下载,我这里是下载的1.6版本
    wget https://raw.githubusercontent.com/MyCATApache/Mycat-download/master/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
    //解压到/usr/local/目录下
    tar zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/
    
  2. 其次查看mycat的user信息vim /usr/local/mycat/conf/server.xml
    在这里插入图片描述
    这边的namepassword主要是为了后期连接mycat.(mycat会代理并连接,操作mysql,这也就是我们所说的中间件功能),默认端口是:8066(数据连接端口) 和9066(管理操作端口)

  3. 完后配置mycat的schema信息vim /usr/local/mycat/conf/schema.xml

    <?xml version="1.0"?>
    <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
    <mycat:schema xmlns:mycat="http://io.mycat/">
    	<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
        <!-- 这里不配置,代表所有的表分片到dn1节点-->
     </schema>
    	<dataNode name="dn1" dataHost="localhost1" database="taiyuan" />
    	<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
              writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <!-- can have multi write hosts -->
        <writeHost host="hostM1" url="118.24.205.235:3306" user="taiyuan"  password="YZi2hNCSC3LwCy">
            <!-- can have multi read hosts -->
            <readHost host="hostS2" url="106.13.94.55:3306" user="taiyuan" password="DiNx7RT4dPciiD" />
        </writeHost>
    </dataHost>
    </mycat:schema>
    

    其中,balance指的读写分离类型,目前的取值有4种:

    • 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不负担读压力

    switchType指的是切换的模式,目前的取值也有4种:

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

    writeType 属性负载均衡类型,目前的取值有 3 种:

    • writeType=”0”, 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个writeHost, 重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties
    • writeType=”1”,所有写操作都随机的发送到配置的 writeHost
    • writeType=“2”,不执行写操作
  4. 最后启动mycat,常用命令有

  • /usr/local/mycat/bin/mycat start 启动
  • /usr/local/mycat/bin/mycat stop 停止
  • /usr/local/mycat/bin/mycat restart 重启
  • /usr/local/mycat/bin/mycat pause 暂停
  • /usr/local/mycat/bin/mycat status 查看启动状态
  1. 之后使用Navicat for MySQL连接我们的mycat(user/password是:root/123456 端口:8066)
    在这里插入图片描述
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值