atomikos使用问题,数据备份出现问题。大数据量。
我使用了2套方案都失败了,未加入分布式事务之前 用本地事务测试100W数据是成功通过的;
加入了分布式事务 ,数据量超过30W条就会出错。
一:错误提示 :提取违反顺序;
UserTransactionManager tm = new UserTransactionManager();
tm.setTransactionTimeout(60*60*24);
tm.begin();
Transaction ts = tm.getTransaction();
srcContext = Utils.generateSrcContext(entity);
destContext = Utils.generateDestContext(entity);
ts.enlistResource(srcContext.getXaRes());
ts.enlistResource(destContext.getXaRes());
--数据备份操作,分页拉取数据 备份数据 清除数据等业务逻辑,期间会产生大量的statement和RetResult
--我都会及时关闭这些statement RetResult 总而言之逻辑中只会有两个Connection。
///////业务逻辑结束
ts.delistResource(srcContext.getXaRes(), XAResource.TMSUCCESS);
ts.delistResource(destContext.getXaRes(), XAResource.TMSUCCESS);
//异常判断 回滚提交
tm.rollback();
tm.commit();
关闭之类
conn.close
XaConn.close
这套方案失败了。