How to use Maxscale for maximum reliability?
I'm trying to use Maxscale in front of a Galera cluster. Performance is not an issue. The reason I'm using it is so that I can take down a node for maintenance and upgrades without downtime. But I'm not sure how to achieve this. When I run m my tests I get failures. I suspect that the problem occurs when Maxscale writes to one node and then immidiately tries to read that data from another node.
Answer Answered by Markus Mäkelä in this comment.
You can try to do the SELECT statements inside a transaction if you need to have consistent reads. Another option is to tag the SELECT statements with routing hints that send them to the master server.
There's also the slavelagfilter, which routes SELECTS after data modification to the master. It isn't currently included in the package but you can build it yourself by adding -DBUILD_SLAVELAG=Y
when configuring the build.