MyCat代理MySQL集群

  • 一、MyCat代理MySQL集群
    • 1.1 MyCat概述
    • 1.2 MyCat功能
    • 1.3 MyCat图示
  • 二、Mycat实战详解
    • 2.1 MyCat实战案例
      • 2.1.1 配置JAVA环境
      • 2.1.2 设置JAVA变量
      • 2.1.3 下载并解压MyCat
    • 2.2 配置MyCat前端
      • 2.2.1 注释多余用户
      • 2.2.2 启动MyCat管理员
    • 2.3 配置MyCat后端
    • 2.4 配置MySQL集群
    • 2.5 启动MyCat
    • 2.6 安装Mariadb客户端测试
    • 2.7 在主服务器上创库创表
    • 2.8 测试检查
      • 2.8.1 在MyCat上查看数据
      • 2.8.2 在主服务器上查看数据
  • 三、总结一下
    • 3.1 关于MyCat后端配置文件的总结
    • 3.2 关于企业数据库服务器过多,如何进行设置?

一、MyCat代理MySQL集群

1.1 MyCat概述

  • 从定义和分类来看,它是一个开源的分布式数据库系统,
  • 是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,
  • 用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,
  • 也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。
  • 名词:DB Proxy 数据库中间件

1.2 MyCat功能

  • 读写分离 M-S-S M-M-S-S
  • 负载均衡 Galera Cluster
  • 支持数据的分片自动路由与聚合

1.3 MyCat图示

二、Mycat实战详解

本实验基于MySQL集群做铺垫 双主双从架构

如未搭建,请参考 MySQL集群搭建

#使用Xshell的发送键到所有会话功能
[root@mycat ~]# vim /etc/hosts
192.168.100.254 mysql0.sixeleven.com
192.168.100.253 mysql1.sixeleven.com
192.168.100.252 mysql2.sixeleven.com
192.168.100.251 mysql3.sixeleven.com
192.168.100.250 mycat

2.1 MyCat实战案例

2.1.1 配置JAVA环境

因为Mycat是使用java编写的

[root@mycat ~]# tar -xvzf jdk-8u65-linux-x64.tar.gz -C /usr/local/ #加压java软件开发工具包
[root@mycat ~]# ln -s /usr/local/jdk1.8.0_65/ /usr/local/java      #创建软链接使其简洁

2.1.2 设置JAVA变量

[root@mycat ~]# vim /etc/profile
...
#文件最后添加三行
JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH                           #设置JAVA变量,便于JAVA调用
[root@mycat ~]# source /etc/profile             #让系统读取省去重启时间
[root@mycat ~]# echo $JAVA_HOME                 #检查是否赋予变量
/usr/local/java
[root@mycat ~]# java -version                   #查看JAVA版本信息同时验证变量

2.1.3 下载并解压MyCat

官方站点:http://www.mycat.org.cn/

[root@mycat ~]# tar -xvzf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/

2.2 配置MyCat前端

2.2.1 注释多余用户

[root@mycat ~]# vim /usr/local/mycat/conf/server.xml
<!--                              <user name="user"><property name="password">user</property><property name="schemas">TESTDB</property><property name="readOnly">true</property></user>
-->                                  #user账户是默认账户,通过<!-- -->注释

2.2.2 启动MyCat管理员

        <user name="root">                                   #name="root"连接mycat数据库的账户<property name="password">123456</property>  #password 123456 连接mycat数据库的密码<property name="schemas">tianyun</property>  #schemas:tianyun 后方数据库群的统称

2.3 配置MyCat后端

[root@mycat ~]# cp /usr/local/mycat/conf/schema.xml . #备份文件

schema:架构

