Skip to content

Commit 2f51511

Browse files
committed
MDEV-26915: SST scripts do not take log_bin_index setting into account
Currently, SST scripts assume that the filename specified in the --log-bin-index argument either does not contain an extension or uses the standard ".index" extension. Similar assumptions are used for the log_bin_index parameter read from the configuration file. This commit adds support for arbitrary extensions for the index file paths.
1 parent b952599 commit 2f51511

File tree

7 files changed

+105
-10
lines changed

7 files changed

+105
-10
lines changed
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
connection node_1;
2+
reset master;
3+
connection node_2;
4+
reset master;
5+
CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB;
6+
INSERT INTO t1 VALUES (1);
7+
CREATE TABLE t2 (id INT) ENGINE=InnoDB;
8+
INSERT INTO t2 VALUES (1);
9+
INSERT INTO t2 VALUES (1);
10+
connection node_2;
11+
SELECT COUNT(*) = 1 FROM t1;
12+
COUNT(*) = 1
13+
1
14+
SELECT COUNT(*) = 2 FROM t2;
15+
COUNT(*) = 2
16+
1
17+
connection node_1;
18+
ALTER TABLE t1 ADD COLUMN f2 INTEGER;
19+
include/show_binlog_events.inc
20+
Log_name Pos Event_type Server_id End_log_pos Info
21+
hostname1-bin.000001 # Gtid # # GTID #-#-#
22+
hostname1-bin.000001 # Query # # use `test`; CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB
23+
hostname1-bin.000001 # Gtid # # BEGIN GTID #-#-#
24+
hostname1-bin.000001 # Annotate_rows # # INSERT INTO t1 VALUES (1)
25+
hostname1-bin.000001 # Table_map # # table_id: # (test.t1)
26+
hostname1-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
27+
hostname1-bin.000001 # Xid # # COMMIT /* XID */
28+
hostname1-bin.000001 # Gtid # # GTID #-#-#
29+
hostname1-bin.000001 # Query # # use `test`; CREATE TABLE t2 (id INT) ENGINE=InnoDB
30+
hostname1-bin.000001 # Gtid # # BEGIN GTID #-#-#
31+
hostname1-bin.000001 # Annotate_rows # # INSERT INTO t2 VALUES (1)
32+
hostname1-bin.000001 # Table_map # # table_id: # (test.t2)
33+
hostname1-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
34+
hostname1-bin.000001 # Xid # # COMMIT /* XID */
35+
hostname1-bin.000001 # Gtid # # BEGIN GTID #-#-#
36+
hostname1-bin.000001 # Annotate_rows # # INSERT INTO t2 VALUES (1)
37+
hostname1-bin.000001 # Table_map # # table_id: # (test.t2)
38+
hostname1-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
39+
hostname1-bin.000001 # Xid # # COMMIT /* XID */
40+
hostname1-bin.000001 # Gtid # # GTID #-#-#
41+
hostname1-bin.000001 # Query # # use `test`; ALTER TABLE t1 ADD COLUMN f2 INTEGER
42+
connection node_2;
43+
SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
44+
COUNT(*) = 2
45+
1
46+
include/show_binlog_events.inc
47+
Log_name Pos Event_type Server_id End_log_pos Info
48+
hostname1-bin.000001 # Gtid # # GTID #-#-#
49+
hostname1-bin.000001 # Query # # use `test`; CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB
50+
hostname1-bin.000001 # Gtid # # BEGIN GTID #-#-#
51+
hostname1-bin.000001 # Annotate_rows # # INSERT INTO t1 VALUES (1)
52+
hostname1-bin.000001 # Table_map # # table_id: # (test.t1)
53+
hostname1-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
54+
hostname1-bin.000001 # Xid # # COMMIT /* XID */
55+
hostname1-bin.000001 # Gtid # # GTID #-#-#
56+
hostname1-bin.000001 # Query # # use `test`; CREATE TABLE t2 (id INT) ENGINE=InnoDB
57+
hostname1-bin.000001 # Gtid # # BEGIN GTID #-#-#
58+
hostname1-bin.000001 # Annotate_rows # # INSERT INTO t2 VALUES (1)
59+
hostname1-bin.000001 # Table_map # # table_id: # (test.t2)
60+
hostname1-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
61+
hostname1-bin.000001 # Xid # # COMMIT /* XID */
62+
hostname1-bin.000001 # Gtid # # BEGIN GTID #-#-#
63+
hostname1-bin.000001 # Annotate_rows # # INSERT INTO t2 VALUES (1)
64+
hostname1-bin.000001 # Table_map # # table_id: # (test.t2)
65+
hostname1-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
66+
hostname1-bin.000001 # Xid # # COMMIT /* XID */
67+
hostname1-bin.000001 # Gtid # # GTID #-#-#
68+
hostname1-bin.000001 # Query # # use `test`; ALTER TABLE t1 ADD COLUMN f2 INTEGER
69+
DROP TABLE t1;
70+
DROP TABLE t2;
71+
#cleanup
72+
connection node_1;
73+
RESET MASTER;
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
!include ../galera_2nodes.cnf
2+
3+
[mysqld.1]
4+
log-bin = hostname1-bin
5+
log-bin-index = hostname1.bdx
6+
log-slave-updates
7+
8+
[mysqld.2]
9+
log-bin = hostname2-bin
10+
log-bin-index = hostname2.bdx
11+
log-slave-updates
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
--source galera_log_bin.inc

