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. JSON脱敏

    https://blog.csdn.net/yuan487639/article/details/79151344

  2. Linux (二)

    PS :显示系统进程 -a :显示所有进程(包括其他用户的进程) -u :用户以及其他详细信息 -x :显示没有控制终端的进程 -ef :显示所有 top :用于动态地监视进程活动与系统负载的信息 p ...

  3. UWP 播放媒体控件

    最近我的uwp需要有一个有声朗读的功能,like this 点击声音按钮就可以有声朗读了.这里主要是用了媒体播放的控件. 一般我们把需求分为两种: 一种是不需要呈现播放器的样子,只需要用户点击一下别的 ...

  4. [arc063]F.すぬけ君の塗り絵2

    因为这题考虑可以观察一个性质,答案的下界为 \(2×(max(w,h)+1)\), 因为你至少可以空出一行或一列,因此这个矩形一定会经过 \(x=\frac{w}{2}\) 或 \(y=\frac{h ...

  5. Codeforces 526F Pudding Monsters

    先把题目抽象一下: 有一个静态的数组,求有多少个区间[i,j]满足:j-i==max{ai,...,aj}-min{ai,...,aj} 也就是要求max-min+i-j==0的区间数 所以肿么做呢? ...

  6. (转载)Unity 优化总结

    Unity 优化总结 2017-03-10 | 发布 大海明月  zengfeng75@qq.com  | 分类 Unity  | 标签 Unity  优化 相关文档 UGUI 降低填充率技巧两则 U ...

  7. linux增加系统监视器的快捷键

    系统命令:gnome-system-monitor 可在终端输入调用 在系统相应的快捷键设置区设置即可

  8. jQuery属性和样式操作

    回顾 1. jquery基本使用 <script src="jquery.min.js"></script><script> $(functio ...

  9. 一本通 1434:【例题2】Best Cow Fences

    Best Cow Fences 二分答案 + 前缀和 个人认为题意没有表述清楚,本题要求的是满足题意的连续子序列(难度大大降低了有木有). 本题的精度也是非常令人陶醉,请您自行体会吧! #includ ...

  10. NOIP数学相关模板整理

    $O(n)$递推求逆元 #include<cstdio> #include<cstring> #include<algorithm> using namespace ...