mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 04:22:27 +01:00
66 lines
2.3 KiB
Text
66 lines
2.3 KiB
Text
--source include/have_innodb.inc
|
|
--source include/have_debug.inc
|
|
--source include/have_debug_sync.inc
|
|
|
|
# The test demonstrates that intermediate tables (ALTER TABLE...ALGORITHM=COPY)
|
|
# will not be included in a backup.
|
|
|
|
echo # xtrabackup backup;
|
|
let $targetdir=$MYSQLTEST_VARDIR/tmp/backup;
|
|
|
|
CREATE TABLE t1(i int, t text, fulltext index(t)) ENGINE=InnoDB;
|
|
INSERT into t1 values(1,'foo');
|
|
|
|
connect con2, localhost, root,,;
|
|
connection con2;
|
|
SET debug_sync='copy_data_between_tables_before_reset_backup_lock SIGNAL go WAIT_FOR after_backup_stage_block_commit' ;
|
|
DELIMITER |;
|
|
send SET debug_sync='now WAIT_FOR after_backup_stage_start';ALTER TABLE test.t1 DROP t, algorithm=COPY;|
|
|
DELIMITER ;|
|
|
connection default;
|
|
|
|
# Setup mariabackup events
|
|
# - After BACKUP STAGE START , let concurrent ALTER run, wand wait for it to create temporary tables
|
|
# - After BACKUP STAGE COMMIT, check that temporary files are in the database
|
|
|
|
let after_backup_stage_start=SET debug_sync='now SIGNAL after_backup_stage_start WAIT_FOR go';
|
|
DELIMITER |;
|
|
# The following query only works if there are innodb "intermediate" tables
|
|
# in the system tables , which we want to prove there
|
|
let after_backup_stage_block_commit=
|
|
IF (SELECT COUNT(*) > 0 FROM INFORMATION_SCHEMA.innodb_sys_tablespaces WHERE name like '%/#sql%') THEN
|
|
SET debug_sync='now SIGNAL after_backup_stage_block_commit';
|
|
END IF|
|
|
DELIMITER ;|
|
|
|
|
--disable_result_log
|
|
exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --target-dir=$targetdir --dbug=+d,mariabackup_events;
|
|
--enable_result_log
|
|
|
|
# There should be no temp files in the backup.
|
|
--list_files $targetdir/test #sql*
|
|
|
|
connection con2;
|
|
#Wait for ALTER to finish, cleanup
|
|
reap;
|
|
SET debug_sync='RESET';
|
|
disconnect con2;
|
|
|
|
connection default;
|
|
echo # xtrabackup prepare;
|
|
--disable_result_log
|
|
exec $XTRABACKUP --prepare --target-dir=$targetdir;
|
|
-- source include/restart_and_restore.inc
|
|
--enable_result_log
|
|
|
|
# Check there are no temp tablespaces in sys_tablespaces, after backup
|
|
SELECT * FROM t1;
|
|
DROP TABLE t1;
|
|
SELECT * FROM INFORMATION_SCHEMA.innodb_sys_tablespaces WHERE name like '%/#sql%' or name like 'test/%';
|
|
|
|
# Restart once again to clear first_start_after_backup flag
|
|
# This is to catch potential warnings, since "missing file" for #sql is suppressed
|
|
# during the first start after backup
|
|
--source include/restart_mysqld.inc
|
|
|
|
rmdir $targetdir;
|