scripts/wsrep_sst_common.sh

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ case "$1" in
230230
shift
231231
;;
232232
'--binlog-index'|'--log-bin-index')
233-
readonly WSREP_SST_OPT_BINLOG_INDEX="$2"
233+
WSREP_SST_OPT_BINLOG_INDEX="$2"
234234
shift
235235
;;
236236
'--log-basename')
@@ -453,7 +453,7 @@ if [ -n "${MYSQLD_OPT_LOG_BIN:-}" -a \
453453
fi
454454
if [ -n "${MYSQLD_OPT_LOG_BIN_INDEX:-}" -a \
455455
-z "$WSREP_SST_OPT_BINLOG_INDEX" ]; then
456-
readonly WSREP_SST_OPT_BINLOG_INDEX="$MYSQLD_OPT_LOG_BIN_INDEX"
456+
WSREP_SST_OPT_BINLOG_INDEX="$MYSQLD_OPT_LOG_BIN_INDEX"
457457
fi
458458
if [ -n "${MYSQLD_OPT_DATADIR:-}" -a \
459459
-z "$WSREP_SST_OPT_DATA" ]; then
@@ -563,6 +563,16 @@ get_binlog()
563563
# is already defined above):
564564
readonly WSREP_SST_OPT_BINLOG_INDEX="$WSREP_SST_OPT_BINLOG.index"
565565
fi
566+
else
567+
# Remove all directories from the index file path:
568+
local filename="${WSREP_SST_OPT_BINLOG_INDEX##*/}"
569+
# Check if the index file name contains the extension:
570+
if [ "${filename%.*}" = "$filename" ]; then
571+
# Let's add the default extension (".index"):
572+
readonly WSREP_SST_OPT_BINLOG_INDEX="$WSREP_SST_OPT_BINLOG_INDEX.index"
573+
else
574+
readonly WSREP_SST_OPT_BINLOG_INDEX
575+
fi
566576
fi
567577
fi
568578
}

scripts/wsrep_sst_mariabackup.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1249,8 +1249,8 @@ then
12491249
cd "$binlog_dir"
12501250
wsrep_log_info "Cleaning the binlog directory $binlog_dir as well"
12511251
rm -fv "$WSREP_SST_OPT_BINLOG".[0-9]* 1>&2 \+ || true
1252-
binlog_index="${WSREP_SST_OPT_BINLOG_INDEX%.index}.index"
1253-
[ -f "$binlog_index" ] && rm -fv "$binlog_index" 1>&2 \+ || true
1252+
[ -f "$WSREP_SST_OPT_BINLOG_INDEX" ] && \
1253+
rm -fv "$WSREP_SST_OPT_BINLOG_INDEX" 1>&2 \+ || true
12541254
cd "$OLD_PWD"
12551255
fi
12561256

@@ -1325,7 +1325,7 @@ then
13251325

13261326
cd "$BINLOG_DIRNAME"
13271327
for bfile in $(ls -1 "$BINLOG_FILENAME".[0-9]*); do
1328-
echo "$BINLOG_DIRNAME/$bfile" >> "${WSREP_SST_OPT_BINLOG_INDEX%.index}.index"
1328+
echo "$BINLOG_DIRNAME/$bfile" >> "$WSREP_SST_OPT_BINLOG_INDEX"
13291329
done
13301330
cd "$OLD_PWD"
13311331

scripts/wsrep_sst_rsync.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,7 @@ EOF
392392
# Prepare binlog files
393393
cd "$BINLOG_DIRNAME"
394394

395-
binlog_files_full=$(tail -n $BINLOG_N_FILES "${WSREP_SST_OPT_BINLOG_INDEX%.index}.index")
395+
binlog_files_full=$(tail -n $BINLOG_N_FILES "$WSREP_SST_OPT_BINLOG_INDEX")
396396

397397
binlog_files=""
398398
for ii in $binlog_files_full
@@ -732,7 +732,7 @@ EOF
732732
if [ -f "$BINLOG_TAR_FILE" ]; then
733733
cd "$BINLOG_DIRNAME"
734734

735-
binlog_index="${WSREP_SST_OPT_BINLOG_INDEX%.index}.index"
735+
binlog_index="$WSREP_SST_OPT_BINLOG_INDEX"
736736

737737
# Clean up old binlog files first
738738
rm -f "$BINLOG_FILENAME".[0-9]*

scripts/wsrep_sst_xtrabackup-v2.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1275,8 +1275,8 @@ then
12751275
cd "$binlog_dir"
12761276
wsrep_log_info "Cleaning the binlog directory $binlog_dir as well"
12771277
rm -fv "$WSREP_SST_OPT_BINLOG".[0-9]* 1>&2 \+ || true
1278-
binlog_index="${WSREP_SST_OPT_BINLOG_INDEX%.index}.index"
1279-
[ -f "$binlog_index" ] && rm -fv "$binlog_index" 1>&2 \+ || true
1278+
[ -f "$WSREP_SST_OPT_BINLOG_INDEX" ] && \
1279+
rm -fv "$WSREP_SST_OPT_BINLOG_INDEX" 1>&2 \+ || true
12801280
cd "$OLD_PWD"
12811281
fi
12821282

@@ -1353,7 +1353,7 @@ then
13531353

13541354
cd "$BINLOG_DIRNAME"
13551355
for bfile in $(ls -1 "$BINLOG_FILENAME".[0-9]*); do
1356-
echo "$BINLOG_DIRNAME/$bfile" >> "${WSREP_SST_OPT_BINLOG_INDEX%.index}.index"
1356+
echo "$BINLOG_DIRNAME/$bfile" >> "$WSREP_SST_OPT_BINLOG_INDEX"
13571357
done
13581358
cd "$OLD_PWD"
13591359

0 commit comments

Comments
 (0)