环境要求
不是特殊情况不把Mycat的端口暴露在外网(部署在内网),mycat使用的端口为8066,9066,7066,其中7066,9066为监控端口
项 | 要求 |
---|---|
逻辑核数量 | 大于2 |
内存 | 大于4GB |
JDK | java8 |
临时空间 | 根据日志要求和Mycat临时数据而定 |
存储节点数据源目标支持MySQL,推荐使用
8.0.14以上低于此版本可能存在一些关联子查询询生成SQL不被低版本的MYSQL支持,但是一般遇不上这种sql
安装JDK,要求JDK1.8,非1.8环境请自行编译源码
非1.8可能出现如下异常
java.lang.IllegalAccessError: class io.vertx.core.buffer.impl.VertxUnsafeHeapByteBuf cannot access its superclass io.netty.buffer.UnpooledUnsafeHeapByteBuf jvm
MySQL安装后设置Mycat连接MySQL的登录授权协议
更改默认登录插件:
编辑my.cnf(my.ini)文件,更改默认的身份认证插件。
my.cnf(my.ini)
default_authentication_plugin=mysql_native_password
ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘YourPassword’;
FLUSH PRIVILEGES;
该账号是Mycat连接MySQL的账号
设置XA RECOVER权限,用于XA事务恢复
GRANT XA_RECOVER_ADMIN ON . TO ‘root’@’%’;
Fatal error occurred in the transaction branch-check your data for consistency
server.json的mycatId是保证多个mycat公用存储节点的时候必须配置这个值,并且唯一,他用于生成序列号,Xid等.
其他存储节点数据源,查询引擎也可以自动识别数据源的数据库厂商类型,并把接收到的SQL分析重构成目标数据源的SQL,但不保证完全正确
字符集相关
SHOW VARIABLES LIKE'%character%'
character_set_client = 'utf8mb4';
character_set_connection = 'utf8mb4';
character_set_database = 'utf8mb4';
character_set_results = 'utf8mb4';
character_set_server = 'utf8mb4';
确保5项都是utf8mb4
my.ini
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = false
character-set-server = utf8mb4
init_connect='SET NAMES utf8mb4'