server.json
“transactionType”:”proxy”
默认值:proxy
可选值:
proxy 本地事务,在涉及大于1个数据库的事务,commit阶段失败会导致不一致,但是兼容性最好
xa 事务,需要确认存储节点集群类型是否支持XA
事务类型在开启自动提交而且没有事务的时候可以使用以下语句实现切换
set transaction_policy = ‘xa’
set transaction_policy = ‘proxy’
SELECT @@transaction_policy
可以查询当前事务类型
无论哪种方式
应用代码编写都应该符合以下形式
连接中设置查询超时来缓解决死锁,查询长时间阻塞的问题
Connection con = getConnection();
try{
set autocommit = 0;//begin,start transcation
commit/rollback;
}catche(Exception e){
rollback;//显式触发回滚
}finally{
con.close();//连接池回收
//set autocommit = 1;//连接池隐式设置
}
如果在事务处理过程中出现异常或者回滚的情况,业务代码可以添加重试执行的策略,如果是mycat的运行过程有异常,则可能使用心跳检查定时检查mycat的是否能返回业务库相关的语句,比如select 1 from travelrecord limit 0;此SQL必须经过mycat的连接池,从而可以测试mycat处理流程是否正常,如果不正常,则触发IP切换.