千家信息网

基于mysql+mycat如何搭建稳定高可用集群负载均衡主备复制读写分离操作

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍基于mysql+mycat如何搭建稳定高可用集群负载均衡主备复制读写分离操作,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!主要思路简单说,实现mysql主备复制
千家信息网最后更新 2026年11月03日基于mysql+mycat如何搭建稳定高可用集群负载均衡主备复制读写分离操作

这篇文章主要介绍基于mysql+mycat如何搭建稳定高可用集群负载均衡主备复制读写分离操作,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

主要思路

简单说,实现mysql主备复制-->利用mycat实现负载均衡。

比较了常用的读写分离方式,推荐mycat,社区活跃,性能稳定。

测试环境

MYSQL版本:Server version: 5.5.53,到官网可以下载WINDWOS安装包。

注意:确保mysql版本为5.5以后,以前版本主备同步配置方式不同。

linux实现思路类似,修改my.cnf即可。

  • A主mysql。192.168.110.1:3306, 用户root,密码root。操作系统:win7 x64,内存:4g

  • 安装路径:C:\Program Files\MySQL\MySQL Server 5.5\bin

  • B备mysql。192.168.110.2:3306, 用户root,密码root。操作系统:win2003 x64,内存:1g

  • 安装路径:C:\Program Files\MySQL\MySQL Server 5.5\bin

  • A主、B备的mysql中创建sync_test数据库

实现mysql主备复制

主要思路:A主mysql开启日志,B备mysql读取操作日志,同步执行。

一般为主备同步,主主同步不推荐使用。

配置A主mysql

1)修改my.ini。需要在log-bin="C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-bin.log"的相关位置创建log目录,以及mysql-bin.log文件。

[mysqld]server-id=1 #主机标示,整数port=3306  log-bin="C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-bin.log" #确保此文件可写read-only=0  #主机,读写都可以binlog-do-db=sync_test  #需要备份数据库,多个写多行binlog-ignore-db=mysql #不需要备份的数据库,多个写多行

2)允许MYSQL远程访问

#登录mysql console进入%home%/bin,执行mysql -uroot -proot#授权。允许root用户,从192.168.110.*的IP范围 远程访问A主mysqlmysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.110.*' IDENTIFIED BY 'root' WITH GRANT OPTION;#生效。该操作很重要!mysql>FLUSH PRIVILEGES;

3)重启A主mysql数据库

进入%home%/bin,执行mysql -uroot -proot

mysql>net stop mysql;mysql>net start mysql;

4)查看主mysql日志状态

mysql> show master status\G;*************************** 1. row ***************************      File: mysql-bin.000003    Position: 107  Binlog_Do_DB: sync_testBinlog_Ignore_DB: mysql1 row in set (0.00 sec)ERROR:No query specified

配置B备mysql

1)修改my.ini。需要在log-bin="C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-bin.log"的相关位置创建log目录,以及mysql-bin.log文件。

[mysqld]# add for sycn testserver-id=2            #从机标识log-bin="C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-bin.log" #确保此文件可写#master-host="192.168.110.1" #主机Ip#master-user=root         #数据库访问用户名#master-pass=root           #数据库访问密码#master-port=3306     #主机端口#master-connect-retry=60   #如果从服务器发现主服务器断掉,重新连接的时间差(秒)replicate-do-db=sync_test   #只复制某个库replicate-ignore-db=mysql   #不复制某个库

2)重启B备mysql数据库

进入%home%/bin,执行mysql -uroot -proot

mysql>net stop mysql;mysql>net start mysql;

3)配置B备数据库的数据来源,核实高亮处的状态是否正常。

