Hi,
Following on from my other thread, I'm testing MaxScale fronting a 2-node Galera cluster (with a Galera Arbitrator acting as the third node).
My current test outline is as follows:
- Identify the Write Master server in MaxScale
- Connect two mysql clients to MaxScale, and put them both into "READ COMMITTED" isolation level ("set global transaction isolation level read committed")
- Begin a transaction in each client session
- Take down the non-Write master node in the Galera cluster ("systemctl stop mysql" on that server)
- Commit the transaction in client 1
- Confirm that the clients can see the committed change
- Start up the stopped node in the Galera cluster ("systemctl start mysql" on that server)
- Commit the transaction in client 2
- Confirm that the clients can see the committed change
- ...
What happens is that everything appear to work up until step 8, when client 2 loses its connection to the database when trying to commit, reconnects and loses its uncommitted transaction as a result. At step 9, client 1 announces that it has lost the connection and reconnects.
Is this meant to happen?
If I run the same test, bypassing MaxScale and connecting both clients directly to the same Galera node, I don't get the connection loss.
I understand that MaxScale will route writes to one node and reads to another, but surely the loss of connection to a read node should not result in the loss of connection to the write node?
Am I doing something wrong?
Yours very puzzled.
PC