xtrabackup SST => donor not available during transfer?

Hi! I’ve got a 3-node cluster up and running, and for a while I was using rsync for SST when I needed to bring nodes offline for maintenance etc, or when something went wrong.

However I am currently testing xtrabackup instead of rsync, and while it seems to work the donor is taken offline anyway as it is with the rsync SST.

I am using the haproxy configuration suggested in the documentation, as well as the xinetd/ clustercheck scripts; the clustercheck script doesn’t take into account the ‘Donor’ wsrep_local_state, therefore the donor appears offline to haproxy while the SST is happening.

My understanding is that using xtrabackup for SST, the donor remains available for reads and writes. Is this correct? If yes, can I just update the clustercheck script adding the ‘donor’ state, and expect it will work?

Thanks in advance!

anyone know this answer?

The clustercheck script has an option to keep donor in the pool:
[php]clustercheck --help
Usage: /usr/bin/clustercheck <available_when_donor=0|1> <log_file> <available_when_readonly=0|1> <defaults_extra_file>
[/php]

awesome thank you I will test and report back

przemek thank you. This works. Cluster is accessible when the node is “Donor/Desynced”

I edited my /usr/bin/clustercheck to say

AVAILABLE_WHEN_DONOR=${3:-1}

Any scenarios that may cause corruption? Either way, thanks again.

You mean cluster corruption because you still send traffic to donor node? All that can happen is this node can be slower due to additional load related to sending backup. For example, depending on storage layer capacity, IO may get saturated or network card for data transfer. So you may expect the donor node not being fully capable of handling usual load. For multi-disk, multi-CPU machines with 1Gb+ network link though, the fact that donor is sending data snapshot should not matter that much.