diff options
author | Nirbhay Choubey <nirbhay@mariadb.com> | 2016-06-29 16:50:53 -0400 |
---|---|---|
committer | Nirbhay Choubey <nirbhay@mariadb.com> | 2016-06-29 16:50:53 -0400 |
commit | 3fd214c8be7c2340ebe06f4c887c67f5c928e5f0 (patch) | |
tree | 66f619e9bc557d6c5d7085b369e620e1b718ae07 /sql/log.h | |
parent | 33492ec8d4e2077cf8e07d0628a959d8729bd1f9 (diff) | |
download | mariadb-git-3fd214c8be7c2340ebe06f4c887c67f5c928e5f0.tar.gz |
MDEV-9423: cannot add new node to the cluser: Binlog..mariadb-10.1.15
.. 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.
Diffstat (limited to 'sql/log.h')
-rw-r--r-- | sql/log.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sql/log.h b/sql/log.h index cdb2b9ce4b7..bf076fae31d 100644 --- a/sql/log.h +++ b/sql/log.h @@ -788,6 +788,7 @@ public: bool reset_logs(THD* thd, bool create_new_log, rpl_gtid *init_state, uint32 init_state_len, ulong next_log_number); + void wait_for_last_checkpoint_event(); void close(uint exiting); void clear_inuse_flag_when_closing(File file); |