• Mycat连接Mysql 8时的注意事项


    一、问题

    MyCat是一个基于MySQl协议的开源的分布式中间件,其核心是分库分表。

    但是目前MyCat仍主要面对MySql 5.5, 5.6, 5.7版,对最新的MySql 8尚未完全支持,需要用户对MySql 8和MyCat的配置进行一系列的修改。

    根据自己的测试结果,对这些修改进行简要的总结。

    二、关于MySql 8

    主要是修改Mysql配置文件,在Windows平台是my.ini,在linux平台是my.cnf:

    • 修改缺省加密方式:在安装完MySql 8后,需将缺省的加密方式修改为mysql_native_password,以保持与5.x版本兼容。
    • 如果是在Linux平台,在首次启动前设置lower_case_table_names = 1(表名大小写不敏感),注意一旦数据库中已有数据,再如此设置会导致启动mysql失败。
    • 为防止出现字符集不匹配,最好也显式设置字符集(可选)。

    以下是本人使用的my.cnf:

    [mysqld]
    ...
    default-authentication-plugin=mysql_native_password
    lower_case_table_names=1
    character-set-server=utf8
    
    [mysql]
    default-character-set=utf8 

    三、关于MyCat

    主要涉及三个方面。

    • 登录逻辑库的方式

    Mycat登录逻辑库的传统方式是:mysql -uroot -p -h127.0.0.1 -P8066 -DTESTDB

    但对于MySql 8,会报密码错误方式,这是由于Mysql 8的缺省加密方式已经改为caching_sha2_password,而MyCat对此尚不支持。为此,需加上--default_auth=mysql_native_pasowrd选项:

    mysql -uroot -p -h127.0.0.1 -P8066 -DTESTDB --default_auth=mysql_native_pasowrd

    这样才能成功登录逻辑库。

    • 替换自带的JDBC驱动jar

    MyCat自带的JDBC驱动jar还是5.1.x版的,若使用JDBC连接MySql 8,会报错“java.sql.SQLException: Unknown system variable 'query_cache_size'”。必须用8.0.x版的JDBC驱动jar代替才行,本人使用的下载地址是:

    http://central.maven.org/maven2/mysql/mysql-connector-java/8.0.11/ mysql-connector-java-8.0.11.jar

    • 修改jdbc时的url

    如果dataHost的driverType为JDBC,则还需要修改url,增加useSSL=false和serverTimezone=UTC选项,某些情况下还需加上characterEncoding=utf8选项(可选),例如:

    url="jdbc:mysql://192.168.64.187:3306?useSSL=false&serverTimezone=UTC& characterEncoding=utf8"

    四、其它

    前一个实验里,Mycat用JDBC连接PostgreSQL等数据库时,发现无法实现二级子表的自动分片。但对于MySql 8,二级子表的自动分片正常,没有问题。

  • 相关阅读:
    C# 迭代器.NET实现—IEnumerable和IEnumerator
    Excel、CSV文件处理
    C# 读写ini文件
    SCARA——OpenGL入门学习五六(三维变换、动画)
    GDI与OpenGL与DirectX之间的区别
    SCARA——OpenGL入门学习四(颜色)
    SCARA——OpenGL入门学习三
    SQLite数据库表是否存在
    数据库SQL语句单引号、双引号的用法
    C# 委托与事件
  • 原文地址:https://www.cnblogs.com/wggj/p/10027681.html
Copyright © 2020-2023  润新知