千家信息网

使用Mycat怎么实现MySQL读写分离

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,今天就跟大家聊聊有关使用Mycat怎么实现MySQL读写分离,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。搭建环境操作系统:CentOS-6.
千家信息网最后更新 2026年11月03日使用Mycat怎么实现MySQL读写分离

今天就跟大家聊聊有关使用Mycat怎么实现MySQL读写分离,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

搭建环境操作系统:CentOS-6.5-x86_64-bin-DVD1.iso

JDK版本:jdk1.8

Mycat版本:Mycat-server-1.6.1-RELEASE-20201208215510-linux.tar.gz (下载源码自行编译的)

Mycat节点IP:192.168.209.133 主机名:liuyazhuang133 主机配置:4核CPU、4G内存

MySQL版本:mysql-5.6.32.tar.gz

主节点IP:192.168.209.131 主机名:liuyazhuang131 主机配置:4核CPU、4G内存

从节点IP:192.168.209.132 主机名:liuyazhuang132 主机配置:4核CPU、4G内存

Mycat部署

架构Mycat的读写分离是基于后端MySQL集群的主从同步来实现的,而Mycat提供语句的分发功能。MyCat1.4开始支持MySQL主从复制状态绑定的读写分离机制,让读更加安全可靠。

我们来看看Mycat的整体部署架构图。

Mycat的安装设置主机名和IP与主机名的映射

# vim /etc/sysconfig/network NETWORKING=yes HOSTNAME=liuyazhuang133
# vim /etc/hosts 127.0.0.1 liuyazhuang133 192.168.209.131 liuyazhuang131 192.168.209.132 liuyazhuang132 192.168.209.133 liuyazhuang133

配置Java环境变量

因为Mycat是用Java开发的,因此Mycat运行需要安装JDK(准确来说是JRE就够了),并且需要JDK1.7或以上版本

# vim /etc/profile ## java env export JAVA_HOME=/usr/local/java/jdk1.8 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin # source /etc/profile # java -version

上传Mycat安装包

上传Mycat-server-1.6.1-RELEASE-20201208215510-linux.tar.gz 到 MyCat服务器中的/home/mycat目录,并解压并移动到 /usr/local/mycat目录

$ tar -zxvf Mycat-server-1.6.1-RELEASE-20201208215510-linux.tar.gz
# mv /home/mycat/mycat  /usr/local/ # cd /usr/local/mycat/ # ll

设置Mycat的环境变量

# vim /etc/profile ## mycat env export MYCAT_HOME=/usr/local/mycat export PATH=$PATH:$MYCAT_HOME/bin # source /etc/profile

配置Mycat

确认MySQL主从复制正常

在配置Mycat前,请确认MySQL的主从复制安装配置已完成并正常运行。MySQL主从数据的同步在MySQL中配置,Mycat不负责数据同步的问题。

补充:

  • MySQL主从复制配置中,如果涉及到函数或存储过程的同步复制,需要在/etc/my.cnf中的[mysqld]段中增加配置log_bin_trust_function_creators=true 或在客户端中设置 set global log_bin_trust_function_creators = 1;

  • 如果要做读写分离下的主从切换,那么从节点也有可能会变为写节点,因此从节点就不能设置为只读 read_only=1

  • Linux版本的MySQL,需要设置为MySQL大小写不敏感,否则可能会发生找不到表的问题。可在/etc/my.cnf的[mysqld]段中增加lower_case_table_names=1 。

配置schema.xml

schema.xml是Mycat最重要的配置文件之一,用于设置Mycat的逻辑库、表、数据节点、dataHost等内容,

[root@liuyazhuang133 conf]$ cd /usr/local/root/conf/ [root@liuyazhuang133 conf]$ vi schema.xml

文件内容如下所示。

                                                 show slave status                                            

Mycat1.4开始支持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主从复制时延,当Seconds_Behind_Master 大于slaveThreshold时,读写分离筛选器会过滤掉此Slave机器,防止读到很久之前的旧数据,而当主节点宕机后,切换逻辑会检查Slave上的Seconds_Behind_Master是否为0,为0时则表示主从同步,可以安全切换,否则不会切换。

