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:管理端口
相关推荐
莳花微语6 分钟前
Oracle 用户/权限/角色管理
数据库·oracle
GUIQU.9 分钟前
【Oracle】游标
数据库·oracle
平平无奇。。。9 分钟前
Mysql库的操作和表的操作
linux·数据库·mysql
雪花凌落的盛夏12 分钟前
PostgreSQL数据库备份
数据库·postgresql
Lao A(zhou liang)的菜园13 分钟前
Oracle双平面适用场景讨论会议
数据库·平面·oracle
小小星球之旅14 分钟前
redis缓存常见问题
数据库·redis·学习·缓存
小李是个程序16 分钟前
数据库完整性
数据库·sql
GreatSQL25 分钟前
GreatSQL连接数被打满的3种紧急解决方案
数据库
天天摸鱼的java工程师28 分钟前
CTO新项目直接上MySQL 8.0,老系统仍是5.7
java·后端·mysql
bxlj_jcj29 分钟前
解锁Java多级缓存:性能飞升的秘密武器
java·缓存·面试·架构