通过mycat实现mysql的读写分离

Posted mastersword

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过mycat实现mysql的读写分离相关的知识,希望对你有一定的参考价值。

mysql的主从配置沿用上一篇博客的配置:https://www.cnblogs.com/MasterSword/p/9434169.html

mycat下载地址:http://www.mycat.io/

试验版本:Mycat-server-1.6-release 

# cd /usr/local
# mv ~/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz /usr/local
# tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
# cd /usr/local/mycat/conf/
# vim server.xml 查看mycat用户的默认配置

<!-- mycat的默认用户配置,保持不变即可 -->
<user name="root">
  <property name="password">123456</property>
  <property name="schemas">TESTDB</property>
</user>

  # vim schema.xml 修改schema配置读写分离

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
  <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
    <!-- 设置物理表 -->
    <table name="student" dataNode="dn1" />
  </schema>
  <!-- 设置物理库 -->
  <dataNode name="dn1" dataHost="localhost1" database="test" />  
    <!-- balance=1设置为读写分离 -->
    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
    <heartbeat>select user()</heartbeat>
    <!-- 读库配置 -->
    <writeHost host="hostM1" url="xxx.xxx.xxx.xxx:3306" user="root" password="xxxxxx">
      <!-- 读库配置,可配置多个读库 -->
      <readHost host="hostS2" url="xxx.xxx.xxx.xxx:3316" user="root" password="xxxxxx" />
    </writeHost>
  </dataHost>
</mycat:schema>

# cd ../bin
# ./mycat start 启动mycat
# ps -aux | grep mycat 查看mycat是否启动成功

在客户端新建一个链接到mycat的数据库连接,用户名密码为server.xml中配置的用户

技术分享图片  

连接中库为TESTDB,也是在server.xm中配置的

技术分享图片

下面验证读写分离

mycat:技术分享图片

写库:技术分享图片

读库:技术分享图片

修改读库的数据:技术分享图片

mycat中的数据和读库数据一致:技术分享图片

停止读库的服务:技术分享图片

mycat插入一条数据:技术分享图片

写库中存在插入的数据:技术分享图片

 

至此通过mycat实现mysql的读写分离配置成功。

ps.mycat最大的功能在于对数据库分片的处理,如果有机会,以后会进行相关的试验。

 



























以上是关于通过mycat实现mysql的读写分离的主要内容,如果未能解决你的问题,请参考以下文章

通过mycat实现mysql的读写分离

Mycat 实现 MySQL 主从架构的读写分离

mycat系列二Docker安装mycat并实现MySQL的读写分离

基于Mycat实现的mysql的读写分离

mycat实现mysql读写分离,热切换,集群

mycat实现mysql读写分离,热切换,集群