概述
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方面内容,感兴趣的朋友可以关注下!