mysql>change master to master_host='192.168.110.1',master_port='3306',master_user='root',master_password='root';mysql>slave start;mysql>show slave status\G;*************************** 1. row ***************************        Slave_IO_State: Waiting for master to send even         Master_Host: 192.168.110.1         Master_User: root         Master_Port: 3306        Connect_Retry: 60       Master_Log_File: mysql-bin.000003     Read_Master_Log_Pos: 107        Relay_Log_File: wjt-1c698d8a032-relay-bin.00001        Relay_Log_Pos: 253    Relay_Master_Log_File: mysql-bin.000003       Slave_IO_Running: Yes      Slave_SQL_Running: Yes       Replicate_Do_DB: sync_test     Replicate_Ignore_DB: mysql      Replicate_Do_Table:    Replicate_Ignore_Table:   Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table:          Last_Errno: 0          Last_Error:         Skip_Counter: 0     Exec_Master_Log_Pos: 107       Relay_Log_Space: 565       Until_Condition: None        Until_Log_File:        Until_Log_Pos: 0      Master_SSL_Allowed: No      Master_SSL_CA_File:      Master_SSL_CA_Path:       Master_SSL_Cert:      Master_SSL_Cipher:        Master_SSL_Key:    Seconds_Behind_Master: 0Master_SSL_Verify_Server_Cert: No        Last_IO_Errno: 0        Last_IO_Error:        Last_SQL_Errno: 0        Last_SQL_Error: Replicate_Ignore_Server_Ids:       Master_Server_Id: 11 row in set (0.00 sec)ERROR:No query specified

验证同步配置结果

  • A主mysql:使用navicat工具,在sync_test库中创建sync_table表,并添加一些数据

  • B备mysql:使用navicat工具,查看sync_test库,可以看到sync_table表和数据已被同步

实现读写分离

主要思路:使用mycat中间件,转发sql指令到后端mysql节点。mycat不负责数据库同步。

安装mycat

mycat是什么?可以认为它是一个数据库访问中间件,但更像f5、ngnix等产品,具备访问路由、多表分表分片操作等功能。总之很强大。

  • 下载:http://www.mycat.io/ ,本文使用的是:1.6-RELEASE

  • 解压Mycat-server-1.6-RELEASE-20161012170031-win.tar,到D:\dev-bin\mycat目录

  • 确保java环境为jdk1.7以上,否则mycat将不支持

安装完毕

配置mycat

1)server.xml。配置访问用户及权限。修改高亮处信息,其中admin、user为访问mycat的用户,TESTDB为mycat虚拟的数据库,供上层应用访问。

    admin    TESTDB                user    TESTDB    true  

2)schema.xml。这部分不太好理解,精简了一下,主要分schema、dataNode、dataHost三个主要配置。

节点定义了mycat的虚拟数据库为TESTDB, balance="1":write操作路由到A机,读操作路由到B。

                select user()                          

启动mycat

1)启动mycat

D:\dev-bin\mycat\bin>startup_nowrap.bat

后台信息如下:

D:\dev-bin\mycat\bin>startup_nowrap.bat
D:\dev-bin\mycat\bin>REM check JAVA_HOME & java
D:\dev-bin\mycat\bin>set "JAVA_CMD=C:\Program Files (x86)\Java\jdk1.7.0_13/bin/java"
D:\dev-bin\mycat\bin>if "C:\Program Files (x86)\Java\jdk1.7.0_13" == "" goto noJavaHome
D:\dev-bin\mycat\bin>if exist "C:\Program Files (x86)\Java\jdk1.7.0_13\bin\java.exe" goto mainEntry
D:\dev-bin\mycat\bin>REM set HOME_DIR
D:\dev-bin\mycat\bin>set "CURR_DIR=D:\dev-bin\mycat\bin"
D:\dev-bin\mycat\bin>cd ..
D:\dev-bin\mycat>set "MYCAT_HOME=D:\dev-bin\mycat"
D:\dev-bin\mycat>cd D:\dev-bin\mycat\bin
#如果启动失败,请修改D:\dev-bin\mycat\bin\startup_nowrap.bat文件中的以下参数。默认占用内存为2G
D:\dev-bin\mycat\bin>"C:\Program Files (x86)\Java\jdk1.7.0_13/bin/java" -server -Xms512m -Xmx512m -XX:MaxPermSize=64M -XX:+AggressiveOpts -XX:MaxDirectMemorySize=768m -DMYCAT_HOME=D:\
p "..\conf;..\lib\*" io.mycat.MycatStartup

