把一张表分片存储到三个数据库中
MyCat需要有JDK环境的支持所以在运行Mycat之前需要安装JDK.
MyCat官方网站下载1.6版本的Mycat到节点上,
Schema.xml介绍
Schema.xml作为MyCat中重要的配置文件之一,管理着MyCat的**逻辑库、表、**分片规则、DataNode以及DataSource。
Schema.xml文件位置
mycat1.6/mycat/conf
我的Schema.xml文件详细信息
select user()
server.xml保存mycat需要的系统配置信息。最常用的是配置用户名、密码及权限
0
0
2
0
0
1
1m
1k
0
384m
true
123456
TESTDB
user
TESTDB
true
rule.xml定义了我们对表进行拆分所涉及到的规则定义。我们可以灵活的对表使用不同的分片算法,或者对表使用相同的算法但具体的参数不同.
无需配置,默认就好
在mycat的bin目录下执行命令
./mycat start
通过查看日志Mycat的日志文件查看Mycat是否启动成功
日志文件位置
mycat/logs/mycat.log
mycat/logs/wrapper.log
这里贴上我的mycat.log文件内容
2019-08-20 23:34:31.422 INFO [WrapperSimpleAppMain] (io.mycat.backend.datasource.PhysicalDBPool.(PhysicalDBPool.java:100)) - total resouces of dataHost localhost1 is :1
2019-08-20 23:34:32.097 INFO [WrapperSimpleAppMain] (io.mycat.cache.CacheService.createLayeredPool(CacheService.java:125)) - create layer cache pool TableID2DataNodeCache of type encache ,default cache size 10000 ,default expire seconds18000
2019-08-20 23:34:32.113 INFO [WrapperSimpleAppMain] (io.mycat.cache.DefaultLayedCachePool.createChildCache(DefaultLayedCachePool.java:80)) - create child Cache: TESTDB_ORDERS for layered cache TableID2DataNodeCache, size 50000, expire seconds 18000
2019-08-20 23:34:33.482 INFO [WrapperSimpleAppMain] (io.mycat.config.classloader.DynaClassLoader.(DynaClassLoader.java:34)) - dyna class load from ./catlet,and auto check for class file modified every 60 seconds
2019-08-20 23:34:33.483 INFO [WrapperSimpleAppMain] (io.mycat.MycatServer.startup(MycatServer.java:266)) - ===============================================
2019-08-20 23:34:33.483 INFO [WrapperSimpleAppMain] (io.mycat.MycatServer.startup(MycatServer.java:267)) - MyCat is ready to startup ...
2019-08-20 23:34:33.483 INFO [WrapperSimpleAppMain] (io.mycat.MycatServer.startup(MycatServer.java:279)) - Startup processors ...,total processors:1,aio thread pool size:4
each process allocated socket buffer pool bytes ,a page size:2097152 a page's chunk number(PageSize/ChunkSize) is:512 buffer page's number is:20
2019-08-20 23:34:33.483 INFO [WrapperSimpleAppMain] (io.mycat.MycatServer.startup(MycatServer.java:280)) - sysconfig params:SystemConfig [processorBufferLocalPercent=100, frontSocketSoRcvbuf=1048576, frontSocketSoSndbuf=4194304, backSocketSoRcvbuf=4194304, backSocketSoSndbuf=1048576, frontSocketNoDelay=1, backSocketNoDelay=1, maxStringLiteralLength=65535, frontWriteQueueSize=2048, bindIp=0.0.0.0, serverPort=8066, managerPort=9066, charset=utf8, processors=1, processorExecutor=4, timerExecutor=2, managerExecutor=2, idleTimeout=1800000, catletClassCheckSeconds=60, sqlExecuteTimeout=300, processorCheckPeriod=1000, dataNodeIdleCheckPeriod=300000, dataNodeHeartbeatPeriod=10000, clusterHeartbeatUser=_HEARTBEAT_USER_, clusterHeartbeatPass=_HEARTBEAT_PASS_, clusterHeartbeatPeriod=5000, clusterHeartbeatTimeout=10000, clusterHeartbeatRetry=10, txIsolation=3, parserCommentVersion=50148, sqlRecordCount=10, bufferPoolPageSize=2097152, bufferPoolChunkSize=4096, bufferPoolPageNumber=20, maxResultSet=524288, bigResultSizeSqlCount=10, bufferUsagePercent=80, flowControlRejectStrategy=0, clearBigSqLResultSetMapMs=600000, defaultMaxLimit=100, sequnceHandlerType=2, sqlInterceptor=io.mycat.server.interceptor.impl.DefaultSqlInterceptor, sqlInterceptorType=select, sqlInterceptorFile=/root/mycat1.6/mycat/logs/sql.txt, mutiNodeLimitType=0, mutiNodePatchSize=100, defaultSqlParser=druidparser, usingAIO=0, packetHeaderSize=4, maxPacketSize=16777216, mycatNodeId=1]
在Mysql服务器上根据schema.xml的配置创建三个数据库,分别是db1,db2,db3,然后三个数据库中必须创建一样的表item.
create table item(int id,int age);
配置完毕以及在Mysql服务器上创建完数据库之后,重新启动mycat。使用mysql客户端连接mycat
在连接上数据库之后Mycat会在TESTDB数据库中自动生成一张item表.
在Mycat客户端插入数据
这里我们在Mycat客户端插入了6条数据,那么这6条数据会怎么分配呢?会全部分配到db1呢还是?
结果是每个库中两个.