环境要求

不是特殊情况不把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,但不保证完全正确

字符集相关

  1. SHOW VARIABLES LIKE'%character%'

image.png

  1. character_set_client = 'utf8mb4';
  2. character_set_connection = 'utf8mb4';
  3. character_set_database = 'utf8mb4';
  4. character_set_results = 'utf8mb4';
  5. character_set_server = 'utf8mb4';
  6. 确保5项都是utf8mb4

my.ini

  1. [client]
  2. default-character-set = utf8mb4
  3. [mysql]
  4. default-character-set = utf8mb4
  5. [mysqld]
  6. character-set-client-handshake = false
  7. character-set-server = utf8mb4
  8. init_connect='SET NAMES utf8mb4'