下载
安装
- 解压即可
编辑
conf
文件 | 文件 | 作用 | 修改内容 | | —- | —- | —- | | rule.xml | 切分算法 | 修改算法,比如修改 mod-long 分片数量为 2 | | server.xml | 虚拟为一个 MySQL | 修改访问用户名,密码和逻辑库 | | schema.xml | 数据库连接、读写分离、负载均衡、数据表映射 | 定义数据库连接、读写分离、负载均衡、数据表映射 |rule.xml
<function name="mod-long" class="io.mycat.route.function.PartitionByMod">
<!-- how many data nodes -->
<property name="count">2</property>
</function>
server.xml ```xml
Root666. test test
- schema.xml
```xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!--
定义MyCat的逻辑库,逻辑库的概念与MySQL中的 database 概念相同
可配置多个
-->
<!-- 其中checkSQLschema 表明是否检查并过滤SQL中包含schema的情况,
如逻辑库为 TESTDB, 则可能写为select * from TESTDB.edu_user,此时会自动过滤TESTDB,SQL变为select * from edu_user,
若不会出现上述写法,则可以关闭属性为false -->
<!--sqlMaxLimit默认返回的最大记录数限制,即自带 limit
MyCat1.4版本里面,用户的 Limit 参数会覆盖掉MyCat的sqlMaxLimit默认设置-->
<schema name="test" checkSQLschema="true" sqlMaxLimit="100">
<!-- 配置分片中真实数据库中的表事务逻辑表 -->
<table name="t_user" primaryKey="id" dataNode="dn1,dn2" rule="mod-long"/>
</schema>
<!--
定义MyCat的数据节点
-->
<!-- database 真实数据库 -->
<dataNode name="dn1" dataHost="cluster1" database="test" />
<dataNode name="dn2" dataHost="cluster2" database="test" />
<!-- 配置连接关系 -->
<!--
maxCon minCon 连接池大小
balance 负载均衡类型
0 不开启读写分离,读请求都发送到当前可用的 writeHost
1 全部的 readHost 和 stand by writeHost (readHost 对应的 writeHost?) 参与 select 语句的负载均衡
2 所有 writeHost 和 readHost 一起负责读请求
3 writeHost 处理写 readHost 处理读
writeType 写操作负载均衡
0 所有的写操作都分发给第一个 writeHost,仅当该节点宕机,才启用第二个 writeHost
切换记录在配置文件中: dnindex.properties
1 仅仅对 galera 集群这种集群起效,mycat 会随机选择一个 writeHost 并且写入数据
非 galera 集群,不要配置,否则会导致数据不一致的严重清空
switchType 切换节点判断
0 根据 mycat 心跳检测进行判断
1 集群主从同步的状态信息判断
2 nothing
-->
<dataHost name="cluster1" maxCon="1000" minCon="10" balance="2"
writeType="1" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<!-- 心跳检测 sql -->
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<!-- 配置写节点和从节点,pxc集群可读可写,所以随便搞 -->
<writeHost host="w1" url="192.168.1.201:3306" user="admin"
password="Root666.">
<readHost host="w1r1" url="192.168.1.202:3306" user="admin" password="Root666." ></readHost>
<readHost host="w1r2" url="192.168.1.203:3306" user="admin" password="Root666." ></readHost>
</writeHost>
<!-- 配置冗余 -->
<writeHost host="w2" url="192.168.1.202:3306" user="admin"
password="Root666.">
<readHost host="w2r1" url="192.168.1.201:3306" user="admin" password="Root666." ></readHost>
<readHost host="w2r2" url="192.168.1.203:3306" user="admin" password="Root666." ></readHost>
</writeHost>
</dataHost>
<dataHost name="cluster2" maxCon="1000" minCon="10" balance="2"
writeType="1" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<!-- 心跳检测 sql -->
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<!-- 配置写节点和从节点,pxc集群可读可写,所以随便搞 -->
<writeHost host="w1" url="192.168.1.204:3306" user="admin"
password="Root666.">
<readHost host="w1r1" url="192.168.1.205:3306" user="admin" password="Root666." ></readHost>
<readHost host="w1r2" url="192.168.1.206:3306" user="admin" password="Root666." ></readHost>
</writeHost>
<!-- 配置冗余 -->
<writeHost host="w2" url="192.168.1.205:3306" user="admin"
password="Root666.">
<readHost host="w2r1" url="192.168.1.204:3306" user="admin" password="Root666." ></readHost>
<readHost host="w2r2" url="192.168.1.206:3306" user="admin" password="Root666." ></readHost>
</writeHost>
</dataHost>
</mycat:schema>
端口配置
端口 | 作用 |
---|---|
8066 | 数据服务,外部访问 |
9066 | 管理端口,接收指令,比如重载指令 |
运行和关闭
cd bin mycat start mycat stop mycat console # 控制台启动这种启动方式在控制台关闭后, MyCat 服务也将关闭,适合调试使用
重载文件
- mysql / navivate 连接
**9066 **
端口,键入reload [@@](#)config_all;
注意
设置为 MySQL 大小写不敏感
- Linux 版本的 MySQL ,需要设置为 MySQL 大小写不敏感,否则可能会发生找不到 表 的问题
- mycat 上创建表,对应 mysql 中会生成 大写名称 的表
[mysqld]
lower_case_table_names=1
- mycat 上创建表,对应 mysql 中会生成 大写名称 的表