搭建

mysql-master: 10.0.0.129
mysql-slave: 10.0.0.40
mycat: 10.0.0.129

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#mycat需要jdk环境,需提前配置
[root@instance-20211030-1626 mycat]# java -version
java version "1.8.0_301"
Java(TM) SE Runtime Environment (build 1.8.0_301-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.301-b09, mixed mode)
#mycat 稳定版链接 http://dl.mycat.org.cn/1.6.7.6/
conf/server.xml:对外提供的用户等的设置
conf/schema.xml:配置后端数据库服务器相关信息
server.xml文件(这里修改TEST数据库)
## schema.xml配置如下
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
	<schema name="test1" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
	</schema>
	<dataNode name="dn1" dataHost="localhost1" database="test1" />
	<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
			  writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1"  slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
		<writeHost host="hostM1" url="jdbc:mysql://10.0.0.129:3306" user="root"
			password="*********">
			<readHost host="hostS2" url="jdbc:mysql://10.0.0.40:3306"
				user="root" password="******" />
		</writeHost>
	</dataHost>
</mycat:schema>
#server.xml
#修改数据库名称与实际后段数据库名称相对应,不然使用Navicat查询会报错

验证

1
2
3
4
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 不负担读压力