配置 server.xml

server.xml 主要用于设置系统变量、管理用户、设置用户权限等。

[root@liuyazhuang133 conf]$ vim server.xml

文件内容如下所示。

            druidparser   utf8mb4                 lyz.123       lyz_schema1,lyz_schema2                 lyz.123       lyz_schema1,lyz_schema2       true      

防火墙中打开8066和9066端口

Mycat的默认数据端口为8066,mycat通过这个端口接收数据库客户端的访问请求。

管理端口为9066,用来接收Mycat监控命令、查询Mycat运行状况、重新加载配置文件等。

[root@liuyazhuang133 mycat]# vim /etc/sysconfig/iptables

增加:

## MyCat -A INPUT -m state --state NEW -m tcp -p tcp --dport 8066 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 9066 -j ACCEPT

重启防火墙:

[root@liuyazhuang133 mycat]# service iptables restart

修改log日志级别为debug

修改log日志级别为debug,以便通过日志确认基于Mycat的MySQL数据库集群读写分离的数据操作状态(可以在正式上生产前改成info级别)

[root@liuyazhuang133 conf]$ vim /usr/local/mycat/conf/log4j.xml

启动Mycat

[root@liuyazhuang133 bin]$ cd /usr/local/root/bin/

(1) 控制台启动,这种启动方式在控制台关闭后,Nycat服务也将关闭,适合调试使用:

[root@liuyazhuang133 bin]$ ./mycat console

(2) 可以采用以下后台启动的方式:

[root@liuyazhuang133 bin]$ ./mycat start Starting root-server...

Mycat连接测试(1) 如果本地Windows安装有MySQL,可以使用已有的mysql客户端远程操作Mycat

(2) Nativecat连接Mycat


读写分离测试

(1) 监听Mycat日志

[root@liuyazhuang133 ~]$ cd /usr/local/mycat/logs/ [root@liuyazhuang133 logs]$ tail -f mycat.log

(2) 读测试

$ mysql -uuserlyz -plyz.123 -h292.168.209.233 -P8066 mysql> show databases;

mysql> use lyz_schema2;

mysql> show tables;

mysql> select * from lyz_user_02;

执行上面的查询语句,此时对应的Mycat日志信息如下:

多次执行 select * from lyz_user_02 语句,Mycat打印出来的日志信息显示读操作请求都是路由到Slave节点(192.168.209.132)

写测试

mysql> insert into lyz_user_02 (userName, pwd) values('liuyazhuang', 'lyz。123');

执行上面的新增插入语句后,此时对应的Mycat日志信息如下:

多次执行以上插入语句,发现新增数据都是从 Master节点(192.168.209.131)插进入的,并且Slave节点通过Binlog同步了Master节点中的数据。

看完上述内容,你们对使用Mycat怎么实现MySQL读写分离有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

配置 主从 节点 数据 主机 日志 同步 内容 语句 版本 状态 切换 文件 机制 端口 测试 安全 信息 内存 变量 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网金融科技 中智农互联网科技 广州万易互联网科技有限公司 工业互联网科技新基建 狮子座互联网科技有限公司 上游互联网科技 无锡溥仪互联网科技有限公司 深圳市运趣互联网科技有限公司 移动互联网科技股 互联网数据科技专业 南博望互联网科技有限公司 每天都有哪些好的互联网科技 中国互联网有什么科技 互联网科技快讯热点 新氧科技和美国互联网有关系吗 北京互联网科技类企业分布 美国五大互联网科技公司市值多少 数字科技和互联网金融哪个好 互联网的黑科技实验室 互联网科技创业有什么好项目 南京欣网互联网络科技 互联网科技图片 新华互联网科技 互联网科技工作委员会毛军 奇士达互联网科技 青海省互联网新科技 互联网校园科技培训 速维有品互联网信息科技(苏州)有限公司 深圳市优智互联网科技有限公司 东营紫格互联网科技
0