问题描述:
线上环境mysql三库集群,读写分离,一个主数据库(写),两个从数据库(读),数据使用日志的方式同步,由于读和写不是同一个库,切三个数据库之间的数据是半同步(主库写完后,从库通过数据库日志一条一条同步数据),当插入数据后立马查询,会出现查不到的问题。
解决方法(Mybatis)
对于插入后立马要查询的数据(强实时性的数据),可以使用注解的方式强制走主库,就是在Mybatis的查询语句前面加上以下注解。
/**mycat:db_type=master*/
示例:
<select id="selectByExample" parameterType="com.comleader.entity.PolicyIssueRecordExample" resultMap="BaseResultMap">
/**mycat:db_type=master*/
select
<if test="distinct">
distinct
</if>
<include refid="Base_Column_List" />
from d_policy_issue_record
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
</select>
这样该查询会强制走主库查询。
查询语句是这样的:
/*#mycat:db_type=master*/ SELECT * FROM tb_item ;