mycat实现mysql的读写分离

Posted 从零开始的linux

tags:

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

环境

ip 角色 端口
128.0.0.101 master 3306
128.0.0.102 slave 3306
128.0.0.103 mycat 8066

前提两台机器已经做好主从

配置schema.xml

 
   
   
 
  1. <?xml version="1.0"?>

  2. <!DOCTYPE mycat:schema SYSTEM "schema.dtd">

  3. <mycat:schema xmlns:mycat="http://org.opencloudb/">

  4. <schema name="alex_schema1" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema>

  5. <schema name="alex_schema2" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn2"></schema>

  6.  <dataNode name="dn1" dataHost="localhost1" database="alex" />

  7.  <dataNode name="dn2" dataHost="localhost1" database="alex11" />

  8. <dataHost name="localhost1" maxCon="500" minCon="20" balance="1"

  9.                writeType="0" dbType="mysql" dbDriver="native" switchType="2"  slaveThreshold="100">

  10.                <heartbeat>show slave status</heartbeat>

  11.                <writeHost host="hostM1" url="128.0.0.101:3306" user="root"

  12.                        password="123456" />

  13.                <writeHost host="hostS1" url="128.0.0.102:3306" user="root"

  14.                        password="123456" />

  15.        </dataHost>

  16. </mycat:schema>

配置server.xml

 
   
   
 
  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <!DOCTYPE mycat:server SYSTEM "server.dtd">

  3. <mycat:server xmlns:mycat="http://org.opencloudb/">

  4.        <system>

  5.        <property name="defaultSqlParser">druidparser</property>

  6.        <property name="charset">utf8mb4</property>

  7.         </system>

  8.        <user name="user2">

  9.                <property name="password">password</property>

  10.                <property name="schemas">alex_schema1,alex_schema2</property>

  11.        </user>

  12.        <!-- 用户3,只读权限-->

  13.        <user name="user3">

  14.                <property name="password">password</property>

  15.                <property name="schemas">alex_schema1,alex_schema2</property>

  16.                <property name="readOnly">true</property>

  17.        </user>

  18. </mycat:server>

启动
 
   
   
 
  1. mycat start

  2. mysql -uuser2 -password -h128.0.0.103 -P8066

读取数据库的log
 
   
   
 
  1. 02/11 13:50:15.573  DEBUG [$_NIOREACTOR-0-RW] (PhysicalDBPool.java:431) -select read source hostS1 for dataHost:localhost1

  2. #看到是conghosts1上面读写的说明是slave节点

写入数据库的log
 
   
   
 
  1. 02/11 13:57:37.387  DEBUG [$_NIOREACTOR-0-RW] (NonBlockingSession.java:230) -release connection MySQLConnection [id=1, lastTime=1518328657366, schema=alex11, old shema=alex11, borrowed=true, fromSlaveDB=false, threadId=63, charset=utf8, txIsolation=3, autocommit=true, attachment=dn2{INSERT INTO `alex11`.`ee` (`ss`, `aa`) VALUES ('哈哈哈ha', '111111')}, respHandler=SingleNodeHandler [node=dn2{INSERT INTO `alex11`.`ee` (`ss`, `aa`) VALUES ('哈哈哈ha', '111111')}, packetId=0], host=128.0.0.101, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=true]

  2. #看到是从host=128.0.0.101上面写入的说明是master节点

完成


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

基于Mycat实现读写分离

MyCAT实现MySQL的读写分离

MySQL(18) 通过Docker搭建Mycat实现读写分离

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

Mycat实现Mysql主从读写分离

mycat实现MySQL读写分离