Galera uses a certification-based replication to achieve strong consistency.
While doing a transaction after doing a COMMIT
the other nodes will certify it and if is ok it will be successfully committed.
But what happens in the case of losing a node that certified the commit but still fetching the data, for example when writing a big blob
?
From my understanding the certification process is synchronous but the data transfer is asynchronous, meaning that the client/user may think his data is stored on all the nodes after running successfully a COMMIT
but while in reality is happening in the backend is that data may be still synchronizing among the nodes and in case of a network outage and depending on the type of transaction the node could be in a conflict, correct?
If this is the case, how could the cluster be configured to self-heal from possible conflicts or wondering if there is a way to achieve strong consistency even if it would impact the return time for every COMMIT
since it should only be successful after the data been full transmitted on all nodes.