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:管理端口
相关推荐
云之兕5 分钟前
Java内存模型详解:堆、栈、方法区
java·开发语言·jvm
flzjkl6 分钟前
【源码】【Java并发】【AQS】从ReentrantLock、Semaphore、CutDownLunch、CyclicBarrier看AQS源码
java·后端
ChinaRainbowSea21 分钟前
7. RabbitMQ 消息队列——延时队列(Spring Boot + 安装message_exchange“延迟插件“ 的详细配置说明)的详细讲解
java·spring boot·docker·rabbitmq·java-rabbitmq
小吕学编程26 分钟前
Spring Boot + Kafka 消息队列从零到落地
java·spring boot·kafka
BenBen尔29 分钟前
为什么InnoDB中意向锁IX和IX可以兼容
数据库
加油,旭杏29 分钟前
【Redis】通用命令
数据库·redis·缓存
nlog3n32 分钟前
Java 代理模式 详解
java·开发语言·代理模式
信徒_39 分钟前
MySQL 中的 MVCC 版本控制机制原理
数据库·mysql
Seven971 小时前
电商平台中订单未支付过期如何实现自动关单?
java
suimeng61 小时前
Java的Selenium的特殊元素操作与定位之模态框
java·自动化测试·selenium