[root@mycat ~]# vim /usr/local/mycat/conf/schema.xml   #文中省略部分与本实验无关的内容
<?xml version="1.0"?>                                  #版本
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">            #文档声明
<mycat:schema xmlns:mycat="http://io.mycat/">          #官方地址声明# 架构名称 tianyun(虚拟)   ↓       关闭库校验 ↓            每分钟支持最大100次        <schema name="tianyun" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema> #dataNode :数据节点 定义节点为dn1<!-- 中间部分删除 ovo --><dataNode name="dn1" dataHost="localhost1" database="tianyun" />   #与前方tianyun数据节点关联<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"  #表示具体的集群位置 maxcon最大链接 balance 均衡 详解如下注释writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
#writeType:写类型详解如下注释  dbType:数据库类型 dbDriver:数据库驱动程序  switchType:交换类型解释如下 slaveThreshole:延迟时间 100毫秒 解释如下<heartbeat>select user()</heartbeat>  #健康状态检查<writeHost host="mysql0.sixeleven.com" url="mysql0.sixeleven.com:3306" user="mycatproxy" password="Pakho@0611">
#writeHost:写主机  路径为mysql0.sixeleven.com 使用mycatproxy账户登陆面对后端等下进行授权<readHost host="mysql2.sixeleven.com" url="mysql2.sixeleven.com:3306" user="mycatproxy" password="Pakho@0611" />  #写入从服务器地址<readHost host="mysql3.sixeleven.com" url="mysql3.sixeleven.com:3306" user="mycatproxy" password="Pakho@0611" /></writeHost><writeHost host="mysql1.sixeleven.com" url="mysql1.sixeleven.com:3306" user="mycatproxy" password="Pakho@0611"><readHost host="mysql2.sixeleven.com" url="mysql2.sixeleven.com:3306" user="mycatproxy" password="Pakho@0611" />  #写入从服务器地址<readHost host="mysql3.sixeleven.com" url="mysql3.sixeleven.com:3306" user="mycatproxy" password="Pakho@0611" /></writeHost></dataHost>
</mycat:schema>

★ 文件中某些属性的具体解释 ★

#balance类型
balance:0 关闭读写分离,所有读操作都随机的发送到readHost
balance:1 开启读写分离,所有操作都随机发送到readHost
#writeType类型
备份型:1、writeType=0 所有写操作发送到配置的第一个writeHost第一个挂了切换到还生存的第二个writeHost重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties
负载型:2、writeType=1 所有写操作都随机的发送到配置的writeHost
#switchType模式
switchType:指的是切换的模式,目前的取值也有四种
switchType=-1 负一表示不自动切换
switchType=1 默认值,表示根据延时自动切换
switchType=2 根据MySQL主从同步的状态决定是否切换,心跳语句为show slave status
#slaveThreshole
主从的延迟在多少秒以内,则把读请求分发到这个从节点,否则不往这个节点分发
假设生产环境能容忍的主从延迟为60秒,则设置此值为60,此例中设置值为100

2.4 配置MySQL集群

M-M-S-S 基于双主双从数据库集群架构

[root@mysql0 ~]# mysql -uroot -p'Pakho@611'
mysql> grant all on *.* to 'mycatproxy'@'mycat' identified by 'Pakho@0611'; #为mycat服务器
mysql> flush privileges;

2.5 启动MyCat

mycat 192.168.100.250

[root@mycat ~]# /usr/local/mycat/bin/mycat start
Starting Mycat-server...
[root@mycat ~]# netstat -anpt | grep java          #查看端口并过滤JAVA端口

[root@mycat ~]# cat /usr/local/mycat/logs/*           #如有报错可以查看mycat日志

2.6 安装Mariadb客户端测试

[root@mycat ~]# ps aux | grep mycat
[root@mycat ~]# yum -y install mariadb                #为了验证数据库集群可用性也尽量节省资源在本机安装客户端测试

2.7 在主服务器上创库创表

mysql0 192.168.100.254

[root@mysql0 ~]# mysql -uroot -p'Pakho@611'
mysql> create database tianyun;
mysql> create table tianyun.t1 (id int);
mysql> insert into tianyun.t1 values (1);
mysql> flush privileges;

2.8 测试检查

2.8.1 在MyCat上查看数据

[root@mycat ~]# mysql -hmycat -uroot -p123456 -P8066
MySQL [(none)]> show databases;
MySQL [(none)]> use tianyun;
MySQL [tianyun]> select * from tianyun.t1;

MySQL [tianyun]> insert into tianyun.t1 values (2);  #在Mycat服务器插入数据在主服务器查看

2.8.2 在主服务器上查看数据

mysql0 :192.168.100.254

mysql> select * from tianyun.t1 ;


在MySQL集群能够查询到数据,实验完成!

三、总结一下

3.1 关于MyCat后端配置文件的总结

此内容及上述实验仅限于双主双从架构

如下图为刚才后端配置文件总结

3.2 关于企业数据库服务器过多,如何进行设置?

用户名的设置

Mycat后端配置文件的设置

