基于mycat实现mariadb读写分离
1、环境说明
mycat: 172.16.100.151
mariadb master: 172.16.100.174
mariadb slave1: 172.16.99.231
mariadb slave2: 172.16.99.143
1主2从,读写分离架构,master数据库负责写操作,2个slave数据库负载均衡读数据。
2、安装mycat服务
#解压mycat包
tar xf Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz
#安装java
yum install java-1.8.0-openjdk.x86_64 -y
#配置环境变量
echo “export PATH=/usr/local/mycat/bin:$PATH” > /etc/profile.d/mycat.sh
. /etc/profile.d/mycat.sh
#maridb master创建授权用户
grant all on . to “mycat-proxy”@“172.16.100.151” identified by “123456”;
#配置server.xml文件(自身应用信息)
vim /usr/local/mycat/conf/server.xml
#配置用户名和密码及逻辑库如下图:
#配置schema.xml文件(逻辑库、逻辑表、读写信息)
Vim /usr/local/mycat/conf/schema.xml
参数说明:
balance属性负载均衡类型,目前的取值有4种:
- balance=“0”,不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。
- balance=“1”,全部的readHost与stand by writeHost参与select语句的负载均衡。
- balance=“2”,所有读操作都随机的在writeHost、readhost上分发。
- balance=“3”,所有读请求随机的分发到wiriterHost对应的readhost执行,writerHost不负担读压力,注意balance=3只在1.4及其以后版本有,1.3没有。
writeType属性负载均衡类型,目前的取值有3种:
1.writeType=“0”, 所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties.
2.writeType=“1”,所有写操作都随机的发送到配置的writeHost,1.5以后废弃不推荐。
3.writeType=“2”,不执行写操作
switchType属性
-1 表示不自动切换
1 默认值,自动切换
2 基于MySQL主从同步的状态决定是否切换
3 基于MySQLgalarycluster的切换机制(适合集群)(1.4.1),心跳语句为show status like‘wsrep%’
dbType属性
指定后端连接的数据库类型,目前支持二进制的mysql协议,还有其他使用JDBC连接的数据库。
dbDriver属性指定连接后端数据库
Driver,目前可选的值有native和JDBC。使用native的话,因为这个值执行的是二进制的mysql协议,所以可以使用mysql和maridb。其他类型的数据库则需要使用JDBC驱动来支持。从1.6版本开始支持postgresql的native原始协议。如果使用JDBC的话需要将符合JDBC 4标准的驱动JAR包放到MYCAT\lib目录下,并检查驱动JAR包中包括如下目录结构的文件:
#启动mycat服务并登录
mycat start
#在主库与从库表中插入不一样的数据做测试,具体数据如下图:
4、测试
#查看数据结果只在两个读表中切换,实现数据库读的负载均衡。