mycat读写分离

版本:mycat1.0  
只需要读写分离的功能,分库分表的都不需要。

涉及到的配置文件:  
1.conf/server.xml  
主要配置的是mycat的用户名和密码,mycat的用户名和密码和mysql的用户名密码是分开的,应用连接mycat就用这个用户名和密码。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://org.opencloudb/">
  <system>
    <!--
    <property name="processors">32</property>
    <property name="processorExecutor">32</property>
    <property name="serverPort">8066</property>
    <property name="managerPort">9066</property>
    -->
  </system>
  <user name="root">
    <property name="password">root</property>
    <property name="schemas">数据库名称</property>
  </user>
</mycat:server>

2.conf/schema.xml  
主要配置主从库的数据库连接地址信息,schema里面不能配置table的定义,如果配置了就会检查sql的语法,目前mycat还有很多问题。

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/">

  <schema name="数据库名称" checkSQLschema="false" dataNode="dn1">
  </schema>

  <dataNode name="dn1" dataHost="localhost1" database="数据库名称" />
  <dataHost name="localhost1" maxCon="1000" minCon="100" balance="1" 	 dbType="mysql" dbDriver="native">
    <heartbeat>select user()</heartbeat>
    <!-- can have multi write hosts -->
    <writeHost host="10.1.3.50" url="10.1.3.50:3306" user="数据库用户名"  password="数据库密码">
      <!-- can have multi read hosts -->
      <readHost host="10.1.3.5" url="10.1.3.5:3306" user="数据库用户名" password="数据库密码" />
      <readHost host="10.1.3.6" url="10.1.3.6:3306" user="数据库用户名" password="数据库密码" />
    </writeHost>
    <!--writeHost host="10.1.3.34" url="10.1.3.34:3306" user="数据库用户名"  password="数据库密码"-->
      <!-- can have multi read hosts -->
      <!--readHost host="10.1.3.7" url="10.1.3.7:3306" user="数据库用户名" password="数据库密码" /-->
      <!--readHost host="10.1.3.8" url="10.1.3.8:3306" user="数据库用户名" password="数据库密码" /-->
    <!--/writeHost-->
  </dataHost>
</mycat:schema>

高可用性以及读写分离  
MyCAT的读写分离机制如下:  
• 事务内的SQL,全部走写节点,除非某个select语句以注释/*balance*/开头  
• 自动提交的select语句会走读节点,并在所有可用读节点中间随机负载均衡  
• 当某个主节点宕机,则其全部读节点都不再被使用,因为此时,同步失败,数据已经不是最新的,MYCAT会采用另外一个主节点所对应的全部读节点来实现select负载均衡。  
• 当所有主节点都失败,则为了系统高可用性,自动提交的所有select语句仍将提交到全部存活的读节点上执行,此时系统的很多页面还是能出来数据,只是用户修改或提交会失败。

dataHost的balance属性设置为:  
• 0,不开启读写分离机制  
• 1,全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与 M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡。  
• 2,所有的readHost与writeHost都参与select语句的负载均衡,也就是说,当系统的写操作压力不大的情况下,所有主机都可以承担负载均衡。  
一个dataHost元素,表明进行了数据同步的一组数据库,DBA需要保证这一组数据库服务器是进行了数据同步复制的。writeHost相当于Master DB Server,而旗下的readHost则是与从数据库同步的Slave DB Server。当dataHost配置了多个writeHost的时候,任何一个writeHost宕机,Mycat 都会自动检测出来,并尝试切换到下一个可用的writeHost。

MyCAT支持高可用性的企业级特性,根据您的应用特性,可以配置如下几种策略:  
• 后端数据库配置为一主多从,并开启读写分离机制。  
• 后端数据库配置为双主双从(多从),并开启读写分离机制  
• 后端数据库配置为多主多从,并开启读写分离机制  
后面两种配置,具有更高的系统可用性,当其中一个写节点(主节点)失败后,Mycat会侦测出来(心跳机制)并自动切换到下一个写节点,MyCAT在任何时候,只会往一个写节点写数据。

时间: 2024-10-06 01:48:23

mycat读写分离的相关文章

Mycat读写分离和分库分表配置

Mycat是一个开源的分布式数据库系统,不同于oracle和mysql,Mycat并没有存储引擎,但是Mycat实现了mysql协议,前段用户可以把它当做一个Proxy.其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端mysql存储引擎里面.最新版本的Mycat不仅支持mysql,还可以支持MS SqlServer,Oracle,DB2等关系型数据库,而且还支持MongoDB这种NoSQL.Mycat对调用者屏蔽了后端存储具体实现. Mycat的原理是先拦截用户的SQL语句并做分

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

