• Nirbhay Choubey's avatar
    MDEV-9423: cannot add new node to the cluser: Binlog.. · cced23cf
    Nirbhay Choubey authored
    .. file '/var/log/mysql/mariadb-bin.000001' not found in binlog
    index, needed for recovery. Aborting.
    
    In Galera cluster, while preparing for rsync/xtrabackup based
    SST, the donor node takes an FTWRL followed by (REFRESH_ENGINE_LOG
    in rsync based state transfer and) REFRESH_BINARY_LOG. The latter
    rotates the binary log and logs Binlog_checkpoint_log_event
    corresponding to the penultimate binary log file into the new file.
    The checkpoint event for the current file is later logged
    synchronously by binlog_background_thread.
    
    Now, since in rsync/xtrabackup based snapshot state transfer methods,
    only the last binary log file is transferred to the joiner node; the
    file could get transferred even before the checkpoint event for the
    same file gets written to it. As a result, the joiner node would fail
    to start complaining about the missing binlog file needed for recovery.
    
    In order to fix this, a mechanism has been put in place to make
    REFRESH_BINARY_LOG operation wait for Binlog_checkpoint_log_event
    to be logged for the current binary log file if the node is part of
    a Galera cluster. As further safety, during rsync based state transfer
    the donor node now acquires and owns LOCK_log for the duration of file
    transfer during SST.
    cced23cf
log.cc 297 KB