1 つのマスターと 2 つの読み取り専用スレーブを実行している AWS でのマスター/スレーブ接続の負荷分散に MySQL Connector/J ReplicationDriver を使用しています。私が直面している問題は、アプリ サーバーから mysql データベースに書き込み要求が 2 ~ 3 時間のように長時間送信されないと仮定した場合、新しい書き込み要求が「接続は読み取り専用です。クエリ」という例外で終了することです。データの変更につながることは許可されていません。」
私の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を適切に使用しています。
考えられる原因は何ですか?