阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Mycat连接MySQL 8时的注意事项

163次阅读
没有评论

共计 1390 个字符,预计需要花费 4 分钟才能阅读完成。

一、问题

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,二级子表的自动分片正常,没有问题。

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计1390字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中