MyCat读写分离-笔记(四)

概述mysql

  Mycat可以实现数据库读写分离,不能实现主从同步,数据库的备份仍是基于数据库层面的。Mycat只是数据库的中间件;sql

Mycat读写分离配置数据库

     在MySQL中间件出现以前,对于MySQL主从集群,若是要实现其读写分离,通常是在程序端实现,这样就带来一个问题,即数据库和程序的耦合度过高,若是我数据库的地址发生改变了,那么我程序端也要进行相应的修改,若是数据库不当心挂掉了,则同时也意味着程序的不可用,而这对不少应用来讲,并不能接受。负载均衡

引入MySQL中间件能很好的对程序端和数据库进行解耦,这样,程序端只需关注数据库中间件的地址,而无需知晓底层数据库是如何提供服务。测试

做为当前煊赫一时的MySQL中间件,MyCAT实现MySQL主从集群的读写分离自是应有之义,其配置也至关简单。url

在这里,我用三个实例组成MySQL主从集群,来验证MyCAT的读写分离功能,其实,一主一从就能够知足,之因此用三个,是为了验证MyCAT的分片功能。spa

集群组成以下:code

角色             主机名                      主机IPserver

master         mysql-server1          192.168.244.145xml

slave            mysql-server2          192.168.244.146

slave            mysql-server3          192.168.244.144

在这里,仍是使用Travelrecord表进行测试。

首先编辑MyCAT的配置文件schema.xml,关于dataHost的配置信息以下:

<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
                writeType="0" dbType="mysql" dbDriver="native" switchType="-1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <!-- can have multi write hosts -->
                <writeHost host="hostM1" url="localhost:3306" user="root"
                        password="123456">
                </writeHost>
                <writeHost host="hostS1" url="192.168.244.146:3306" user="root"
                        password="123456" />
                <writeHost host="hostS2" url="192.168.244.144:3306" user="root"                      
                        password="123456" />
</dataHost>

这里面,有两个参数须要注意,balance和 switchType。

其中,balance指的负载均衡类型,目前的取值有4种:

1. balance="0", 不开启读写分离机制,全部读操做都发送到当前可用的writeHost上。

2. balance="1",所有的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,而且M1与 M2互为主备),正常状况下,M2,S1,S2都参与select语句的负载均衡。

3. balance="2",全部读操做都随机的在writeHost、readhost上分发。

4. balance="3",全部读请求随机的分发到wiriterHost对应的readhost执行,writerHost不负担读压力

switchType指的是切换的模式,目前的取值也有4种:

1. switchType='-1' 表示不自动切换

2. switchType='1' 默认值,表示自动切换

3. switchType='2' 基于MySQL主从同步的状态决定是否切换,心跳语句为 show slave status

4. switchType='3'基于MySQL galary cluster的切换机制(适合集群)(1.4.1),心跳语句为 show status like 'wsrep%'。

相关文章
相关标签/搜索