引用的原文:https://blog.csdn.net/qq_35992900/article/details/80673889
mycat读写分离简单架构图:
这厚厚的水印老茧。。。

安装
#安装Java环境(mycat基于java)
yum install java-1.8.0-openjdk.x86_64
# 下载mycat
wget http://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz
# 解压
tar -zxvf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz
# 剪切到/usr/local下
mv mycat /usr/local/
# 创建专门运行mycat账号
adduser mycat
# 切换到mycat文件夹路径下
cd /usr/local
# 将文件权限赋给mycat账号
chown mycat:mycat -R mycat
#配置环境变量并添加 export JAVA_HOME=/usr export MYCAT_HOME=/usr/local/mycat(如下图所示)
vim /etc/profile

# 刷新环境变量文件
source /etc/profile
# 切换mycat用户
su mycat#切换目录
cd /usr/local/mycat/bin/
#启动
mycat./mycat start
目录结构

配置修改
结构图:

schema.xml读写分离配置:

server.xml连接配置:


连接
通过工具Navicat Premium测试是否可以连接

成功连接后配置java应用程序连接
就是将原来的IP+端口改为mycat的IP+端口

测试:
我这里是通过Navicat Premium分别连接主库和从库,需要断开主从连接
访问java应用提供的web页面
修改我的账号信息,例如名称
修改操作为写入操作,所以查看主库会发现对应的表中数据发生变化,而从库未变化
因为读取是从从库,所以刷新web页面,账户信息会重新显示回原来的信息,也就是从库的信息。
ps:如果测试写入读取操作都是在主库上执行的,可以检查一下dataHost中的balance="1" 配置是否为1,为0会出现此错误。
原因如下
1. balance=“0”, 所有读操作都发送到当前可用的writeHost上。
2. balance=“1”,所有读操作都随机的发送到readHost。
3. balance=“2”,所有读操作都随机的在writeHost、readhost上分发
以下内容引用原文:https://www.jianshu.com/p/c6e29d724fca
WriteType参数设置:
1. writeType=“0”, 所有写操作都发送到可用的writeHost上。
2. writeType=“1”,所有写操作都随机的发送到readHost。
3. writeType=“2”,所有写操作都随机的在writeHost、readhost分上发。
“readHost是从属于writeHost的,即意味着它从那个writeHost获取同步数据,因此,当它所属的writeHost宕机了,则它也不会再参与到读写分离中来,即“不工作了”,这是因为此时,它的数据已经“不可靠”了。基于这个考虑,目前mycat 1.3和1.4版本中,若想支持MySQL一主一从的标准配置,并且在主节点宕机的情况下,从节点还能读取数据,则需要在Mycat里配置为两个writeHost并设置banlance=1。”
(2)设置switchType="2" 与slaveThreshold="100"
switchType 目前有三种选择:
-1:表示不自动切换
1 :默认值,自动切换
2 :基于MySQL主从同步的状态决定是否切换
“Mycat心跳检查语句配置为 show slave status ,dataHost 上定义两个新属性: switchType="2" 与slaveThreshold="100",此时意味着开启MySQL主从复制状态绑定的读写分离与切换机制。Mycat心跳机制通过检测 show slave status 中的 "Seconds_Behind_Master", "Slave_IO_Running", "Slave_SQL_Running" 三个字段来确定当前主从同步的状态以及Seconds_Behind_Master主从复制时延。“
本文引用的原文链接:
https://www.jianshu.com/p/c6e29d724fca
https://blog.csdn.net/qq_35992900/article/details/80673889
网友评论