MyCAT升级到MySQL8

公司一直用的是MySQL 5.6,最近在改表的时候发现加索引会导致整张表上锁。研究了一下MySQL的新版本,发现MySQL8支持加索引不锁表,所以计划将MySQL升级到8。

问题来了,公司内部比较多项目都使用了MyCAT,所以MyCAT支持MySQL8成为了一个工作重点。

平滑升级

升级数据库,重中之重就是保证服务持续可用:

使用Nignx来实现多库备份
使用Nignx来实现多库备份

  • Nginx从1.9版本支持TCP转发,用于对于MySQL进行负载均衡
  • 多个MySQL版本直接,采取binlog的方式同步数据
  • MySQL后端需要支持MySQL8

改造MyCAT

目前内部使用的MyCAT版本是1.6,并不直接支持MySQL8,于是需要下面改造:

  • mysql-connector-java-8.0.16.jar添加到mycat的lib
  • 修改conf/schema.xml,schema 节点的 checkSQLschema 属性,填 true
  • 修改conf/schema.xml,dataHost 节点的 dbDriver 属性,修改成 jdbc
  • 修改conf/schema.xml,read/writeHost 节点的 url 属性,使用jdbc url,例如: jdbc:mysql://ip:port?useSSL=false&serverTimezone-UTC
  • 重启MyCAT即可验证

彩蛋

MyCAT真是一个让人又爱又恨的中间件,文档简陋、更新慢,最近还发现有不少拼写错误的地方,真的是无语了

Global单词,拼写错误,而且还有不一样的写法
Global单词,拼写错误,而且还有不一样的写法

作为专业数据库中间件,日志里面的MySQL都能拼写错误
作为专业数据库中间件,日志里面的MySQL都能拼写错误