zoukankan      html  css  js  c++  java
  • Mycat实现Mysql主从读写分离

    一、概述

    关于Mycat的原理网上有很多,这里不再详述,对于我来说Mycat的功能主要有如下几种:

    1.Mysql主从的读写分离

    2.Mysql大表分片

    3.其他数据库例如Oracle,MSSQL,DB2等的读写分离和分片。

    之所以第3点单独列出来只是因为它不常用,而且使用的JDBC,连接Mysql则是直接使用Mysql协议。

    对于Mycat的分片功能,由于遇到了几个很严重的BUG,同时分片带来的一系列并发问题比较繁杂,因此测试之后放弃了,这里只讨论读写分离。

    二、安装配置

    1.安装JDK(要求至少JDK1.7以上)

    tar -zxvf jdk-7u80-linux-x64.tar.gz
    mv jdk1.7.0_80 /usr/local
    vi /etc/profile
    添加:
    export JAVA_HOME=/usr/local/jdk1.7.0_80
    export PATH=$JAVA_HOME/bin:$PATH
    之后source /etc/profile生效,并用java -version检查新的jdk版本。
    

    2.安装Mycat

    #useradd mycat 
    #passwd mycat --设置密码
    
    #tar xvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
    #mv mycat/ /usr/local/
    
    #chown -R mycat.mycat /usr/local/mycat/
    
    #vi /usr/local/mycat/conf/wrapper.conf  
    wrapper.java.command=%JAVA_HOME%/bin/java  
    

    3.文件说明

    如上我们将mycat安装到了/usr/local/mycat目录下,我们需要关注的只有2个文件夹conf和logs文件夹:

    1)logs文件下只需要关注wrapper.log,这是mycat的日志

    2)conf文件下只需要关注server.xml和schema.xml,其他的大多是分片相关的,本文不讨论。

    三、读写分离配置

    1)当前环境说明:

    Mysql 主:mysql01 192.168.20.68

             从:mysql02 192.168.20.69

    Mycat安装在192.168.20.68上,我们的目的是实现一个名叫leo的库(也叫schema)的读写分离。

    2)server.xml配置

    关于Mycat性能调优的大多数参数都在此文件中,我们暂不关心,配置读写分离此文件只需要改动如下部分:

    我们设置了mycat的用户名和密码是root和123456,此账号密码就是外部程序连接用的可以随意设置,下边的user/user只读用户是默认的可以删掉,不删的话修改下schema即可。

    3)schema.xml

    此文件就是用于具体配置读写分离的配置文件,废话不多说直接贴出具体的配置文件截图,其他地方无需修改。

    图中设置了1个逻辑节点node1,这个node1对应逻辑主机host1,host1配置了writehost=mysql01,readhost=mysql02,真实的数据库连接账号密码leo/leo也是在这里才出现的。

    在如上的xml文件中我们只需要关注4个标签,schema/table/dataNode/dataHost, writehost是dataHost的子标签,readhost是writehost的子标签。

    其中schema定义了要读写分离的库,最好是真实库名。table定义了表信息,只有分片才用到因此这里直接全部注释。

    dataNode定义了逻辑主机dataHost和库名,这里库名必须是真实的。dataHost定义了逻辑主机对应的物理主机,可以有多个写主机,每个写host可以对应多个读host。

    writehost和readhost则包含具体的数据库连接信息。

    dbDriver表示使用mysql协议,其他数据库选择JDBC。至于其他参数这里不做详细解释,网上很多。

    需要注意的这里只有url部分和账号密码部分包含真正的DB连接信息,其他的诸如dbnode,dbhost,database,host等属性全部是虚拟的,只是为了便于识别才写成真实的主机名和库。

    4)读写分离测试

    启动mycat:/usr/local/mycat/bin/mycat start

    连接mycat:mysql -uroot -p123456 -P8066 -h127.0.0.1

    Mycat自动连到的是从库,但是有DML操作就会转发到主库,此账户的权限等同于你在writehost和readhost中配置的账户权限。

  • 相关阅读:
    51nod——1174 区间中最大的数(ST)
    「学习笔记」Ubuntu 下手动安装 Emacs
    [学习笔记] 2-SAT
    「解题报告」 [JXOI2017]数列 (DP)
    「解题报告」 [UOJ#62] 怎样跑得更快 (莫比乌斯反演)
    「学习笔记」杜教筛
    「学习笔记」Dirichlet卷积 莫比乌斯函数 莫比乌斯反演
    「学习笔记」向量外积(叉乘)
    网络流24题
    「解题报告」[网络流24题] 16.数字梯形问题 (最大费用最大流)
  • 原文地址:https://www.cnblogs.com/leohahah/p/8386128.html
Copyright © 2011-2022 走看看