数据库应用——MyCat代理MySQL集群相关推荐

  1. 数据库应用——Atlas代理MySQL集群实现读写分离

    Atlas代理MySQL集群实现读写分离 一.Atlas简介和架构 1.1 环境准备 1.2 配置时间服务器 二.主服务器配置 2.1 master节点1的配置 2.2 master节点2的配置 2. ...

  2. mysql分片做主从_使用mycat部署mysql集群(分片,读写分离,主从复制)

    在s201,s202,s203上安装MySQL (安装jdk) 配置MySQL 5.7的yum源 sudo tee -a /etc/yum.repos.d/mysql-community.repo & ...

  3. 6 MySQL 集群Cluster

    文章目录 6 MySQL 集群Cluster 6.1 MySQL 主从复制 6.1.1 主从复制架构和原理 6.1.1.1 服务性能扩展方式 6.1.1.2 MySQL的扩展 6.1.1.3 复制的功 ...

  4. MySQL集群解决方案

    ** 1:mysql数据分库分表,读写分离,主从切换使用mycat 2:集群方案(分布式+集群) ** 分布式:不同的服务器部署不同的模块/工程,他们之间通过RPC/Rmi通信和调用,对外提供服务和组 ...

  5. 甲骨文推出MySQL集群7.2 查询性能提高

    2012年2月27日消息,甲骨文日前宣布推出MySQL集群7.2.(MySQL Cluster 7.2). · 为满足基于网络和通信产品与服务的高要求,MySQL集群旨在用经济有效的方式,提供高达99 ...

  6. mycat mysql好可用架构_想要学会MyCat高可用集群搭建,但是这些知识点却还玩不明白?...

    一.集群架构 1.MyCat实现读写分离架构 在我前面的文章, 我已经讲解过了通过MyCat来实现MySQL的读写分离, 从而完成MySQL集群的负载均衡 , 如下面的结构图: 但是以上架构存在问题 ...

  7. ABP 框架 数据库底层迁移 Mysql 集群

    技术交流,请加QQ群:538327407 我的各种github 开源项目和代码:https://github.com/linbin524 背景 笔者 目前架构的IOT 项目是使用abp 框架作为后台, ...

  8. spring jpa mysql集群_Spring Boot系列之十四 JPA 连接mycat

    接 本文介绍使用spring-data-jpa连接mycat实现应用的读写分离. 系统环境spring-boot 1.4.3-RELEASE jdk1.8 进入正题application.yml配置文 ...

  9. haproxy keepalived_详解mycat+haproxy+keepalived搭建高可用负载均衡mysql集群

    概述 目前业界对数据库性能优化普遍采用集群方式,而oracle集群软硬件投入昂贵,mysql则比较推荐用mycat去搭建数据库集群,下面介绍一下怎么用mycat+haproxy+keepalived搭 ...

最新文章

  1. android x86怎么引导,Android、Ubuntu、win三系统引导求教
  2. php 列出当前目录
  3. 01H5-fe-html5-005插入音频
  4. 2.1 二元分类-深度学习-Stanford吴恩达教授
  5. 项目中遇到不善于表达的人,该如何沟通?
  6. php处理文档流,html的文档流是什么?html文档流简介
  7. 【POJ - 1456】Supermarket (贪心,优先队列 或并查集)
  8. mysql json mybatis_mybatis支持json,Spring boot配置
  9. HDR Tone Mapping
  10. 注册表的监控 -- WIN9X
  11. 关于Vue中,$this.router.push到当前页面,只是传入参数不同,页面不刷新的问题解决
  12. lisp 设计盘形齿轮铣刀_钨钢铣刀制造厂
  13. WCF客户端动态设置WCF服务器主机的地址的方法参考,可以连接多个相同WCF主机的方法...
  14. 什么叫pin脚的pad_普思海鸥脚H1102NL百兆网络变压器
  15. 鸿蒙系统微信红包,微信红包王版app下载-最新微信红包王版下载-安卓苹果鸿蒙版-155175软件...
  16. VCF虚拟融合架构--企业IT基础架构建设新趋势-李飞 秦贵松 (VCF 虚拟融合架构 )
  17. 智齿客服签约垂直日本的最大旅游服务平台仙贝旅行
  18. Android 支付宝支付SDK接入
  19. j2cache入门使用
  20. 一、针对工业领域线圈小目标检测,基于Yolov5s网络改进检测头实验及其检测效果对比

热门文章

  1. 古风排版(20 分)
  2. 2-3树与2-3-4树
  3. matlab计算一组数的函数值_2.Matlab数值数组及其运算
  4. C语言再学习25——常用字符串函数归纳
  5. 哪种锻炼方式最能让程序员远离亚健康? - 强烈推荐
  6. Python 自动化操作 Excel 绘制条形图!
  7. 电脑黑屏只有鼠标箭头怎么修复 电脑开机黑屏的修复办法
  8. 2021online普及组【吃豆人】O(4N)
  9. 重庆航天职业技术学院计算机系在哪个校区,重庆航天职业技术学院地址在哪里,哪个城市...
  10. HFSS和CST电磁仿真的硬件选型指南(纯个人经验)