利用MyCat实现读,写分离 有更新!

  益达MIM味

MyCat 配置读,写分离有两种形式:

  • mariadb-master负责写入,不负责读取,由mariadb-slave负责读取;
  • mariadb-master负责写入,同时与mariadb-slve仪器分摊读取的压力

如果要实现MyCat配置必须要考虑到各种的选项。本次一共要使用到如下的几台主机:

No. 主机名称 IP地址 描述
1 server-master 192.168.31.128 MariaDB服务(master)
2 server-slave 192.168.31.129 MariaDB服务(slave)
2 mycat-server-01 192.168.31.130 MyCat服务

1.【mycat-server-01】 修改schema.xml文件:

vim /usr/local/mycat/conf/schema.xml;


<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <!-- 定义一个MyCat的模式,此处定义了一个路基数据库名称TestDB --> <!-- “checkSQLschema”:描述的是当前的连接是否需要检测数据的模式 --> <!-- “sqlMaxLimit”:表示返回的最大的数据量的行数 --> <!-- “dataNode="dn1"” :该操作使用的数据节点是dn1的逻辑名称 --> <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"/> <!-- 定义个数据的操作节点,以后这个节点会进行一些苦逼哦分离使用 --> <!-- dataHost="localhost1" :定义数据节点的逻辑名称 --> <!-- database="zsl":定义数据界定啊要使用的数据库名称 --> <dataNode name="dn1" dataHost="localhost1" database="zsl" /> <!-- 定义数据节点,包括了各种逻辑项的配置 --> <dataHost name="localhost1" maxCon="1000" minCon="10" balance="2" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <!-- 配置真实 MySQL与MyCat的心跳 --> <heartbeat>select user()</heartbeat> <!-- can have multi write hosts --> <!-- 配置真实的MySQL的连接路径 --> <writeHost host="hostM1" url="192.168.31.128:3306" user="root" password="hahaha"> <readHost host="hostS1" url="192.168.31.129:3306" user="root" password="hahaha" /> </writeHost> </dataHost> </mycat:schema>

对于读写分离核心的几个选项:balacne , writeType , switchType;

  • 通过readHost读取,社会:“balance=3”;
  • 让writeHost与readHost共同分担,设置“balance=2”

2.【mycat-server-01】启动mycat服务:

/usr/local/mycat/bin/mycat console;

3.【server-*】随便找到一台具有mysql数据库的主机,登录mycat服务:

  • 登录mycat服务器:mysql -uroot -p123456 -h192.168.31.130 -P8066 -DESTDB;
  • 为了方便观察室哪一个数据库查询出来的数据,保存一条新的内容,记录主机名称:
INSERT INTO member(mid,name)VALUES('hello',@@hostname);

此时记录主机名称,而后设置不同的“blance”的内容就可以