下载mycat,解压后操作
http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
启动mycat 执行bin目录下指令
./bin/mycat start
查看有哪些命令可以执行
../bin/mycat --help
Usage: ../bin/mycat { console | start | stop | restart | status | dump }
连接mycat
mysql -uroot -123456 -h192.168.225.129 -P8066
查看docker ip
docker inspect master1 |grep IPAddress
Mysql命令 查看数据库
mysql> show databases;
Mysql命令查看数据库库表
mysql> use TESTDB;
mysql> show tables;
Mycat的端口
8066 类似于mysql 3306端口(客户端端口)
9066 Mycat 管理端口
Schema.xml文件
是Mycat最重要的配置文件之一。主要管理Mycat逻辑库、逻辑表、表、分片规则、Datasource。
Schema标签
指定Mycat的逻辑库(mycat的Schema,可以指定多个schema)
checkSQLschema
False 过滤schema定义。
select * from testdb.company => select * from company;
True 不过滤schema定义。有可能报错。
sqlMaxLimit
Limit 自动加入limit,会影响最后返回条数。例如:select * from company。
table标签
制定Mycat中的逻辑表。最后要做数据分片的表。
mycat中的表,可以和实体有具体映射关系,也可以没有具体映射关系(如果没有映射关系会报错)。
dataNode
把相应的表存到对应的DB中。
rule
分片规则。对应rule.xml中的规则。
ruleRequired
指定该属性的表是否需要分片规则。
True 必须制定。如果没有制定,就会报错。
primaryKey
如果使用非主键进行分片,那么Mycat会缓存主键和具体dataNode的信息,如果下次再使用非主键进行查询的时候,就不用广播所有dn。
autoIncrement
Mycat根据last_insert_id()返回结果。这个需要mysql主键设置配合。
type
逻辑表的类型。普通表和全局表。
needAddLimit
是否自动在每一条SQL语句后面加上limit限制。
dataHost标签
主要定义和Mysql集群有关的信息,数据实例、读写分离配置和心跳检测语句。
balance 负载均衡配置
0 代表不开启读写分离,所有的读操作都发送到writeHost上。
1 writeHost和readHost都要参与select语句的负载均衡。
双主双从模式 M1->S1, M2->S2, M1和M2互为主备。M2/S1/S2都要参与select语句的负载均衡。
2 所有读操作都随机分配给writeHost/readHost
3 所有的读操作随机分发到writeHost下面的readHost上执行。
writeType
0 所有的写操作都分发到第一个writeHost。如果第二个挂了,分发到第二个。
1 所有的写操作都要随机分发到所有配置的writeHost上。1.5以后不推荐。
dbType
支持多种db类型。
switchType
-1 代表不自动切换
1 默认值,自动切换。
2 基于Mysql主从同步的状态决定是否切换
show slave status;
3 基于MySQL Galera Cluster切换机制。
show status like ‘wsrep%’;
Server.xml文件
主要用于管理Mycat的用户名,权限,黑白名单等等设置。这个文件主要和Mycat Server运行环境有关。
System标签
属性 | 说明 | 备注 |
useSqlStat | 开启实时统计 | 1为开启,0为关闭 |
useGlobleTableCheck | 全局表一致性检测 | 1为开启,0为关闭 |
sequnceHandlerType | Mycat全局ID类型 | 0本地文件方式 |
useCompression | mysql压缩协议 | 1为开启,0为不开启 |
fakeMySQLVersion | 伪装的MySQL版本号 |
|
processorBufferChunk | 每次分配Socket Direct Buffer大小 | 默认4096字节 |
processors | 系统可用线程数 | 默认Runtime.getRuntime().availableProcessors()返回值 |
processorExecutor | NIOProcessor共享businessExecutor线程池大小 |
|
processorBufferPoolType | 每次分配Socket Direct Buffer大小 | 默认是4096个字节 |
maxStringLiteralLength | sql解析时最大文本长度 | 默认是65535(即64K) |
backSocketNoDelay | TCP连接相关属性 | 默认值1 |
frontSocketNoDelay | TCP连接相关属性 | 默认值1 |
serverPort | 指定服务端口 | 默认8066 |
managerPort | 制定管理端口 | 默认9066 |
idleTimeout | 连接空闲时间 | 默认30分钟,单位毫秒 |
bindIp | Mycat服务监听的IP地址 |
|
frontWriteQueueSize | 前端连接写队列长度 | 为了让用户知道是否队列过长(SQL结果集返回太多)。当超过指定阀值后,会产生一个告警日志 |
handleDistributedTransactions | 分布式事务开关 | 0不过滤分布式事务 |
useOffHeapForMerge | 是否让Mycat开启非堆内存 | 1 开启,0关闭 |
memoryPageSize | 内存分页大小 |
|
useStreamOutput | 是否使用流输出 |
|
systemReserveMemorySize | 系统保留内存大小 |
|
useZKSwitch | 是否采用zookeeper协调切换 | true/false |
Privileges标签
控制DML:insert update select delete
单独给select权限:0010
单独给insert权限:1000
Firewall标签
定义访问控制策略:如白名单/黑名单
User标签
定义可访问mycat的用户名称/密码/是否只读
rule.xml文件
定义分片规则策略文件。
tableRule标签
定义table分片策略
rule标签
策略定义标签
columns
对应的分片字段
algorithm标签
tableRule分片策略对应的function名称
function标签
定义分片函数