diff options
author | Vlad Lesin <vlad_lesin@mail.ru> | 2022-04-01 15:58:31 +0300 |
---|---|---|
committer | Vlad Lesin <vlad_lesin@mail.ru> | 2022-04-04 12:19:09 +0300 |
commit | 6a3545dd1e3a7fdf63ac22ad049fd7763f35a13e (patch) | |
tree | d9b627cec68b572a09c1c71982e4f2be5f33770b | |
parent | 7f5a3cd2532716a7c8d8308d8afc2dcb3a856ba3 (diff) | |
download | mariadb-git-6a3545dd1e3a7fdf63ac22ad049fd7763f35a13e.tar.gz |
MDEV-26322 Last binlog file and position are "empty" in mariabackup --prepare output
The issue is caused by 59a0236da4810a5ae243e77cb7a9c6262639a6e4 commit.
The initial intention of the commit was to speed up
"mariabackup --prepare".
The call stack of binlog position reading is the following:
▾ trx_rseg_mem_restore
▾ trx_rseg_array_init
▾ trx_lists_init_at_db_start
▸ srv_start
Both trx_lists_init_at_db_start() and trx_rseg_mem_restore() contain
special cases for srv_operation == SRV_OPERATION_RESTORE condition, and
on this condition only rseg headers are read to parse binlog position.
Performance impact is not so big.
The solution is to revert 59a0236da4810a5ae243e77cb7a9c6262639a6e4.
-rw-r--r-- | mysql-test/suite/mariabackup/binlog.result | 2 | ||||
-rw-r--r-- | mysql-test/suite/mariabackup/binlog.test | 2 | ||||
-rw-r--r-- | storage/innobase/srv/srv0start.cc | 3 |
3 files changed, 2 insertions, 5 deletions
diff --git a/mysql-test/suite/mariabackup/binlog.result b/mysql-test/suite/mariabackup/binlog.result index 4f8ed4185ce..7851c2ba069 100644 --- a/mysql-test/suite/mariabackup/binlog.result +++ b/mysql-test/suite/mariabackup/binlog.result @@ -3,6 +3,6 @@ INSERT INTO t VALUES(1); SHOW VARIABLES like 'log_bin'; Variable_name Value log_bin ON -FOUND 1 /Last binlog file .*, position .*/ in current_test +FOUND 1 /Last binlog file .+, position \d+/ in current_test # expect FOUND DROP TABLE t; diff --git a/mysql-test/suite/mariabackup/binlog.test b/mysql-test/suite/mariabackup/binlog.test index b2f08c2d7bb..9d62e5f8d6b 100644 --- a/mysql-test/suite/mariabackup/binlog.test +++ b/mysql-test/suite/mariabackup/binlog.test @@ -15,7 +15,7 @@ exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --target-dir exec $XTRABACKUP --prepare --binlog-info=1 --target-dir=$basedir ; let SEARCH_FILE=$MYSQLTEST_VARDIR/log/current_test; ---let SEARCH_PATTERN= Last binlog file .*, position .* +--let SEARCH_PATTERN= Last binlog file .+, position \d+ --source include/search_pattern_in_file.inc --echo # expect FOUND diff --git a/storage/innobase/srv/srv0start.cc b/storage/innobase/srv/srv0start.cc index 82153d4cb3b..f3213f891eb 100644 --- a/storage/innobase/srv/srv0start.cc +++ b/storage/innobase/srv/srv0start.cc @@ -1479,9 +1479,6 @@ file_checked: if (err != DB_SUCCESS) { return srv_init_abort(err); } - if (srv_operation == SRV_OPERATION_RESTORE) { - break; - } err = trx_lists_init_at_db_start(); if (err != DB_SUCCESS) { return srv_init_abort(err); |