Linux is not Matrix——MyCat实现读写分离

  MyCAT 可以视为“MySQL”集群的企业级数据库,用来替代昂贵的Oracle集群,其背后是阿里曾经开源的知名产品Cobar。MyCAT的目标是:低成本的将现有的单机数据库和应用平滑迁移到“云”端,解决数据存储和业务规模迅速增长情况下的数据瓶颈问题。
  MyCat可以做的事情很多,它是一款遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。它可以实现基于心跳的自动故障切换,支持读写分离,支持MySQL主从。支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页。支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。支持多租户方案。支持分布式事务(弱xa)。

  强大的web,命令行监控。支持前端作为mysq通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。支持SQL黑名单、sql注入攻击拦截。支持分表(1.6)。集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理。

  上面都是我从官网上抄的,并没有真正的理解透彻- -

  简单来说,mycat负责和数据库进行交互,我们编程针对mycat编程,这样对开发人员来说,并没有感觉到有一层mycat来作为了中间件。

  mycat的安装非常简单,我们只需要配置几个配置文件然后启动它就行了。

  下载解压就不说了,去官网下吧。修改conf文件夹中的server.xml,这个xml配置的是类似mysql的一些配置,比如用户,默认sql解析器,等等,如果把mycat当做数据库的话,这里就是对数据库的配置。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://org.opencloudb/">
	<system>
		<property name="defaultSqlParser">druidparser</property>
		<property name="useCompression">1</property> 
		<!--1为开启mysql压缩协议-->
	</system>
	<user name="root">
		<!-- 用户名 -->
		<property name="password">root</property>
		<!-- 密码 -->
		<property name="schemas">mysqlcluster</property>
		<!-- 这个用户使用的schema -->
	</user>

	<user name="itoo">
		<property name="password">itoo</property>
		<property name="schemas">mysqlcluster</property>
		<property name="readOnly">true</property>
		<!-- 只有读的权限 -->
	</user>
</mycat:server>
  我这里只配置了俩用户,反正是为了测试,就一个读一个可写。

  然后修改schema.xml,这个xml配置的是真正的mysql数据库的地址和节点,节点是用来分库分表的我这里就没有配置。

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

	<schema name="mysqlcluster" checkSQLschema="false" sqlMaxLimit="100" dataNode="cluster"/>
	<!-- 这个Schema的基本信息 -->	
	<dataNode name="cluster" dataHost="cluster" database="clustertest" />
	<!-- dataNode用于分库分表,这里暂时没有使用 -->
	
	<dataHost name="cluster" maxCon="1000" minCon="10" balance="3"
		writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
		<!-- 配置mysql的基本信息,相当于咱们java程序中的jdbc.properties里面的内容 -->
		<!-- balance="3" 表示启动读写分离,写请求写入下面的writeHost,读请求传给readHost -->
		<heartbeat>select user()</heartbeat>
		<!-- 这里可以配置多个writeHost -->
		<writeHost host="master1" url="192.168.22.219:3306" user="root" password="root">
			<readHost host="slave" url="192.168.22.219:3307" user="root" password="root" />
		</writeHost>
	</dataHost>
</mycat:schema>
  最后还有一个rule.xml,这个xml是分库分表的规则,我暂时没有研究,就算了。

  然后启动mycat服务,进入mycat的bin目录,直接mycat start就可以了。

  启动成功之后就可以使用navicat连接了,默认端口是8066,用户名密码是上面server.xml里面配置的。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值