mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
BUG#35542 Add option to sync master and relay log to disk after every event
BUG#31665 sync_binlog should cause relay logs to be synchronized NOTE: Backporting the patch to next-mr. Add sync_relay_log option to server, this option works for relay log the same as option sync_binlog for binlog. This option also synchronize master info to disk when set to non-zero value. Original patches from Sinisa and Mark, with some modifications
This commit is contained in:
29
sql/log.h
29
sql/log.h
@ -269,6 +269,18 @@ class MYSQL_BIN_LOG: public TC_LOG, private MYSQL_LOG
|
||||
|
||||
ulonglong m_table_map_version;
|
||||
|
||||
/* pointer to the sync period variable, for binlog this will be
|
||||
sync_binlog_period, for relay log this will be
|
||||
sync_relay_log_period
|
||||
*/
|
||||
uint *sync_period_ptr;
|
||||
uint sync_counter;
|
||||
|
||||
inline uint get_sync_period()
|
||||
{
|
||||
return *sync_period_ptr;
|
||||
}
|
||||
|
||||
int write_to_file(IO_CACHE *cache);
|
||||
/*
|
||||
This is used to start writing to a new log file. The difference from
|
||||
@ -296,7 +308,7 @@ public:
|
||||
Format_description_log_event *description_event_for_exec,
|
||||
*description_event_for_queue;
|
||||
|
||||
MYSQL_BIN_LOG();
|
||||
MYSQL_BIN_LOG(uint *sync_period);
|
||||
/*
|
||||
note that there's no destructor ~MYSQL_BIN_LOG() !
|
||||
The reason is that we don't want it to be automatically called
|
||||
@ -378,7 +390,20 @@ public:
|
||||
bool is_active(const char* log_file_name);
|
||||
int update_log_index(LOG_INFO* linfo, bool need_update_threads);
|
||||
void rotate_and_purge(uint flags);
|
||||
bool flush_and_sync();
|
||||
/**
|
||||
Flush binlog cache and synchronize to disk.
|
||||
|
||||
This function flushes events in binlog cache to binary log file,
|
||||
it will do synchronizing according to the setting of system
|
||||
variable 'sync_binlog'. If file is synchronized, @c synced will
|
||||
be set to 1, otherwise 0.
|
||||
|
||||
@param[out] synced if not NULL, set to 1 if file is synchronized, otherwise 0
|
||||
|
||||
@retval 0 Success
|
||||
@retval other Failure
|
||||
*/
|
||||
bool flush_and_sync(bool *synced);
|
||||
int purge_logs(const char *to_log, bool included,
|
||||
bool need_mutex, bool need_update_threads,
|
||||
ulonglong *decrease_log_space);
|
||||
|
Reference in New Issue
Block a user