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. PHP保留小数的相关方法

    结合一下网上的例子 $num = 10.4567; //第一种:利用round()对浮点数进行四舍五入 但是这个如果没有两位小数也不会"两位精度" echo round($num, ...

  2. centos6.7版本下配置ssh密钥登录

    需要提前说明的是我使用的系统是centos6.7的版本. 1.我使用的是Putty登录 #ssh-keygen (生成公钥和私钥的命令) 回车之后会提示密钥要存放的目录,默认的目录是当前目录下的.ss ...

  3. 100 Same Tree 相同的树

    给定两个二叉树,写一个函数来检查它们是否相同.如果两棵树在结构上相同并且节点具有相同的值,则认为它们是相同的.示例 1:输入 :      1         1             / \    ...

  4. cmder安装

    官网地址:http://gooseberrycreative.com/cmder/ 一款非常漂亮好用的cmd工具. 在github或者官网下载后解压,点击Cmder.exe即可启动. 32位系统会遇到 ...

  5. jQuery height() innerHeight() outerHight() width() innerWidth() outerWidth()源码解读

    在第二层each,传入的对象以height举例是这样的,{padding:innerHeight,content:height,"":outerHeight} 对它遍历调用func ...

  6. 安装wamp时出现httpd.exe无法找到组件MSVCR100.dll的解决办法

    很多朋友在安装wamp server时会出现以下错误,安装之后无法启动httpd.exe服务. --------------------------- httpd.exe - 无法找到组件 ----- ...

  7. 初始Activity启动模式

    之前断断续续接触了解过Android activity,可是从没有应用过,这次因为一个严重缺陷再次认识Activity的启动模式,相比以前理解更深入了,以后使用检查也就更方便了. 任务栈(Task S ...

  8. Spring使用_进阶

    概述 本文主要写了几个关于Spring Aware,多线程,计划任务(定时任务),条件注解,组合注解,元注解,Spring测试的小例子以及关于@Enable*注解的工作原理的理解. Spring Aw ...

  9. SQLServer查询语句收集(非常实用)

    =============================    SQLServer语句收集1  =========================== 1.数据操作  Select      --从 ...

  10. xml文件解析和序列化

    转载:http://blog.csdn.net/liuhe688/article/details/6415593 XmlPullParser parser = Xml.newPullParser(); ...