Linux 上安装 Mycat 和配置连接 MySQL 8,三年经验月薪 50k 我是怎么做到的
./mycat start
参数: ./mycat { console | start | stop | restart | status | dump }
5、检查启动情况
第一种:查看端口号,默认端口:8066
netstat -tunlp|grep 8066
第二种:Mycat 的命令
./mycat status
1、schema.xml
这个文件是 Mycat 最重要的配置文件,负责管理库、表、分片规则、DataNode、DataSource。
<schema name="MYCATDB" checkSQLschema="false" sqlMaxLimit="100">
<table name="tb_user" dataNode="dn1,dn2,dn3" rule="mod-long"/>
</schema>
<dataNode name="dn1" dataHost="localhost1" database="db1"/>
<dataNode name="dn2" dataHost="localhost1" database="db2"/>
<dataNode name="dn3" dataHost="localhost1" database="db3"/>
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostS1" url="localhost:3306" user="root" password="root"/>
</dataHost>
| 属性 | 释义 |
| :-- | :-- |
| checkSQLschema | 是否去掉表前面的数据库的名称,默认 false |
| sqlMaxLimit | 相当于 SQL 加上 limit 语句 |
| heartbeat | 用于和后端数据库进行心跳检查的语句 |
2、server.xml
Server.xml 保存了 Mycat 需要的所有的系统配置信息,代码映射为 SystemConfig 类。
<system>
<property name="charset">utf8</property>
<property name="defaultSqlParser">druidparser</property>
<property name="mutiNodeLimitType">1</property>
<property name="serverPort">8066</property>
<property name="managerPort">9066</property>
<property name="bindIp">0.0.0.0</property>
</system>
<user name="mycat">
<property name="password">mycat</property>
<property name="schemas">MYCATDB</property>
</user>
| 属性 | 释义 |
| :-- | :-- |
| charset | 字符集 |
| processors | 处理线程数量,默认是 cpu 数量 |
| processorBufferChunk | 每次读取 buffer 的数量,默认 4096 |
| sequnceHandlerType | 全局 ID 生成方式。(0:本地文件方式,1:数据库方式;2:时间戳序列方式;3:ZK 生成 ID;4:ZK 递增 ID 生成) |
| idleTimeout | 指定连接的空闲超时时间,默认 30 分钟 |
| sqlExecuteTimeout | SQL 执行超时的时间,Mycat 会检查连接上最后一次执行 SQL 的时间,若超过这个时间则会直接关闭这连接。默认时间为 300 秒,单位秒 |
| bindIp | Mycat 服务监听的 IP 地址 |
| serverPort | Mycat 的使用端口 |
| managerPort | Mycat 的管理端口 |
| useSqlStat | 是否开启实时统计。1:开启;0:关闭 |
| useGlobleTableCheck | 是否开启全局表一致性检测。1:开启;0:关闭 |
| handleDistributedTransactions | 分布式事务开关。0:不过滤分布式事务;1:过滤分布式事务;2 :不过滤分布式事务,但是记录分布式事务日志 |
3、rule.xml
rule.xml 里面就定义了我们对表进行拆分所涉及到的规则定义。
<tableRule name="mod-long">
<rule>
<columns>id</columns>
<algorithm>mod-long</algorithm>
</rule>
</tableRule>
<function name="mod-long" class="io.mycat.route.function.PartitionByMod">
<property name="count">3</property>
</function>
| 属性 | 释义 |
| :-- | :-- |
| columns | 要拆分的列名称 |
| algorithm | 使用 function 标签中 name 属性,连接表规则的路由算法 |
目前 Mycat 仍
主要面对 MySQL 5.5、5.6、 5.7 版,对最新的 MySql 8 尚未完全支持,需要用户对 MySQL 8 和 Mycat 的配置进行一系列的修改。
1、Mycat 的加密方式为 mysql_native_password,MySQL 8 的默认加密方式为 caching_sha2_password。
解决方案:看了很多别人的办法,改驱动 jar 包、改 my.cnf、改 url 连接,太麻烦了!
下面这个方法我觉得最方便!其实就是单独创建一个 mycat 用户做连接,设置其加密方式为 mysql_native_password,并赋予权限。
评论