Mycat2
的官方文档:https://www.yuque.com/ccazhw/ml3nkf/fb2285b811138a442eb850f0127d7ea3
Mycat是数据库的中间件,启动Mycat之后,可像使用Mysql一样使用Mycat。可以像链接mysql一样通过jdbc链接mycat。链接Mycat之后所有分库分表的逻辑都被Mycat封装,使用起来比较简单。
在使用之前需要配置Mycat,这个过程相对比较复杂。需要的步骤大概是:配置数据源,配置句群,创建分库分表规则(可以使用一些默认规则),创建表单。
通过以上步骤之后,可以像使用Mysql一样使用Mycat的分库分表功能。
INFO | jvm 1 | 2021/08/20 16:56:53 | Caused by: java.sql.SQLException: XAER_RMERR: Fatal error occurred in the transaction branch - check your data for consistency
INFO | jvm 1 | 2021/08/20 16:56:53 | at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
INFO | jvm 1 | 2021/08/20 16:56:53 | at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
INFO | jvm 1 | 2021/08/20 16:56:53 | at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
INFO | jvm 1 | 2021/08/20 16:56:53 | at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
INFO | jvm 1 | 2021/08/20 16:56:53 | at com.mysql.cj.jdbc.ClientPreparedStatement.executeQuery(ClientPreparedStatement.java:1003)
INFO | jvm 1 | 2021/08/20 16:56:53 | at com.alibaba.druid.pool.DruidPooledPreparedStatement.executeQuery(DruidPooledPreparedStatement.java:227)
INFO | jvm 1 | 2021/08/20 16:56:53 | at com.alibaba.druid.util.JdbcUtils.executeQuery(JdbcUtils.java:782)
INFO | jvm 1 | 2021/08/20 16:56:53 | at cn.mycat.vertx.xa.impl.XaLogImpl.readXARecoveryLog(XaLogImpl.java:208)
INFO | jvm 1 | 2021/08/20 16:56:53 | at cn.mycat.vertx.xa.impl.XaLogImpl.readXARecoveryLog(XaLogImpl.java:190)
INFO | jvm 1 | 2021/08/20 16:56:53 | at io.mycat.config.ConfigPrepareExecuter.commit(ConfigPrepareExecuter.java:388)
INFO | jvm 1 | 2021/08/20 16:56:53 | at io.mycat.config.FileMetadataStorageManager.commitAndSyncDisk(FileMetadataStorageManager.java:346)
INFO | jvm 1 | 2021/08/20 16:56:53 | at io.mycat.config.FileMetadataStorageManager$1.commit(FileMetadataStorageManager.java:250)
INFO | jvm 1 | 2021/08/20 16:56:53 | at io.mycat.config.MycatRouterConfigOps.commit(MycatRouterConfigOps.java:495)
INFO | jvm 1 | 2021/08/20 16:56:53 | at io.mycat.sqlhandler.dql.HintHandler.mycatDmlHandler(HintHandler.java:955)
INFO | jvm 1 | 2021/08/20 16:56:53 | at io.mycat.sqlhandler.dql.HintHandler.onExecute(HintHandler.java:584)
报错原因:mysql用户没有xa权限
解决方式:
GRANT XA_RECOVER_ADMIN ON *.* TO 'root'@'%';