mirror of
https://github.com/MariaDB/server.git
synced 2025-05-08 15:01:49 +03:00
file Issuing 'FLUSH LOGS' does not close and reopen indexfile. Instead a SEEK_SET is performed. This patch makes index file to be closed and reopened whenever a rotation happens (FLUSH LOGS is issued or binary log exceeds maximum configured size). mysql-test/suite/binlog/r/binlog_delete_and_flush_index.result: Result file. mysql-test/suite/binlog/t/binlog_delete_and_flush_index.test: Test case. sql/log.cc: Added LOG_CLOSE_INDEX flag when calling MYSQL_BIN_LOG::close from within MYSQL_BIN_LOG::new_file_impl (which should just be called whenever a rotation is to happen - FLUSH LOGS issued or binlog size exceeds the maximum configured).
51 lines
1.7 KiB
Plaintext
51 lines
1.7 KiB
Plaintext
RESET MASTER;
|
|
CREATE TABLE t1 (a int);
|
|
### assertion: index file contains regular entries
|
|
SET @index=LOAD_FILE('MYSQLTEST_VARDIR/mysqld.1/data//master-bin.index');
|
|
SELECT @index;
|
|
@index
|
|
master-bin.000001
|
|
|
|
### assertion: show original binlogs
|
|
show binary logs;
|
|
Log_name File_size
|
|
master-bin.000001 #
|
|
### assertion: binlog contents from regular entries
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a int)
|
|
FLUSH LOGS;
|
|
### assertion: index file contains renamed binlog and the new one
|
|
SET @index=LOAD_FILE('MYSQLTEST_VARDIR/mysqld.1/data//master-bin.index');
|
|
SELECT @index;
|
|
@index
|
|
master-bin-b34582.000001
|
|
master-bin.000002
|
|
|
|
### assertion: original binlog content still exists, despite we
|
|
### renamed and changed the index file
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin-b34582.000001 # Query # # use `test`; CREATE TABLE t1 (a int)
|
|
### assertion: user changed binlog index shows correct entries
|
|
show binary logs;
|
|
Log_name File_size
|
|
master-bin-b34582.000001 #
|
|
master-bin.000002 #
|
|
DROP TABLE t1;
|
|
### assertion: purging binlogs up to binlog created after instrumenting index file should work
|
|
PURGE BINARY LOGS TO 'master-bin.000002';
|
|
### assertion: show binary logs should only contain latest binlog
|
|
show binary logs;
|
|
Log_name File_size
|
|
master-bin.000002 #
|
|
### assertion: assert that binlog files were indeed purged (using file_exists calls)
|
|
### assertion: assert that not purged binlog file exists
|
|
### assertion: show index file contents and these should match show binary logs issued above
|
|
SET @index=LOAD_FILE('MYSQLTEST_VARDIR/mysqld.1/data//master-bin.index');
|
|
SELECT @index;
|
|
@index
|
|
master-bin.000002
|
|
|
|
RESET MASTER;
|