MyCAT Server startup successfully. see logs in logs/mycat.log #启动成功将看到如下信息。

注意:如日志中出现192.168.110.2 not connected 等信息,请允许B备mysql远程访问。

#登录mysql console进入%home%/bin,执行mysql -uroot -proot#授权。允许root用户,从192.168.110.*的IP范围 远程访问Bmysqlmysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.110.*' IDENTIFIED BY 'root' WITH GRANT OPTION;#生效,该操作很重要!mysql>FLUSH PRIVILEGES;

测试读写分离

验证是否同步

  • 使用navicat连接mycat,操作方式和连接物理mysql库一致,用户admin,密码admin,端口8066

  • 在TESTDB虚拟库中,创建新表test2,增加一些数据

  • 查看A节点、B节点数据已同步

关闭B备mysql的同步,验证读写分离

mysql> slave stop;Query OK, 0 rows affected (0.00 sec)mysql> show slave status\G;*************************** 1. row ***************************        Slave_IO_State:         Master_Host: 192.168.110.1         Master_User: root         Master_Port: 3306        Connect_Retry: 60       Master_Log_File: mysql-bin.000003     Read_Master_Log_Pos: 478        Relay_Log_File: wjt-1c698d8a032-relay-bin.00001        Relay_Log_Pos: 624    Relay_Master_Log_File: mysql-bin.000003       Slave_IO_Running: No      Slave_SQL_Running: No       Replicate_Do_DB: sync_test     Replicate_Ignore_DB: mysql      Replicate_Do_Table:    Replicate_Ignore_Table:   Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table:          Last_Errno: 0          Last_Error:         Skip_Counter: 0     Exec_Master_Log_Pos: 478       Relay_Log_Space: 936       Until_Condition: None        Until_Log_File:        Until_Log_Pos: 0      Master_SSL_Allowed: No      Master_SSL_CA_File:      Master_SSL_CA_Path:       Master_SSL_Cert:      Master_SSL_Cipher:        Master_SSL_Key:    Seconds_Behind_Master: NULLMaster_SSL_Verify_Server_Cert: No        Last_IO_Errno: 0        Last_IO_Error:        Last_SQL_Errno: 0        Last_SQL_Error: Replicate_Ignore_Server_Ids:       Master_Server_Id: 11 row in set (0.00 sec)ERROR:No query specified

3)使用navicat连接mycat,操作方式和连接物理mysql库一致,用户admin,密码admin,端口8066

  • 连接成功后,将看到TESTDB数据库和test数据表

  • 在test表中添加一些数据,保存

  • 执行select * from test查看test操作,将看到数据未更新

原因:mycat将查询sq路由到B,因此读取的结果集不一致。

最后,mycat使用可以参见官网的权威指南学习。双主双备架构待后续更新。

以上是"基于mysql+mycat如何搭建稳定高可用集群负载均衡主备复制读写分离操作"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

数据 数据库 同步 用户 配置 密码 文件 主机 信息 思路 方式 日志 节点 路由 均衡 一致 内存 版本 目录 端口 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技图片 深圳市人人互联网科技有限公司 新华互联网科技 互联网科技公司怎么样 互联网金融 科技创新 互联网高科技企业 亿人帮互联网科技 联恩商钥互联网科技有限公司 佳云科技和互联网广告 成都互联网科技公司工作好不好 健康食品互联网创新科技园项目 互联网保险科技创业 伍佰万互联网科技怎么赚钱 张召忠谈中国互联网科技 互联网相关科技技术 从那以后互联网科技有限公司 互联网科技包装股份有限公司上市 科技互联网经济论坛 承德科技产业互联网平台 小牛互联网科技有限公司地址 互联网金融 金融科技 美国互联网黑科技 长亮科技 互联网金融 乌苏新华互联网科技做什么的 互联网公司黑科技创始人 保险科技服务互联网营销体系 福建互联网展示科技馆设计 世界互联网科技成果奖 深圳互联网科技园地址 亚光科技低轨卫星互联网
0