我在 AWS 中使用 MySQL Connector/J ReplicationDriver 进行主/从连接负载平衡,其中我有一个主服务器和两个只读从服务器运行。我面临的问题是,如果假设在 2-3 小时之类的很长一段时间内没有从应用服务器向 mysql 数据库发送写请求,则新的写请求将以异常“连接是只读的。查询”告终不允许导致数据修改”。
我的 context.xml 是
<Context allowLinking="true">
<Resource
name="jdbc/DB" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
url="jdbc:mysql:replication://master,slave1,slave2/db"
driverClassName="com.mysql.jdbc.ReplicationDriver"
username="user" password="pass"
validationQuery="/* ping */ select 1" removeAbandoned="true"
removeAbandonedTimeout="300" testOnBorrow="true"
logAbandoned="true" loadBalanceBlacklistTimeout=60000
/>
</Context>
我还在 mysql 插入/更新和选择语句中适当地使用了 connection.setReadOnly 和 connection.setAutoCommit。
可能的原因是什么?