Java开发分库分表需要解决的问题及mycat是怎样实现分库分表的?( 四 )


+-----------+------------------------------------------------+
可以看到数据还是遵循了节点的规律 。平均分布 。
至于schema.xml的配置 。是整个分库的核心 。我索性也给出一个配置来 。供参考 。
<?xml version=\"1.0\"?>
<!DOCTYPE mycat:schema SYSTEM \"schema.dtd\">
<mycat:schema xmlns:mycat=\"http://io.mycat/\">
<!-- 定义MyCat的逻辑库 -->
<schema name=\"db1\" checkSQLschema=\"false\" sqlMaxLimit=\"100\" >
<table name=\"shard_mod_long\" primaryKey=\"ID\" type=\"global\" dataNode=\"pxcNode11,pxcNode21,pxcNode31\" rule=\"mod-long\" />
<table name=\"shard_auto\" primaryKey=\"ID\" type=\"global\" dataNode=\"pxcNode11,pxcNode21,pxcNode31\" rule=\"auto-sharding-long\" />
</schema>
<!-- 定义MyCat的数据节点 -->
<dataNode name=\"pxcNode11\" dataHost=\"dtHost\" database=\"db1\" />
<dataNode name=\"pxcNode21\" dataHost=\"dtHost2\" database=\"db1\" />
<dataNode name=\"pxcNode31\" dataHost=\"dtHost3\" database=\"db1\" />
<!-- 定义数据主机dtHost 。连接到MySQL读写分离集群 ,schema中的每一个dataHost中的host属性值必须唯一-->
<!-- dataHost实际上配置就是后台的数据库集群 。一个datahost代表一个数据库集群 -->
<!-- balance=\"1\" 。全部的readHost与stand by writeHost参与select语句的负载均衡-->
<!-- writeType=\"0\" 。所有写操作发送到配置的第一个writeHost 。这里就是我们的hostmaster 。第一个挂了切到还生存的第二个writeHost-->
<dataHost name=\"dtHost\" maxCon=\"500\" minCon=\"20\" balance=\"1\"
writeType=\"0\" dbType=\"mysql\" dbDriver=\"native\" switchType=\"1\" slaveThreshold=\"100\">
<!--心跳检测 -->
<heartbeat>show slave status</heartbeat>
<!--配置后台数据库的IP地址和端口号 。还有账号密码 -->
<writeHost host=\"hostMaster\" url=\"192.168.163.128:33091\" user=\"mycat_user\" password=\"mycat\" />
</dataHost>
<dataHost name=\"dtHost2\" maxCon=\"500\" minCon=\"20\" balance=\"1\"
writeType=\"0\" dbType=\"mysql\" dbDriver=\"native\" switchType=\"1\" slaveThreshold=\"100\">
<!--心跳检测 -->
<heartbeat>show slave status</heartbeat>
<!--配置后台数据库的IP地址和端口号 。还有账号密码 -->
<writeHost host=\"hostMaster\" url=\"192.168.163.128:33071\" user=\"mycat_user\" password=\"mycat\" />
</dataHost>
<dataHost name=\"dtHost3\" maxCon=\"500\" minCon=\"20\" balance=\"1\"
writeType=\"0\" dbType=\"mysql\" dbDriver=\"native\" switchType=\"1\" slaveThreshold=\"100\">
<!--心跳检测 -->
<heartbeat>show slave status</heartbeat>
<!--配置后台数据库的IP地址和端口号 。还有账号密码 -->
<writeHost host=\"hostMaster\" url=\"192.168.163.128:33061\" user=\"mycat_user\" password=\"mycat\" />
</dataHost>
</mycat:schema>
=================================================================================================
用Mycat 。学会数据库读写分离、分表分库
php疑难杂症铺 2017-09-13 14:31
用Mycat 。学会数据库读写分离、分表分库
系统开发中 。数据库是非常重要的一个点 。除了程序的本身的优化 。如:SQL语句优化、代码优化 。数据库的处理本身优化也是非常重要的 。主从、热备、分表分库等都是系统发展迟早会遇到的技术问题问题 。Mycat是一个广受好评的数据库中间件 。已经在很多产品上进行使用了 。希望通过这篇文章的介绍 。能学会Mycat的使用 。
安装
Mycat官网:http://www.mycat.io/
可以了解下Mycat的背景和应用情况 。这样使用起来比较有信心 。
Mycat下载地址:http://dl.mycat.io/
官网有个文档 。属于详细的介绍 。初次入门 。看起来比较花时间 。
下载:
建议大家选择 1.6-RELEASE 版本 。毕竟是比较稳定的版本 。
安装:
根据不同的系统选择不同的版本 。包括linux、windows、mac,作者考虑还是非常周全的 。当然 。也有源码版的 。(ps:源码版的下载后 。只要配置正确 。就可以正常运行调试 。这个赞一下 。)
Mycat的安装其实只要解压下载的目录就可以了 。非常简单 。
安装完成后 。目录如下:
目录说明binmycat命令 。启动、重启、停止等catletcatlet为Mycat的一个扩展功能confMycat 配置信息,重点关注libMycat引用的jar包 。Mycat是java开发的logs日志文件 。包括Mycat启动的日志和运行的日志 。
配置
Mycat的配置文件都在conf目录里面 。这里介绍几个常用的文件:

推荐阅读