写点什么

Linux 上安装 Mycat 和配置连接 MySQL 8,三年经验月薪 50k 我是怎么做到的

作者:Java高工P7
  • 2021 年 11 月 10 日
  • 本文字数:1657 字

    阅读完需:约 5 分钟

./mycat start


参数: ./mycat { console | start | stop | restart | status | dump }

5、检查启动情况

第一种:查看端口号,默认端口:8066


netstat -tunlp|grep 8066


第二种:Mycat 的命令


./mycat status


二、Mycat 配置



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 属性,连接表规则的路由算法 |


三、连接 MySQL 8 遇到的问题




目前 Mycat 仍


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


主要面对 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,并赋予权限。

用户头像

Java高工P7

关注

还未添加个人签名 2021.11.08 加入

还未添加个人简介

评论

发布
暂无评论
Linux上安装Mycat和配置连接MySQL 8,三年经验月薪50k我是怎么做到的