Mycat配置双主双从以及读写分离高可用
Posted 爱上口袋的天空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mycat配置双主双从以及读写分离高可用相关的知识,希望对你有一定的参考价值。
1、修改mycat的schema.xml文件
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="M_SPDB_PZEX" checkSQLschema="false" sqlMaxLimit="100" randomDataNode="dn1" dataNode="dn1"> </schema> <dataNode name="dn1" dataHost="host1" database="spdb_pzex" /> <dataHost name="host1" 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="192.168.56.20:3306" user="dhapp" password="xxxxxx"> <!-- can have multi read hosts --> <readHost host="hostS1" url="192.168.56.21:3306" user="dhapp" password="xxxxxx"></readHost> </writeHost> <!-- can have multi write hosts --> <writeHost host="hostM2" url="192.168.56.22:3306" user="dhapp" password="xxxxxx"> <!-- can have multi read hosts --> <readHost host="hostS2" url="192.168.56.23:3306" user="dhapp" password="xxxxxx"></readHost> </writeHost> </dataHost> </mycat:schema>
balance="1":
全部的readHost与stand by writeHost参与select语句的负载均衡。
writeType="0":
所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个
writeType="1",
所有写操作都随机的发送到配置的 writeHost,1.5 以后废弃不推荐
writeHost,
重新启动后以切换后的为准,切换记录在配置文件中:dnindex.properties 。
switchType="1":
- 1 默认值,自动切换。
- -1 表示不自动切换
- 2 基于 MySQL 主从同步的状态决定是否切换。
注意:上面数据库的用户要提前建好
2、启动 Mycat验证读写分离
1、先启动mycat
2、首先创建一张临时表test
在写主机Master1数据库表mytbl中插入带系统变量数据,造成主从数据不一致
INSERT INTO mytbl VALUES(1,@@hostname);查询数据:
由上面的查询结果可以发现出现了3个不同的name,我们看一下分别属于哪个数据库节点:
Master1节点:
Master2节点:
Slave1节点:
Slave2节点:
可以发现出除了Master2其他的都可以查询出来,说明现在两个主节点Master2是真正的主机,Master1是备机,Master1、Master2 互做备机,负责写的主机宕机,备机 切换负责写操作,保证数据库读写分离高可用性。
3、测试高可用
1、下面我们先将Master2节点停掉(因为现在是主机)
2、 我们继续向mysql集群中插入数据试试
可以发现是没有问题的
3、下面我们再将Master2启动起来
发现可以查询到Master2、Slave1、Slave2节点的数据了,刚刚因为Master2停掉,那么Slave2就无法同步数据了,因为Master1只和Slave1同步,所以只能查询到Slave1节点的数据。
以上是关于Mycat配置双主双从以及读写分离高可用的主要内容,如果未能解决你的问题,请参考以下文章