Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
139d65ab
Commit
139d65ab
authored
Sep 12, 2024
by
Julius Goryavsky
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/bb-10.5-MDEV-30822-galera' into bb-10.6-MDEV-30822-galera
parents
a74bea7b
b345e366
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
63 additions
and
48 deletions
+63
-48
mysql-test/suite/galera/r/GCF-939.result
mysql-test/suite/galera/r/GCF-939.result
+5
-1
mysql-test/suite/galera/t/GCF-939.test
mysql-test/suite/galera/t/GCF-939.test
+5
-1
mysql-test/suite/galera_3nodes/r/GCF-354.result
mysql-test/suite/galera_3nodes/r/GCF-354.result
+3
-6
mysql-test/suite/galera_3nodes/r/galera_safe_to_bootstrap.result
...est/suite/galera_3nodes/r/galera_safe_to_bootstrap.result
+2
-0
mysql-test/suite/galera_3nodes/t/GCF-354.test
mysql-test/suite/galera_3nodes/t/GCF-354.test
+6
-4
mysql-test/suite/galera_3nodes/t/galera_safe_to_bootstrap.test
...-test/suite/galera_3nodes/t/galera_safe_to_bootstrap.test
+2
-0
scripts/wsrep_sst_backup.sh
scripts/wsrep_sst_backup.sh
+1
-1
scripts/wsrep_sst_mariabackup.sh
scripts/wsrep_sst_mariabackup.sh
+39
-35
No files found.
mysql-test/suite/galera/r/GCF-939.result
View file @
139d65ab
...
...
@@ -5,7 +5,11 @@ DROP TABLE t1;
ERROR 42S02: Unknown table 'test.t1'
CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1);
GRA_.log
connection node_2;
SELECT * FROM t1;
f1
1
connection node_1;
GRA_.log
DROP TABLE t1;
CALL mtr.add_suppression("Ignoring error 'Unknown table 'test\\.t1'' on query");
...
...
mysql-test/suite/galera/t/GCF-939.test
View file @
139d65ab
...
...
@@ -13,6 +13,11 @@ DROP TABLE t1;
CREATE
TABLE
t1
(
f1
INTEGER
)
ENGINE
=
InnoDB
;
INSERT
INTO
t1
VALUES
(
1
);
--
connection
node_2
SELECT
*
FROM
t1
;
--
connection
node_1
# Expect only one GRA_*.log file
# TODO replace_regex is somehow broken, it will filter out
# result totally if replacement string is already in result
...
...
@@ -20,7 +25,6 @@ INSERT INTO t1 VALUES (1);
# to get GRA_.log two times, this works for some reason
#
--
replace_regex
/
GRA_
.+
\
.
log
/
GRA_
.
log
/
--
list_files
$MYSQLTEST_VARDIR
/
mysqld
.
2
/
data
GRA_
*.
log
--
replace_regex
/
GRA_
.+
\
.
log
/
GRA_
.
log
/
--
list_files
$MYSQLTEST_VARDIR
/
mysqld
.
2
/
data
GRA_
*.
log
...
...
mysql-test/suite/galera_3nodes/r/GCF-354.result
View file @
139d65ab
connection node_2;
connection node_1;
connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3;
connection node_1;
connection node_2;
connection node_3;
connection node_2;
SET wsrep_on=OFF;
SET
SESSION
wsrep_on=OFF;
DROP SCHEMA test;
connection node_3;
SET wsrep_on=OFF;
SET
SESSION
wsrep_on=OFF;
CREATE TABLE test.t1 (f1 INTEGER NOT NULL PRIMARY KEY) engine=innodb;
connection node_1;
CREATE TABLE test.t1 (f1 INTEGER NOT NULL PRIMARY KEY) engine=innodb;
SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
VARIABLE_VALUE
1
INSERT INTO test.t1 values (1);
SHOW STATUS LIKE 'wsrep_cluster_status';
Variable_name Value
wsrep_cluster_status Primary
...
...
mysql-test/suite/galera_3nodes/r/galera_safe_to_bootstrap.result
View file @
139d65ab
...
...
@@ -45,6 +45,7 @@ CALL mtr.add_suppression("It may not be safe to bootstrap the cluster from this
CALL mtr.add_suppression("Aborting");
CALL mtr.add_suppression("Plugin 'wsrep' init function returned error\\.");
CALL mtr.add_suppression("Plugin 'wsrep' registration as a STORAGE ENGINE failed\\.");
CALL mtr.add_suppression("Plugin 'wsrep' registration as a FUNCTION failed\\.");
CALL mtr.add_suppression("Failed to initialize plugins\\.");
CALL mtr.add_suppression("WSREP: gcs/src/gcs_core.cpp:core_handle_uuid_msg\\(\\)");
connection node_3;
...
...
@@ -58,6 +59,7 @@ CALL mtr.add_suppression("It may not be safe to bootstrap the cluster from this
CALL mtr.add_suppression("Aborting");
CALL mtr.add_suppression("Plugin 'wsrep' init function returned error\\.");
CALL mtr.add_suppression("Plugin 'wsrep' registration as a STORAGE ENGINE failed\\.");
CALL mtr.add_suppression("Plugin 'wsrep' registration as a FUNCTION failed\\.");
CALL mtr.add_suppression("Failed to initialize plugins\\.");
CALL mtr.add_suppression("WSREP: gcs/src/gcs_core.cpp:core_handle_uuid_msg\\(\\)");
SHOW CREATE TABLE t1;
...
...
mysql-test/suite/galera_3nodes/t/GCF-354.test
View file @
139d65ab
...
...
@@ -2,7 +2,9 @@
--
source
include
/
have_innodb
.
inc
--
source
include
/
force_restart
.
inc
--
connect
node_3
,
127.0
.
0.1
,
root
,
,
test
,
$NODE_MYPORT_3
--
let
$galera_connection_name
=
node_3
--
let
$galera_server_number
=
3
--
source
include
/
galera_connect
.
inc
# Save original auto_increment_offset values.
--
let
$node_1
=
node_1
...
...
@@ -14,11 +16,11 @@
# 1. Create different inconsistencies on nodes 2 and 3
#
--
connection
node_2
SET
wsrep_on
=
OFF
;
SET
SESSION
wsrep_on
=
OFF
;
DROP
SCHEMA
test
;
--
connection
node_3
SET
wsrep_on
=
OFF
;
SET
SESSION
wsrep_on
=
OFF
;
CREATE
TABLE
test
.
t1
(
f1
INTEGER
NOT
NULL
PRIMARY
KEY
)
engine
=
innodb
;
#
# 2. The following should generate different errors on nodes 2 and 3 and
...
...
@@ -27,10 +29,10 @@ CREATE TABLE test.t1 (f1 INTEGER NOT NULL PRIMARY KEY) engine=innodb;
#
--
connection
node_1
CREATE
TABLE
test
.
t1
(
f1
INTEGER
NOT
NULL
PRIMARY
KEY
)
engine
=
innodb
;
INSERT
INTO
test
.
t1
values
(
1
);
--
let
$wait_condition
=
SELECT
VARIABLE_VALUE
=
1
FROM
INFORMATION_SCHEMA
.
GLOBAL_STATUS
WHERE
VARIABLE_NAME
=
'wsrep_cluster_size'
--
source
include
/
wait_condition
.
inc
SELECT
VARIABLE_VALUE
FROM
INFORMATION_SCHEMA
.
GLOBAL_STATUS
WHERE
VARIABLE_NAME
=
'wsrep_cluster_size'
;
--
let
$wait_condition
=
SELECT
VARIABLE_VALUE
=
'Primary'
FROM
INFORMATION_SCHEMA
.
GLOBAL_STATUS
WHERE
VARIABLE_NAME
=
'wsrep_cluster_status'
--
source
include
/
wait_condition
.
inc
SHOW
STATUS
LIKE
'wsrep_cluster_status'
;
...
...
mysql-test/suite/galera_3nodes/t/galera_safe_to_bootstrap.test
View file @
139d65ab
...
...
@@ -193,6 +193,7 @@ CALL mtr.add_suppression("It may not be safe to bootstrap the cluster from this
CALL
mtr
.
add_suppression
(
"Aborting"
);
CALL
mtr
.
add_suppression
(
"Plugin 'wsrep' init function returned error
\\
."
);
CALL
mtr
.
add_suppression
(
"Plugin 'wsrep' registration as a STORAGE ENGINE failed
\\
."
);
CALL
mtr
.
add_suppression
(
"Plugin 'wsrep' registration as a FUNCTION failed
\\
."
);
CALL
mtr
.
add_suppression
(
"Failed to initialize plugins
\\
."
);
CALL
mtr
.
add_suppression
(
"WSREP: gcs/src/gcs_core.cpp:core_handle_uuid_msg
\\
(
\\
)"
);
...
...
@@ -207,6 +208,7 @@ CALL mtr.add_suppression("It may not be safe to bootstrap the cluster from this
CALL
mtr
.
add_suppression
(
"Aborting"
);
CALL
mtr
.
add_suppression
(
"Plugin 'wsrep' init function returned error
\\
."
);
CALL
mtr
.
add_suppression
(
"Plugin 'wsrep' registration as a STORAGE ENGINE failed
\\
."
);
CALL
mtr
.
add_suppression
(
"Plugin 'wsrep' registration as a FUNCTION failed
\\
."
);
CALL
mtr
.
add_suppression
(
"Failed to initialize plugins
\\
."
);
CALL
mtr
.
add_suppression
(
"WSREP: gcs/src/gcs_core.cpp:core_handle_uuid_msg
\\
(
\\
)"
);
...
...
scripts/wsrep_sst_backup.sh
View file @
139d65ab
...
...
@@ -33,7 +33,7 @@ export PATH="/usr/sbin:/sbin:$PATH"
.
$(
dirname
"
$0
"
)
/wsrep_sst_common
MAGIC_FILE
=
"
$WSREP_SST_OPT_DATA
/backup_sst_complete"
rm
-r
f
"
$MAGIC_FILE
"
rm
-r
"
$MAGIC_FILE
"
WSREP_LOG_DIR
=
${
WSREP_LOG_DIR
:-
""
}
# if WSREP_LOG_DIR env. variable is not set, try to get it from my.cnf
...
...
scripts/wsrep_sst_mariabackup.sh
View file @
139d65ab
...
...
@@ -106,6 +106,7 @@ DATA="$WSREP_SST_OPT_DATA"
INFO_FILE
=
'xtrabackup_galera_info'
DONOR_INFO_FILE
=
'donor_galera_info'
IST_FILE
=
'xtrabackup_ist'
MAGIC_FILE
=
"
$DATA
/
$INFO_FILE
"
DONOR_MAGIC_FILE
=
"
$DATA
/
$DONOR_INFO_FILE
"
...
...
@@ -686,16 +687,16 @@ cleanup_at_exit()
fi
if
[
"
$WSREP_SST_OPT_ROLE
"
=
'joiner'
]
;
then
wsrep_log_info
"Removing the sst_in_progress file"
wsrep_cleanup_progress_file
else
if
[
-n
"
$BACKUP_PID
"
]
;
then
if
check_pid
"
$BACKUP_PID
"
1
;
then
if
check_pid
$BACKUP_PID
;
then
wsrep_log_error
\
"mariadb-backup process is still running. Killing..."
cleanup_pid
$CHECK_PID
"
$BACKUP_PID
"
cleanup_pid
$CHECK_PID
fi
fi
wsrep_log_info
"Removing the sst_in_progress file"
wsrep_cleanup_progress_file
else
[
-f
"
$DATA
/
$IST_FILE
"
]
&&
rm
-f
"
$DATA
/
$IST_FILE
"
||
:
fi
...
...
@@ -919,9 +920,6 @@ monitor_process()
done
}
[
-f
"
$MAGIC_FILE
"
]
&&
rm
-f
"
$MAGIC_FILE
"
[
-f
"
$DONOR_MAGIC_FILE
"
]
&&
rm
-rf
"
$DONOR_MAGIC_FILE
"
read_cnf
setup_ports
...
...
@@ -1071,6 +1069,24 @@ get_transfer
findopt
=
'-L'
[
"
$OS
"
=
'FreeBSD'
]
&&
findopt
=
"
$findopt
-E"
SST_PID
=
"
$DATA
/wsrep_sst.pid"
# give some time for previous SST to complete:
check_round
=
0
while
check_pid
"
$SST_PID
"
0
;
do
wsrep_log_info
"previous SST is not completed, waiting for it to exit"
check_round
=
$((
check_round+1
))
if
[
$check_round
-eq
30
]
;
then
wsrep_log_error
"previous SST script still running."
exit
114
# EALREADY
fi
sleep
1
done
[
-f
"
$MAGIC_FILE
"
]
&&
rm
-f
"
$MAGIC_FILE
"
[
-f
"
$DONOR_MAGIC_FILE
"
]
&&
rm
-f
"
$DONOR_MAGIC_FILE
"
[
-f
"
$DATA
/
$IST_FILE
"
]
&&
rm
-f
"
$DATA
/
$IST_FILE
"
if
[
"
$WSREP_SST_OPT_ROLE
"
=
'donor'
]
;
then
trap
cleanup_at_exit EXIT
...
...
@@ -1204,9 +1220,6 @@ if [ "$WSREP_SST_OPT_ROLE" = 'donor' ]; then
exit
22
fi
# mariadb-backup implicitly writes PID to fixed location in $xtmpdir
BACKUP_PID
=
"
$xtmpdir
/xtrabackup_pid"
else
# BYPASS FOR IST
wsrep_log_info
"Bypassing the SST for IST"
...
...
@@ -1319,33 +1332,12 @@ else # joiner
impts
=
"--parallel=
$backup_threads
${
impts
:+
}
$impts
"
fi
SST_PID
=
"
$DATA
/wsrep_sst.pid"
# give some time for previous SST to complete:
check_round
=
0
while
check_pid
"
$SST_PID
"
0
;
do
wsrep_log_info
"previous SST is not completed, waiting for it to exit"
check_round
=
$((
check_round+1
))
if
[
$check_round
-eq
10
]
;
then
wsrep_log_error
"previous SST script still running."
exit
114
# EALREADY
fi
sleep
1
done
trap
simple_cleanup EXIT
echo
$$
>
"
$SST_PID
"
stagemsg
=
'Joiner-Recv'
MODULE
=
"
${
WSREP_SST_OPT_MODULE
:-
xtrabackup_sst
}
"
[
-f
"
$DATA
/
$IST_FILE
"
]
&&
rm
-f
"
$DATA
/
$IST_FILE
"
# May need xtrabackup_checkpoints later on
[
-f
"
$DATA
/xtrabackup_binary"
]
&&
rm
-f
"
$DATA
/xtrabackup_binary"
[
-f
"
$DATA
/xtrabackup_galera_info"
]
&&
rm
-f
"
$DATA
/xtrabackup_galera_info"
ADDR
=
"
$WSREP_SST_OPT_HOST
"
if
[
"
${
tmode
#VERIFY
}
"
!=
"
$tmode
"
]
;
then
...
...
@@ -1376,6 +1368,7 @@ else # joiner
STATDIR
=
"
$(
mktemp
-d
)
"
MAGIC_FILE
=
"
$STATDIR
/
$INFO_FILE
"
DONOR_MAGIC_FILE
=
"
$STATDIR
/
$DONOR_INFO_FILE
"
recv_joiner
"
$STATDIR
"
"
$stagemsg
-gtid"
$stimeout
1 1
...
...
@@ -1406,7 +1399,7 @@ else # joiner
fi
mkdir
-p
"
$DATA
/.sst"
(
recv_joiner
"
$DATA
/.sst"
"
$stagemsg
-SST"
0 0 0
)
&
jpid
=
$!
BACKUP_PID
=
$!
wsrep_log_info
"Proceeding with SST"
get_binlog
...
...
@@ -1449,12 +1442,21 @@ else # joiner
"
$DATA
"
-mindepth
1
-prune
-regex
"
$cpat
"
\
-o
-exec
rm
-rf
{}
>
&2
\+
# Deleting files from previous SST and legacy files from old versions:
[
-f
"
$DATA
/xtrabackup_binary"
]
&&
rm
-f
"
$DATA
/xtrabackup_binary"
[
-f
"
$DATA
/xtrabackup_pid"
]
&&
rm
-f
"
$DATA
/xtrabackup_pid"
[
-f
"
$DATA
/xtrabackup_checkpoints"
]
&&
rm
-f
"
$DATA
/xtrabackup_checkpoints"
[
-f
"
$DATA
/xtrabackup_info"
]
&&
rm
-f
"
$DATA
/xtrabackup_info"
# [ -f "$DATA/xtrabackup_slave_info" ] && rm -f "$DATA/xtrabackup_slave_info"
[
-f
"
$DATA
/xtrabackup_binlog_pos_innodb"
]
&&
rm
-f
"
$DATA
/xtrabackup_binlog_pos_innodb"
TDATA
=
"
$DATA
"
DATA
=
"
$DATA
/.sst"
MAGIC_FILE
=
"
$DATA
/
$INFO_FILE
"
wsrep_log_info
"Waiting for SST streaming to complete!"
monitor_process
$jpid
monitor_process
$BACKUP_PID
BACKUP_PID
=
""
if
[
!
-s
"
$DATA
/xtrabackup_checkpoints"
]
;
then
wsrep_log_error
"xtrabackup_checkpoints missing,"
\
...
...
@@ -1562,6 +1564,7 @@ else # joiner
fi
MAGIC_FILE
=
"
$TDATA
/
$INFO_FILE
"
DONOR_MAGIC_FILE
=
"
$TDATA
/
$DONOR_INFO_FILE
"
wsrep_log_info
"Moving the backup to
$TDATA
"
timeit
'mariadb-backup move stage'
"
$INNOMOVE
"
...
...
@@ -1586,7 +1589,8 @@ else # joiner
fi
if
[
!
-r
"
$MAGIC_FILE
"
]
;
then
wsrep_log_error
"SST magic file '
$MAGIC_FILE
' not found/readable"
wsrep_log_error
"Internal error: SST magic file '
$MAGIC_FILE
'"
\
"not found or not readable"
exit
2
fi
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment