1. mycat原理

  主从的读写是不同的,主能写能读,再从上写是无法同步到主的,因此需要中间件将主从的读写进行分离,使得主从各司其职,相当于负载均衡的作用。中间件可以是proxy或者mycat。客户端访问的时候并不是访问主从数据库,而是通过mycat分发给主从,与lvs不同的是,mycat可以识别SQL语句的读写,根据读写类型分发给主从数据库。

1.1  mycat的实验环境

  1)三台主机:
  在三台机器/etc/hosts添加以下3条主机信息

  mycat:192.168.16.5

  hostM1:192.168.16.4

  hostS1:192.168.16.6

  2)需要安装java1.8版本或以上

  3)下载mycat源码包

  wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

  tar -zxvf
Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

  mv mycat
/usr/local/

1.2  mycat的配置

  配置文件: /usr/local/mycat/conf/server.xml

  设置如下参数

<user name="testuser1">
<property name="password">testuser1</property>
<property name="schemas">testdb,testdb1</property> #逻辑库,有几个真实库配几个逻辑库
</user>
<user name="testuser2">
<property name="password">testuser2</property>
<property name="schemas">testdb,testdb1</property>
<property name="readOnly">true</property>
</user>

  #testuser1用来写的用户

  #testuser2用来读的用户

  #testdb是mycat是逻辑库

  配置文件vim /usr/local/mycat/conf/schema.xml,先备份cp schema.xml schema.xml.bak

  设置参数如下

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="testdb" checkSQLschema="false" sqlMaxLimit="" dataNode="dn1"> #逻辑库对应节点,节点对应真实的数据
</schema>
<schema name="testdb1" checkSQLschema="false" sqlMaxLimit="" dataNode="dn2">
</schema> <dataNode name="dn1" dataHost="hostM1" database="test" />
<dataNode name="dn2" dataHost="hostM1" database="test1" />
<dataHost name="hostM1" maxCon="" minCon="" balance="" writeType="" dbType="mysql" dbDriver="native" switchType=
"" slaveThreshold="">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="192.168.16.4:3306" user="testuser1" password="testuser1">
<readHost host="hostS1" url="192.168.16.6:3306" user="testuser2" password="testuser2" />
</writeHost>
</dataHost>
</mycat:schema>

  dataHost为数据节点名称,database为真实数据库名称即后台数据库test和test1。

  balance:

  0表示不开启读写分离,都在master上执行读写操作

  1表示都参与select

  2表示所有读请求随机在readhost和writehost分担

  3表示所有读请求对应到readhost里去

  writeType

  0,所有写操作发送到配置的第一个writeHost

  1,所有写操作都随机的发送到配置的writeHost

  2,不执行写操作。

  switchType

  -1,不自动切换

  1,默认值,自动切换

  2,基于MySQL 主从同步的状态决定是否切换

  3,基于MySQL galary cluster的切换机制(适合集群)(1.4.1),心跳语句为 show status like &lsquo;wsrep%&rsquo;

  writeHost和readHost分别配置对应后台的mysql主从真实用户密码

1.3  创建用户并赋予权限(主创建同步到从)

grant all on *.* to testuser1@'%' identified by 'testuser1';
grant all on *.* to testuser2@'%' identified by 'testuser2';

1.4  启动mycat服务并查看端口

/usr/local/mycat/bin/mycat start

  8066是管理端口

  9066是连接后端数据库的端口,默认是9066,登录该端口后直接用show @@datasource;语句即可查询主从库的读写状态

  mysql -h 192.168.254.24 -P8066 -utestuser1 -ptestuser1    (可以执行增删改查)

  mysql -h 192.168.254.24 -P9066 -utestuser1 -ptestuser1     (可以查看节点状态)

  查看心跳状态

  show @@heartbeat\G

  #查看前端连接状态(mycat)

  show @@connection\G

  #查看后端状态

  show @@backend\G

   #查看数据库资源状态

  show @@datasource

Mycat主从分离的更多相关文章

  1. Mycat读写分离、主从切换、分库分表的操作记录

    系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一 ...

  2. MyCat读写分离、分库分表

    系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一 ...

  3. mysql主从同步+mycat读写分离+.NET程序连接mycat代理

    背景 最近新项目需要用到mysql数据库,并且由于数据量大的原因,故打算采用1主1从(主数据库负责增.删.改操作:从数据库负责查操作)的数据库架构,在实现主从之后还要实现读写分离的代理,在网上搜寻了很 ...

  4. Mycat读写分离、主从切换学习(转)

    http://blog.csdn.net/zhanglei_16/article/details/50707487 Mycat读写分离.主从切换学习问题一:分表.分库的优缺点,以及分表无法成为主流分表 ...

  5. mycat读写分离与主从切换【转】

    什么是mycat,以及mycat的优点和特性本文不做赘述,本文继续本着实战的态度,来分享一些个人对mycat的基础功能实践.本文mycat的读写分离和主从切换的环境为mysql主从环境. 如何安装my ...

  6. Mycat SqlServer 技术栈 实现 主从分离

    先说明下版本:SqlServer2008R2 + MyCat 1.6 现在主从分离 一主一从 用的是 代码 写死的方式  转换下思路 一主两从 或者多从 怎么实现 负载均衡 或者 按权重调用相应库呢 ...

  7. mycat读写分离与主从切换

    1, 分库分表的优缺点.以及为什么分表方式无法成为主流? 分表:在台server上,长处是易维护,相似表分区.缺点是在一台dbserver上.无法分担IO.负载集中. 分库:在多台server上,长处 ...

  8. LVS+MYCAT读写分离+MYSQL同步部署手册(第三版)

    1      配置MYSQL主备同步 1.1    测试环境 mysql版本:5.6.24: 操作系统内核版本:Linux-3.13-0-32 主数据库IP:192.168.10.3: 主数据库名:d ...

  9. LVS+MYCAT+读写分离+MYSQL主备同步部署手册

    LVS+MYCAT+读写分离+MYSQL主备同步部署手册 1          配置MYSQL主备同步…. 2 1.1       测试环境… 2 1.2       配置主数据库… 2 1.2.1  ...

随机推荐

  1. 怎么快速对DB里的所有email进行校验

    问题 由于业务上的需求,重新改写了校验email的正则表达式,同时DB里又迁移了其他数据库的数据,现在需要重新对DB里的所有email再校验一次,以排除掉不合法的email. DB里的数据很多,手动去 ...

  2. [題解](單調隊列dp)【2016noip福建夏令營】探險

    P1917 -- 探险 时间限制:1000MS      内存限制:131072KB 题目描述(explore.cpp) π+e去遗迹探险,遗迹里有 N 个宝箱,有的装满了珠宝,有的装着废品. π+e ...

  3. eShopOnContainers 是一个基于微服务的.NET Core示例框架

    找到一个好的示例框架很难,但不是不可能.大多数是小型Todo风格的应用程序,通常基于SimpleCRUD.值得庆幸的是,Microsoft已经为eShopOnContainers创建了一个基于微服务的 ...

  4. Oracle Database Hang While Loading 3rd party SBT Library And After This Nobody Can Access The Database (windows login 登陆hang )

    Applies to: Oracle Database - Enterprise Edition - Version 11.2.0.4 and later Microsoft Windows x64 ...

  5. 110 Balanced Binary Tree 平衡二叉树

    给定一个二叉树,确定它是高度平衡的.对于这个问题,一棵高度平衡二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过 1.案例 1:给出二叉树 [3,9,20,null,null,15,7] ...

  6. 18000 Two String 暴力。——— 读题

    http://acm.scau.edu.cn:8000/uoj/mainMenu.html 18000 Two String 时间限制:1000MS  内存限制:65535K提交次数:0 通过次数:0 ...

  7. MDX之Avg函数使用

    日均值是比较常见的指标,本文对 MDX 计算日均值做一个总结 MDX 计算日均值,表达式一 WITH MEMBER Measures.[日均值] AS   Avg(      Descendants( ...

  8. vue 引用其他组件

    1.在components 目录下新建Test.vue 文件 <template> <div class="test"> <h1>{{ msg ...

  9. CImage访问像素及其像素操作总结

    MSDN的代码 COLORREF pixel; int maxY = imgOriginal.GetHeight(), maxX = imgOriginal.GetWidth(); byte r,g, ...

  10. 我的NopCommerce之旅(5): 缓存

    一.基础介绍 1.什么是cache      Web缓存是指一个Web资源(如html页面,图片,js,数据等)存在于Web服务器和客户端(浏览器)之间的副本. 2.为什么要用cache      即 ...