四时宝库

程序员的知识宝库

领导:mycat如何配置多个逻辑库来实现读写分离?

概述

MyCat是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理(类似于Mysql Proxy),用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。

因为目前我们的系统只用到读写分离,暂时不用分库分表,所以这里演示一下多个逻辑库的读写分离配置。核心配置文件是server.xml和schema.xml。


1、server.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
	<system>
	..............
	<user name="root" defaultAccount="true">
		<property name="password">XXXX</property>
		<property name="schemas">tms_prod,tms_app</property>
	</user>
 <user name="fslread">
		<property name="password">XXXXX</property>
		<property name="schemas">tms_prod,tms_app</property>
		<property name="readOnly">true</property>
	 
 </user>
</mycat:server>


2、schema.xml

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
 <!-- tms_prod是mycat的逻辑库名称,链接需要用的-->
 <schema name="tms_prod" checkSQLschema="false" dataNode="dn1">
 </schema>
	<schema name="tms_app" checkSQLschema="false" dataNode="dn2">
	</schema>
 <!-- database 是MySQL数据库的库名 -->
 <dataNode name="dn1" dataHost="tmsdb" database="tms_prod" />
 <dataNode name="dn2" dataHost="tmsdb" database="tms_lcp_db" />
 <dataHost name="tmsdb" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
 <heartbeat>select user()</heartbeat>
 <!-- 可以配置多个主从 -->
 <writeHost host="hostM1" url="172xxx:3306" user="root" password="xxxx">
 <!-- 可以配置多个从库 -->
 <readHost host="hostS1" url="172xxx:3306" user="root" password="xxxx" />
 </writeHost>
 </dataHost>
</mycat:schema>

3、实现效果

mycat数据库如下:可以看到有2个逻辑库,应用层面也可以很容易实现多数据源配置。


后面会分享更多devops和DBA方面内容,感兴趣的朋友可以关注下!

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接