1.Mycat就是MySQL Server,而Mycat后面连接的MySQL Server,就好象是MySQL的存储引擎,如InnoDB,MyISAM等.因此,Mycat本身并不存储数据,数据是在后端的MySQL上存储的,因此数据可靠性以及事务等都是MySQL保证的.2.Mycat是数据库中间件,就是介于数据库与应用之间,进行数据处理与交互的中间服务。从原有的一个库,被切分为多个分片数据库,所有的分片数据库集群构成了整个完整的数据库存储.所以有了数据库中间件,应用只需要集中与业务处理,大量的通用的数据聚合,事务,数据源切换都由中间件来处理,中间件的性能与处理能力将直接决定应用的读写性能,所以一款好的数据库中间件至关重要。
术语
分片规则(rule)
逻辑库(schema)
分片节点(dataNode)
节点主机(dataHost)
Mycat使用
首先要安装,mysql5.7和mycat,并且两台主机要先做好mysql的主从复制,且两台主机的mysql都要存在db1数据库,用来存放mycat的数据.
关于mysql的主从复制,这里就不贴出了,可以移步以下链接:
配置mycat
vim wrapper.conf
5 wrapper.Java.command=/usr/bin/java #java命令所在目录
31 wrapper.java.additional.5=-XX:MaxDirectMemorySize=2G 根据实际内存设置
33 wrapper.java.additional.7=-Dcom.sun.management.jmxremote.port=2984
定义mycat中可以创建的表,以及哪些节点可以使用哪些表
7<table dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />
11<table primaryKey="ID" type="global" dataNode="dn1,dn2,dn3" />
12<table primaryKey="ID" type="global" dataNode="dn1,dn2" />
14<table primaryKey="ID" autoIncrement="true" dataNode="dn1,dn2,dn3"
15 rule="mod-long" />
19 <table primaryKey="ID" dataNode="dn1,dn2"
20 rule="sharding-by-intfile" />
21 <table primaryKey="ID" dataNode="dn1,dn2"
22 rule="sharding-by-intfile">
23 <childTable primaryKey="ID" joinKey="customer_id"
24 parentKey="id">
25 <childTable joinKey="order_id"
26 parentKey="id" />
27 </childTable>
28 <childTable primaryKey="ID" joinKey="customer_id"
29 parentKey="id" />
30 </table>
36 <dataNode dataHost="server33.lalala.com" database="db1" />
37 <dataNode dataHost="server33.lalala.com" database="db1" />
38 <dataNode dataHost="server33.lalala.com" database="db1" />
43 <dataHost maxCon="1000" minCon="10" balance="0"
44 writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
45 <heartbeat>select user()</heartbeat>
46 <!-- can have multi write hosts -->
连接数据库的用户密码,稍后还要在数据库授权
因为我们做的是高可用,所以33和44都具有写的功能