mycat读写分离

MyCat 实现读写分离,是为了更好的提高数据库性能,优化数据库查询。

首先mycat的读写分离基于mysql主从集群

1、mysql主从配置

三台机器  其中190是主,其余俩是节点

192.168.0.190   master

192.168.0.162   slave

192.168.0.163   slave

mysql 的主从集群配置详情参考:http://blog.csdn.net/linlinv3/article/details/51783976  ,这里就不做讲解了。

2、mycat配置文件修改

mycat 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="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
  5.           <table name="employee" rule="auto-sharding-long" dataNode="dn1" />
  6. schema>
  7. <dataNode name="dn1" dataHost="localhost1" database="db1" />
  8.            <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
  9.                writeType="0" dbType="mysql" dbDriver="native" switchType="-1" slaveThreshold="100">
  10.                <heartbeat>select user()heartbeat>
  11.                <writeHost host="hostM1" url="192.168.0.190:3306" user="root" password="fulong">    
  12.                writeHost>
  13.                <writeHost host="hostS1" url="192.168.0.162:3306" user="root" password="fulong" />
  14.                <writeHost host="hostS2" url="192.168.0.163:3306" user="root" password="fulong" />
  15. dataHost>
  16. mycat:schema>

server.xml 为了简单起见,用的mycat的原始配置,不一一列出

3、启动mycat并登陆

mycat安装部署可以参考:http://blog.csdn.net/linlinv3/article/details/51776059

 
  
  1. lin@lin190:~$ mysql -utest -ptest -h127.0.0.1 -P8066 -DTESTDB

创建数据库

 
  
  1. mysql> create database db1;
  2. Query OK, 1 row affected (0.00 sec)
创建表插入数据
 
  
  1. CREATE TABLE  employee  ( ID  int(3) NOT NULL DEFAULT  0 ,  PRIMARY KEY ( ID ) );
  2. insert into  employee (id  ) values (1);

查询数据

 
   
  1. select * from employee

4、查看mysql的日志

通过日志记录可以看到 那个表进行的写操作,哪个进行的读操作。

或者,停掉190mysql服务。此时在执行insert语句 就不能执行,但是依旧可以执行select语句,也可以说明了已经读写分离。


管理端口9066

 
  
  1. mysql -utest -ptest -h127.0.0.1 -P9066 -DTESTDB  

查看管理命令:

 
  
  1. mysql> show @@help;

错误:

 
  
  1. ERROR 1105 (HY000): backend connect: ConnectionException [code=1129, msg=Host 'lin190.lin' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts']

原因:

同一个ip在短时间内产生太多(超过mysql数据库max_connection_errors的最大值)中断的数据库连接而导致的阻塞;

解决办法:

set global max_connect_errors = 1000;

或者

/usr/bin/mysqladmin flush-hosts -h192.168.0.190 -P3306 -uroot -pfulong;

你可能感兴趣的:(MyCat)