问题描述
独立的 MaxScale 工作正常。我用这个 link 来测试它。但是当我使用 Maxscale 运行 Spring Boot Data JPA 时,SELECT 查询正在发送到 Master。我观察了很久,发现Spring数据开始交易。 Maxscale 在启用事务时向 Master 发送查询。我通过在 MaxScale 配置读写和只读服务来尝试使用 Spring“RoutingDataSource”。但这并没有解决问题。
解决方法
默认情况下,readwritesplit 会将所有非只读事务路由到当前 master。这样做是因为不可能知道事务是否会修改数据库。如果交易以 START TRANSACTION READ ONLY
开始,交易将被路由到一个从站。
您可以启用 optimistic_trx
将事务路由到从属设备,即使它们不是以 START TRANSACTION READ ONLY
开头。请注意,这将减慢执行写入操作的事务的执行速度,因为它们最初被发送到从属设备,并在检测到第一次写入时移动到主设备。