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. 安装CocoaPods,ios的库安装工具

    1.需要ruby环境,mac pro自带了 2.终端输入:sudo gem install cocoapods

  2. excel输入值非法,限定了可以输入的数值怎么办

    回到excel的编辑界面,点击工具栏的“数据”标签,如图所示. 继续在“数据”标签的下面找到“数据验证”或“数据有效性”的按钮,点击该选项,然后继续下一步. 在弹出的选择框中选择“数据验证”选项,如图 ...

  3. hdu6311( 2018 Multi-University Training Contest 2)

    bryce1010模板 http://acm.hdu.edu.cn/showproblem.php?pid=6311 从dls思路中,我整理一下自己的思路: 1.首先也是建图 2.建图结束后,一个df ...

  4. odoo9 部署步详细步骤

    sudo apt-get updatesudo apt-get dist-upgrade 一:安装和配置pg sudo apt-get install  postgresql sudo su - po ...

  5. 牛客网Java刷题知识点之Iterator和ListIterator的区别

    不多说,直接上干货! https://www.nowcoder.com/ta/review-java/review?query=&asc=true&order=&page=21 ...

  6. javaoo面向对象

  7. nodejs下express+ejs环境搭建

    nodejs下express+ejs环境搭建   分类: Nodejs 1.进入需要创建项目的目录    cd F:\nodeCode     2.创建一个带ejs模板工程,工程名为haha    e ...

  8. CodeSmith Generator 7.0.2

    [工具]CodeSmith Generator 7.0.2激活步骤 只看楼主 收藏 回复     M炎骫毒逆天T   c#攻城狮 8   学过三层的人应该认识CodeSmith Generator吧, ...

  9. git push 冲突

    git commit -am "test 3" git pull 用自己的:git checkout --ours xxxx路径xxxx 用他人的:git checkout --t ...

  10. Oracle中查询和定位数据库问题的SQL语句

    --1)查询和定位数据库问题的SQL语句--Oracle常用性能监控SQL语句.sql --1查询锁表信息 select vp.SPID, vs.P1, vs.P1RAW, vs.P2, vs.EVE ...