Mycat 双主双从实现读写分离

上一篇博客我们已经实现了 mysql 数据库的双主双从的搭建,今天应粉丝的要求,用mycat 实现数据库的读写分离。

角色 ip 地址 简称
Master1 192.168.183.134 134 主
Slave1 192.168.183.133 133 从
Master2 192.168.183.128 128 主,mycat 服务器
Slave2 192.168.183.135 135 从

Mycat 双主双从实现读写分离_第1张图片
修改schema.xml配置文件,直接删除 rm -rf schema.xml然后编辑 vi schema.xml 复制下面内容即可,根据自己的服务器进行修改。

"1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
"http://io.mycat/">
 
	"TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
	</schema>
	"dn1" dataHost="host1" database="testdb" />
	"host1" maxCon="1000" minCon="10" balance="1"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
		select user()</heartbeat>
		<!-- can have multi write hosts -->
		"hostM1" url="192.168.183.128:3306" user="root"
				   password="root">
			<!-- can have multi read hosts -->
			"hostS1" url="192.168.183.135:3306" user="root" password="root" />
		</writeHost>
                "hostM2" url="192.168.183.134:3306" user="root"
                                   password="root">
                        <!-- can have multi read hosts -->
                        "hostS2" url="192.168.183.133:3306" user="root" password="root" />
        </writeHost>
	</dataHost>
</mycat:schema>

定位到bin目录,启动mycat ./mycat console
Mycat 双主双从实现读写分离_第2张图片

数据库负责均衡策略 balance="1"

balance=“0”, 不开启读写分离机制, 所有读操作都发送到当前可用的 writeHost 上。
balance=“1”,全部的 readHost 与 stand by writeHost 参与 select
语句的负载均衡,简单的说,当双主双从模式(M1->S1, M2->S2,并且 M1 与 M2 互为主备),正常情况下, M2,S1,S2 都参与 select 语句的负载均衡。
balance=“2”,所有读操作都随机的在 writeHost、 readhost 上分发。
balance=“3”,所有读请求随机的分发到 readhost 执行, writerHost 不负担读压力写策略:

数据库的读写策略:writeType="0"

writeType=“0”: 所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个
writeType=“1”,所有写操作都随机的发送到配置的 writeHost, 1.5 以后废弃不推荐
writeHost,重新启动后以切换后的为准,切换记录在配置文件中:dnindex.properties 。

数据库主备切换策略 switchType="1"

1 默认值,自动切换。
-1 表示不自动切换
2 基于 MySQL 主从同步的状态决定是否切换。

我们在 master 1 128主服务器上插入一条数据

明天完成,出了点问题,mycat 只能远程本地的mysql,无法远程其它服务器的mysql

你可能感兴趣的:(Mycat,MySQL)