MYCAT轻松实现mysql读写分离

不论是传统的Replication集群,还是多主节点的PXC集群,都可以通过在程序中配置不同的节点IP地址的方式实现读写分离,但是这样编写程序不便,而且mysql节点一旦发生变化程序也要跟着改变。但是使用开源的mycat就可以轻松实现读写sql的路由分发,不管是主从结构还是多主结构都能很好的支持。而且由于是JAVA平台下的程序,可以轻松的跨操作系统使用,下面以windows平台为例介绍mycat。

首先需要配置JAVA_HOME的环境变量,不然无法开启mycat。推荐使用jdk 1.7

然后下载mycat的windows版本http://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release-20180122220033-win.tar.gz

解压mycat。然后修改两个配置文件即可。包括分片,读写分离等功能几乎都由这两个文件提供。在Linux中使用的配置文件格式也是一样的。

首先是conf目录下的schema.xml文件,写法如下





	
		
	
	
	

	
		select mytable()
		
		
			
			
		
		
	

这个文件里面标明了逻辑库和物理节点。上面的GOODDB都是逻辑库名。mysql客户端连接到mycat的端口之后,需要使用的库名就是这个GOODDB,而且大小写敏感。

dataNode就是分片节点,里面的database="testdb",其中testdb是一个物理库名字,而一个dataNode连接一个dataHost,在下面使用dataHost节点来具体写明每个物理节点的IP和读写规划。可以写多个dataNode,每个dataNode对应不同的物理库,而且可以多个dataNode对应同一个dataHost节点

标签里面是用来做心跳检测的sql语句,一般用select 表名()即可。

标签里面写明写物理节点的IP地址和端口,物理用户名和密码,可以设置多个标签,但是只会往一个writehost里面写数据,只有当第一个writehost挂掉之后,才会使用下面的writeHost。

标签里面可以写一个或者多个,当readHost不止一个的时候,那么Mycat可以在多个readHost中进行负载均衡。减轻单个读节点的压力。

其中writeHost和readHost都需要写明相关物理数据库上面的用户名和密码。

还有一个表格必须要重视的就是server.xml,这里面配置了mycat的监听端口,逻辑用户,缓存大小等参数,下面给出一个例子





	
	0 
	1
	0  
	0  

		2
	false 
       
         
	
	
        
		0
		
		
		
		
		
		
		
		
		0
		
			
		1

		
        64k

		
		1k

		0

		
		384m


		
		false

		
		

		
		

	
	
	
	
	
	
	
	
	
	

	
		654321
		GOODDB
		
		
		
	

	
		user
		GOODDB
		true
	

其中serverPort指明了mycat服务器的访问端口,也就是mysql客户端需要配置的端口。标签定义了访问mycat的用户名,密码,数据库和是否只读。其中schemas项目要和schema.xml中的schema标签对应起来。


两个文件都配置好之后,就可以开启mycat了。方法是运行bin目录下的startup_nowrap.bat,然后使用mysql客户端或者jdbc等等访问本机的8066端口就可以实现后端两台主从服务器自动的读写分离了。而对于客户端来说,访问8066和访问普通mysql数据库的3306端口没什么区别。



你可能感兴趣的:(MYCAT轻松实现mysql读写分离)