I can see why Oracle RAC can handle split brain and PXC cannot.
What separates them in their architecture and data storage. In what ways ???
Oracle RAC
- All RAC Instances deal with only one set of database files
- Each RAC Instance has its own Log Buffer and LGWR (Log Writer) process
- Writes to any Oracle RAC instance, even on nodes that go down temporarily, can have their log sequence numbers coalesced and serialized
Percona XtraDB Cluster
- Each PXC node has its own complete set of data
- Writes to one PXC node must be rolled back or committed on all nodes in unison
- Writes to PXC nodes that are split in communication will only update/commit to its local copy of the data. Awareness of such writes by other unconnected PXC nodes does not exist when communication has been established again.
According to Percona's Frequently Asked Questions on PXC
Q: How would it handle split brain?
A: It would not handle it. The split brain is hard stop, XtraDB Cluster can’t resolve it. That’s why the minimal recommendation is to have 3 nodes. However there is possibility to allow a node to handle the traffic, option is:
wsrep_provider_options="pc.ignore_sb = yes"
SUMMARY