mycat读写分离方案一
1.什么是MYCAT
一个彻底开源的,面向企业应用开发的大数据库集群
支持事务、ACID、可以替代MySQL的加强版数据库
一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群
一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server
结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
一个新颖的数据库中间件产品
2.Mycat关键特性
支持SQL92标准
支持MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常见SQL语法
遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。
基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster集群。
支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster
基于Nio实现,有效管理线程,解决高并发问题。
支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页。
支持单库内部任意join,支持跨库2表join,甚至基于caltlet的多表join。
支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。
支持多租户方案。
支持分布式事务(弱xa)。
支持XA分布式事务(1.6.5)。
支持全局序列号,解决分布式下的主键生成问题。
分片规则丰富,插件化开发,易于扩展。
强大的web,命令行监控。
支持前端作为MySQL通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。
支持密码加密
支持服务降级
支持IP白名单
支持SQL黑名单、sql注入攻击拦截
支持prepare预编译指令(1.6)
支持非堆内存(Direct Memory)聚合计算(1.6)
支持PostgreSQL的native协议(1.6)
支持mysql和oracle存储过程,out参数、多结果集返回(1.6)
支持zookeeper协调主从切换、zk序列、配置zk化(1.6)
支持库内分表(1.6)
集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)。
官网地址 :http://www.mycat.io/
3.使用mycat实现读写分离
mysql主从复制可以看另外一篇文章 mysql主从复制
主从库,同步test库。
下载
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
启动
/mycat/bin/
mycat start
/mycat/bin/
mycat stop
/mycat/bin/
mycat restart
/mycat/bin/
mycat status 查看启动状态
配置schema.xml和server.xml
schema.xml 配置数据库连接和分配
<schema name="test" checkSQLschema="false" dataNode="testBode" > </schema>
<dataNode name="testBode" dataHost="testHost" database="test" />
<!--1. writeType="0", 多有写操作发送到配置的第一个writehost,第一个挂了切到还生存的第二个writehost,重新启动后以切换后的为准,切换记录在配置文件中:dnindex.properties
2. writeType="1",所有写操作都随机的发送到配置的wtirehost,1.5以后废弃不推荐。
switchtype属性-->
<!--balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的writehost上。
balance="1",全部的readhost与standby wtirehost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与M2互为主备),正常情况下,M2,S1,S2 都参与select语句的负载均衡。
balance="2",所以读操作都随机的在writehost、readhost上分发。
balance="3",所有读请求随机的分发到writehost对应的readhost执行,writehost不负担读压力,注意balance=3只有1.4及其以后版本有,1.3没有。-->
<!--6.6.8 switchType 属性
表示不自动切换
默认值,自动切换
基于mysql主从同步的状态决定是否切换-->
<!--6.6.9 tempReadHostAvailable 属性
如果配置了这个属性writehost下面的readhost仍旧可用,默认0可配置(0、1)。-->
<dataHost name="testHost" tempReadHostAvailable="1" maxCon="1000" minCon="10" balance="3" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>show slave status</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostW1" url="127.0.0.1:3307" user="root" password="123456">
<!-- can have multi read hosts -->
<readHost host="hostR1" url="127.0.0.1:3308" user="root" password="123456"/>
</writeHost>
</dataHost>
server.xml 配置mycat 的服务器信息,如登陆账号密码,字集,监控情况
<user name="test_write"><!--连接用的账号-->
<property name="password">abcd12345678@</property><!--连接用的密码-->
<property name="schemas">test</property><!--
schema.xml的schema name>
</user>
/mycat/bin/mycat start
使用连接工具连接
mycat中间库l连接打开
主库的account表
从库的account表
mycat查询的数据
mycat修改password数据
主库更新
从库也更新到了
单独修改从库的password
主库没有变化
mycat查询只会一直查到从库的数据,证明读写已经分离
以上是 mycat读写分离方案一 的全部内容, 来源链接: utcz.com/z/533135.html