MyCAT读写分离

目录

MyCAT读写分离

配置双主双从

准备4个服务器且安装MySQL

主从配置参考上一篇博客

部署环境


MyCAT读写分离

Mycat 是一个开源的数据库系统,但是由于真正的数据库需要存储引擎,而 Mycat 并没有存 储引擎,所以并不是完全意义的数据库系统。 那么 Mycat 是什么?Mycat 是数据库中间件,就是介于数据库与应用之间,进行数据处理与交互的中间服务。

MyCAT 是使用 JAVA 语言进行编写开发,使用前需要先安装 JAVA 运行环境(JRE),由于 MyCAT 中使用了 JDK7 中的一些特性,所以要求必须在 JDK7 以上的版本上运行。

配置双主双从

准备4个服务器且安装MySQL

复制代码
 master1   -------主库1,master2  --------主库2   (master1与master2互为主从)
 slave1 -----------master1的从库,slave2 ------msater2的从库

主从配置参考上一篇博客

#注意所有服务器都做主机名解析(方便操作)

部署环境

准备一个服务器安装MySQL并做主机名解析

复制代码
 hostnamectl set-hostname=mycat
  1. 下载jdk,mycat

    复制代码
     官网下载
  2. 解压文件

    复制代码
     [root@mycat ~]# tar -xf jdk-8u181-linux-x64.tar.gz   -C  /usr/local/
  3. 配置Java环境(mycat服务需要Java环境)

    复制代码
     vim /etc/profile
     export PATH=/usr/local/jdk/bin:$PATH
     source /etc/profile        重新加载环境变量
     java -version              查看Java版本
  4. 部署MYCAT

    复制代码
     [root@mycat ~]# tar xf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz -C /usr/local/
  5. 配置MYSCAT

    认识配置文件

    MyCAT 目前主要通过配置文件的方式来定义逻辑库和相关配置:
    /usr/local/mycat/conf/server.xml 定义用户以及系统相关变量,如端口等。其中用户信息是前端应用程序连接 mycat 的用户信息。 server.xml为虚拟的数据。
    /usr/local/mycat/conf/schema.xml 定义逻辑库,表、分片节点等内容,schema.xml为真实的数据。

  6. 配置server.xml文件

    复制代码
     vim /usr/local/mycat/conf/server.xml
  1. 配置schema.xml文件

    复制代码
     vim /usr/local/mycat/conf/schema.xml
  2. 启动mycat

    复制代码
     cd /usr/local/mycat/bin/
     ./mycat  start
     ./{ console | start | stop | restart | status | dump }    支持的参数
     注意:若Mycat启动后自动关闭,则vim /usr/local/mycat/conf/wrapper.conf并添加 wrapper.startup.timeout=300
     ss -nplt     查看端口
  3. 在真实的数据库上给用户授权

    复制代码
     mysql -p密码
     mysql>grant all on *.* to 'root'@'%' identified by '123456';
     mysql> flush privileges;
  4. 在MYCAT服务器上测试用户能否登录

    复制代码
     测试是否能正常登录上 主服务器
     mysql -uroot -p'123456' -hmaster1
     测试是否能正常登录上 主服务器
     mysql -uroot -p'123456' -hslave1
  5. 通过客户端进行测试是否能登录到 mycat 上

    复制代码
     mysql -uroot -p'123456' -hmycat -P 8066
  6. 创建数据库db1(因为slave是启动的所以在master1创建则行)

    复制代码
     mysql>create database db1;
  7. 关闭master1,master2,slave1,slave2的slave线程

    复制代码
     mysql>stop slave
  8. balance的类型

    复制代码
     balance 属性
     负载均衡类型,目前的取值有 3 种:
     1. balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。
     2. balance="1", 全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且 M1 与 M2 
         互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡。
     4. balance="2", 所有读操作都随机的在 writeHost、readhost 上分发。
     5. balance="3", 所有读请求随机的分发到 writerHost 对应的 readhost 执行,writerHost 不负担读压力,注意 balance=3 只在 1.4 及其以后版本有,1.3 没有。
     ​
     writeType 属性
     负载均衡类型
     1. writeType="0", 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准.
     2. writeType="1",所有写操作都随机的发送到配置的 writeHost,1.5 以后废弃不推荐。
  9. 通过Mycat虚拟用户登录测试数据库的读写分离

    复制代码
     更改balance 属性进行测试
     在(master1,master2,slave1,slave2)的bd1库里创建不同的表,首先使用mycat虚拟用户登录数据库,然后根据查到的表结果判断数据库的读写分离。
相关推荐
江湖有缘7 分钟前
基于开发者空间部署Eigenfocus项目管理工具【华为开发者空间】
运维·服务器·华为
丶伯爵式8 分钟前
Docker 国内镜像加速 | 2026年3月26日可用
运维·docker·容器·镜像加速·国内镜像加速
小陈工1 小时前
Python安全编程实践:常见漏洞与防护措施
运维·开发语言·人工智能·python·安全·django·开源
刚入门的大一新生4 小时前
Linux-Linux的基础指令4
linux·运维·服务器
腾讯蓝鲸智云7 小时前
嘉为蓝鲸可观测系列产品入选Gartner《中国智能IT监控与日志分析工具市场指南》
运维·人工智能·信息可视化·自动化
2401_874732537 小时前
为你的Python脚本添加图形界面(GUI)
jvm·数据库·python
stuartevil8 小时前
【MySQL】SQL菜鸟教程(一)
sql·mysql·oracle
Chengbei118 小时前
Redis 图形化综合检测工具:redis_tools_GUI,一键探测 + 利用
数据库·redis·web安全·网络安全·缓存·系统安全
hutengyi8 小时前
PostgreSQL的备份方式
数据库·postgresql
流星白龙8 小时前
【MySQL】7.MySQL基本查询(2)
android·mysql·adb