使用mycat进行分表操作,水平分表和垂直分表,水平分表,将同一个表的数据按一定规则存放在不同服务器上,表的字段相同。垂直分表,不同表放在不同服务器上,表之间没有联系
mycat官网: http://www.mycat.io/
下载mycat linux版本,上传到服务器解压到/usr/local/ 目录下
tar -xvcf Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz -C /usr/local
切换到配置文件目录下,
-
vim server.xml
设置账户和密码,以及虚拟数据库mydb<user name="zhangs"> <property name="password">123456</property> <property name="schemas">mydb</property> </user>
-
vim schema.xml
<mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="mydb" checkSQLschema="false" sqlMaxLimit="100"> <!-- 取模分片 --> <table name="content" primaryKey="id" dataNode="dn001,dn002" rule="auto-sharding-long" /> <table name="content_cate" primaryKey="id" dataNode="dn003"/> </schema> <!-- 申明节点对应的database --> <dataNode name="dn001" dataHost="localhost001" database="shop" /> <dataNode name="dn002" dataHost="localhost002" database="shop" /> <dataNode name="dn003" dataHost="localhost003" database="shop" /> <dataHost name="localhost001" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="192.168.154.131:3306" user="root" password="root"> </writeHost> </dataHost> <dataHost name="localhost002" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="192.168.154.132:3306" user="root" password="root"> </writeHost> </dataHost> <dataHost name="localhost003" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="192.168.154.134:3306" user="root" password="root"> </writeHost> </dataHost> </mycat:schema>
-
vim autopartition-long.txt
# range start-end ,data node index # K=1000,M=10000. 0-500M=0 500M-1000M=1 # 1000M-1500M=2 注掉
-
运行
cd /usr/local/mycat/bin ./mycat start
查看是否启动成功
ps -ef|grep mycat
启动成功会打印如下信息
如果没有显示如上信息,去logs日志中查看错误信息
-
使用mysql连接mycat,我是连接本地的mycat
使用mysql客户端连接./mysql -h 127.0.0.1 -P 8066 -u zhangs -p
提示输入密码:123456
登录成功
然后就可以执行数据库操作了,将同一张表拆分到不同服务器上,可以查询到信息