LVS+MYCAT+读写分离+MYSQL主备同步部署手册 1          配置MYSQL主备同步…. 2 1.1       测试环境… 2 1.2       配置主数据库… 2 1.2.1         编辑my.cnf文件… 2 1.2.2         重启数据库… 2 1.3       锁定主数据库DDL操作… 2 1.4       主备已有数据同步… 2 1.5       停止从服务… 3 1.6       配置备用数据库… 3 1.6.1         编辑my

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

1      配置MYSQL主备同步 1.1    测试环境 mysql版本:5.6.24: 操作系统内核版本:Linux-3.13-0-32 主数据库IP:192.168.10.3: 主数据库名:db351353: 备用数据库IP:192.168.10.4: 备用数据库名:db351353. 1.2    配置主数据库 1.2.1   编辑my.cnf文件 #服务器唯一ID,一般取IP最后一段 server_id = 3 #启用二进制日志 log_bin=mysql_bin #需要备份的数据库

【转载】LVS+MYCAT+读写分离+MYSQL主备同步部署手册(邢锋)

By leo | 2015/05/13 0 Comment LVS+MYCAT+读写分离+MYSQL主备同步部署手册 1          配置MYSQL主备同步…. 2 1.1       测试环境… 2 1.2       配置主数据库… 2 1.2.1         编辑my.cnf文件… 2 1.2.2         重启数据库… 2 1.3       锁定主数据库DDL操作… 2 1.4       主备已有数据同步… 2 1.5       停止从服务… 3 1.6      

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

http://blog.csdn.net/zhanglei_16/article/details/50707487 Mycat读写分离.主从切换学习问题一:分表.分库的优缺点,以及分表无法成为主流分表方式:是在将一个大表,在一个db库内,分成多个分表,优点是:分开之后的表,仍然在一个库内,便于查看.管理.缺点:db只能在一个服务器内,不能解决I/O问题,负载集中 分库方式:将一个大表,分布在多个DB中,每个DB只保留一部分数据,所有数据组合起来才是全库的数据.优点:优点是分担IO.负载均衡,可以

web 项目 连接mycat 读写分离失效问题,

问题描述:mycat 读写分离已配好,在sql工具上查询操作是可以的,但是在项目中,读数据就走write 数据库, 解决      :环境spring +mvc +ibaites,在java中自己写jdbc连接是可以,读写分离,但是就是在业务程序中不能读写分离 之前是想是不是jdbc问题,换了几个jdbc连接池还是不行,最后各种查资料(没用网上根本没有这个), 最后各种方法试最后定位到事务的问题,因为代码命名不规范,方法被纳入到事务管理,因此造成读写数据都走write数据库 结论:    myc

Mycat读写分离部署分享

安装配置mycat 涉及到的安装包: 安装包:Mycat-server-1.6-RELEASE-linux.tar.gz 依赖环境:jdk-7u75-linux-x64.tar.gz 1安装JDK (1)创建java目录 # mkdir -p /usr/local/java (2)上传JDK到/usr/local/java目录下 (3)解压jdk-7u75-linux-x64.tar.gz # cd /usr/local/java # tar -zxvf jdk-7u75-linux-x64.t

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

背景 最近新项目需要用到mysql数据库,并且由于数据量大的原因,故打算采用1主1从(主数据库负责增.删.改操作:从数据库负责查操作)的数据库架构,在实现主从之后还要实现读写分离的代理,在网上搜寻了很久,自己也了解了一些资料,目前有三种代理组件:1.mysql_proxy   2.amoeba   3.mycat   我采用了第3种,选择mycat的原因下面会提到. 部署环境 我在我虚拟机下面装了三台Centos7_x64系统: 1.192.168.8.47 主mysql服务器 2.192.16

Mysql mycat读写分离

Mysql mycat读写分离: 下载网址:http://dl.mycat.ioMycat官方网址:http://mycat.org.cn 说明:10.0.1.2为mycat服务器,10.0.1.3.10.0.1.4为mysql服务器 yum install java-1.8.0-openjdk tar zxfv Mycat-server-1.6.7.5-test-20200109231555-linux.tar.gz -C /space/ 配置读写分离: vi /space/mycat/con

mycat读写分离与主从切换

1, 分库分表的优缺点.以及为什么分表方式无法成为主流? 分表:在台服务器上,优点是易维护,类似表分区,缺点是在一台db服务器上,无法分担IO.负载集中. 分库:在多台服务器上,优点是分担IO.负载均衡,缺点是较不易维护.数据统计以及jion操作有些难度. 数据库切分的目的是为了分担IO.负载均衡,分表无法达到最佳的要求,所以无法成为主流. 2, 准备主库 tar -xvf mysql-5.6.12.tar.gz cd mysql-5.6.12 time cmake . -DCMAKE_INST