MySQL----利用Mycat配置读写分离

首先确保主从复制是正常的,具体步骤在MySQL----配置主从复制。MySQL----配置主从复制

环境

  • master(CtenOS7):192.168.200.131 ----ifconfig查看->ens33->inet
  • slave(win10):192.168.207.52 ----ipconfig查看->无线局域网适配器 WLAN:-> IPv4 地址
  • 保证两个环境中MySQL版本一致,这里使用8.0
  • 使用Mycat读写分离配置,所以要JDK环境,建议使用JDK1.7版本以上(java -version检查jdk环境)
  • MySQL的root账户有远程访问权限

设置

  • 登录到mysql

  • 选择mysql数据库,使用查看权限select Host,User from user;注意:确保master 和 slave 都允许远程连接

  • % 表示可以任何地址来进行连接。如果不是百分号,使用 grant all privileges on *.* to 'root'@'%' identified by 'xxxxx' with grant option; 来修改。xxxxxxx为root的密码。---MySQL 5.x版本 grant all on *.* to 'root'@'%';---MySQL 8x版本

  • 刷新权限flush privileges;

  • 重启mysql服务service mysqld restart

安装与配置

安装Mycat

  1. 下载Mycat安装包,大家可以自己寻找,如果需要的话可以留言,我发给大家。
  2. 在linux下载lrzsz可以方便的上传安装包。进入root用户,yum search lrzsz,找到安装包。
  3. 安装yum install lrzsz.x86_64
  4. 命令行输入rz,找到安装包所在位置,选择安装包,进行上传安装包。sz下载到windows


  5. 解压tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

  6. 建立软链接 ln -s /mycat/mycat/bin/mycat /usr/bin/mycat 要找对自己的安装的位置,进行建立。
  7. 验证是否成功 输入mycat ,会有提示,这时说明成功了。

配置

  1. 在mycat下的conf文件夹中找到 server.xml
  2. vim server.xml
  3. 修改,保存退出 要改为自己的密码
  4. 使用MySQL 8.x的mysql命令连接Mycat时,在server.xml文件的system标签下必须配置如下选项。
powershell 复制代码
<property name="useHandshakeV10">1</property>
<property name="defaultSqlParser">druidparser</property>
  1. 备份一份schema.xml,cp schema.xml schema.xml.bk
  2. 进入 vim schema.xml ,配置读写分离,分库分表等内容
  3. :%d删除所有,进行配置
powershell 复制代码
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!-- 逻辑数据库 -->
<schema name="USERDB" checkSQLschema="false" sqlMaxLimit="100"
dataNode="dn1"></schema>
<!-- 存储节点 -->
<dataNode name="dn1" dataHost="node1" database="mytest" />
<!-- 数据库主机 -->
<dataHost name="node1" maxCon="1000" minCon="10" balance="3"
writeType="0" dbType="mysql" dbDriver="native"
switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="192.168.200.131" url="192.168.200.131:3306"
user="root"
password="955955">
<!-- can have multi read hosts -->
<readHost host="192.168.207.52" url="192.168.207.52:3306"
user="root" password="123456" />
</writeHost>
<!-- 写数据库宕机后的备份数据库 -->
<writeHost host="192.168.207.52" url="192.168.207.52:3306"
user="root"
password="955955" />
</dataHost>
</mycat:schema>

配置逻辑库USERDB,数据节点 dn1,物理数据库mytest。
注意:上述黄框里面的内容,要改成自己的ip以及密码,mytest是当前主库,从库主从复制已有的数据库。

相关参数

balance:

"0":不开启读写分离

"1":全部的readHost和stand by writeHost参与select语句的负载

"2":所有读操作随机在readHost和writeHost上分发

"3":所有读请求随机分发到writeHost对应的readHost上执行

writeType="0":所有写操作发送到配置的第一个writeHost,第一个挂掉切换到还生存的第二个

writeHost

switchType:

"-1":不自动切换

"1":自动切换,根据心跳select user()

"2":基于MySQL的主从同步状态决定是否进行切换 show slave status

  1. vim /etc/my.cnf 添加如下内容
powershell 复制代码
sql_mode=""
default_authentication_plugin = mysql_native_password
  1. 启动mycat,mycat start,查看端口信息 netstat -tanp | grep 66
  2. 说明端口正常工作了。
  3. 如果有问题,可以查看日志 ,wrapper.log是启动相关的,mycat.log是运行相关的。
  4. vim * wrapper.log 查看日志

  5. 连接成功,如果显示一些连接失败,也可以在日志里面找到原因。

端口

  • 8066:数据端口
  • 9066:管理端口
相关推荐
心之语歌10 分钟前
LiteFlow Spring boot使用方式
java·开发语言
计算机-秋大田10 分钟前
基于微信小程序的校园失物招领系统设计与实现(LW+源码+讲解)
java·前端·后端·微信小程序·小程序·课程设计
綦枫Maple12 分钟前
Spring Boot(6)解决ruoyi框架连续快速发送post请求时,弹出“数据正在处理,请勿重复提交”提醒的问题
java·spring boot·后端
人才程序员35 分钟前
【C++拓展】vs2022使用SQlite3
c语言·开发语言·数据库·c++·qt·ui·sqlite
极客先躯1 小时前
高级java每日一道面试题-2025年01月23日-数据库篇-主键与索引有什么区别 ?
java·数据库·java高级·高级面试题·选择合适的主键·谨慎创建索引·定期评估索引的有效性
码至终章1 小时前
kafka常用目录文件解析
java·分布式·后端·kafka·mq
指尖下的技术1 小时前
Mysql面试题----MyISAM和InnoDB的区别
数据库·mysql
Mr.Demo.1 小时前
[Spring] Nacos详解
java·后端·spring·微服务·springcloud
luoganttcc1 小时前
华为升腾算子开发(一) helloword
java·前端·华为
永远是我的最爱1 小时前
数据库SQLite和SCADA DIAView应用教程
数据库·sqlite