1
0
mirror of https://github.com/MariaDB/server.git synced 2025-09-02 09:41:40 +03:00

BUG#11745230: 12133: MASTER.INDEX FILE KEEPS MYSQLD FROM STARTING IF

BIN LOG HAS BEEN MOVED 

When moving the binary/relay log files from one location to
another and restarting the server with a different log-bin or
relay-log paths, would cause the startup process to abort. The
root cause was that the server would not be able to find the log
files because it would consider old paths for entries in the
index file instead of the new location.  What's even worse, the
relative paths would not be considered relative to the path
provided in log-bin and relay-log, but to mysql_data_dir.
      
We fix the cases where the server contains relative paths. When
the server is reading from the index file, it checks whether the
entry contains relative paths. If it does, we replace it with the
absolute path set in log-bin/relay-log option. Absolute paths
remain unchanged and the index must be manually edited to
consider the new log-bin and/or relay-log path (this should be
documented). This is a fix for a GA version, that does not break
behavior (that much).
      
For development versions, we should go with Zhenxing's approach 
that removes paths altogether from index files.
This commit is contained in:
Luis Soares
2011-11-24 17:15:58 +00:00
parent 2dd10f632b
commit 67791697e4
7 changed files with 315 additions and 14 deletions

View File

@@ -0,0 +1,35 @@
include/master-slave.inc
[connection master]
CREATE TABLE t1 (a INT);
FLUSH BINARY LOGS;
INSERT INTO t1 VALUES (1);
# Shutdown master
include/rpl_stop_server.inc [server_number=1]
# Move the master binlog files and the index file to a new place
# Restart master with log-bin option set to the new path
# Master has restarted successfully
# Create the master-bin.index file with the old format
# Shutdown master
include/rpl_stop_server.inc [server_number=1]
# Move back the master binlog files
# Remove the unneeded master-bin.index file
# Restart master with log-bin option set to default
# Master has restarted successfully
include/stop_slave.inc
# Move the slave binlog and relay log files and index to the new place
# Shutdown slave
include/rpl_stop_server.inc [server_number=2]
# Restart slave with options log-bin, relay-log set to the new paths
# Slave has restarted successfully
include/start_slave.inc
include/stop_slave.inc
FLUSH LOGS;
INSERT INTO t1 VALUES (2);
INSERT INTO t1 VALUES (2);
INSERT INTO t1 VALUES (2);
INSERT INTO t1 VALUES (2);
FLUSH LOGS;
FLUSH LOGS;
include/start_slave.inc
include/diff_tables.inc [master:t1,slave:t1]
DROP TABLE t1;