Commit d471469b authored by Vladislav Vaintroub's avatar Vladislav Vaintroub

MDEV-13466 Implement --export option for MariaDB Backup

full server recovery is performed .
We start "mysqld" with  --bootstrap
and pass bootstrap script consisting of several FLUSH TABLES FOR export/
UNLOCK TABLES
parent d26fb96a
This diff is collapsed.
partial : xtrabackup --export does not work
xb_page_compress : xtrabackup --export does not work
CREATE TABLE t1(i INT) ENGINE INNODB;
INSERT INTO t1 VALUES(1);
CREATE TABLE t21(i INT) ENGINE INNODB;
INSERT INTO t21 VALUES(1);
CREATE TABLE t2(i int) ENGINE INNODB;
# xtrabackup backup
t1.ibd
t21.ibd
# xtrabackup prepare
t1.cfg
t21.cfg
ALTER TABLE t1 DISCARD TABLESPACE;
ALTER TABLE t1 IMPORT TABLESPACE;
SELECT * FROM t1;
......@@ -11,3 +16,4 @@ i
1
DROP TABLE t1;
DROP TABLE t2;
DROP TABLE t21;
......@@ -5,6 +5,9 @@
CREATE TABLE t1(i INT) ENGINE INNODB;
INSERT INTO t1 VALUES(1);
CREATE TABLE t21(i INT) ENGINE INNODB;
INSERT INTO t21 VALUES(1);
CREATE TABLE t2(i int) ENGINE INNODB;
echo # xtrabackup backup;
......@@ -15,13 +18,23 @@ exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup "--tables=te
--enable_result_log
list_files $targetdir/test *.ibd;
# Inject a junk .ibd file into backup dir to
# see if prepare does not choke on it.
write_file $targetdir/test/junk.ibd;
EOF
write_file $targetdir/test/junk.frm;
EOF
echo # xtrabackup prepare;
--disable_result_log
exec $XTRABACKUP --prepare --export --target-dir=$targetdir;
exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --defaults-group-suffix=.1 --prepare --export --target-dir=$targetdir;
--enable_result_log
ALTER TABLE t1 DISCARD TABLESPACE;
list_files $targetdir/test *.cfg;
let $MYSQLD_DATADIR= `select @@datadir`;
ALTER TABLE t1 DISCARD TABLESPACE;
copy_file $targetdir/test/t1.ibd $MYSQLD_DATADIR/test/t1.ibd;
copy_file $targetdir/test/t1.cfg $MYSQLD_DATADIR/test/t1.cfg;
ALTER TABLE t1 IMPORT TABLESPACE;
......@@ -29,4 +42,5 @@ ALTER TABLE t1 IMPORT TABLESPACE;
SELECT * FROM t1;
DROP TABLE t1;
DROP TABLE t2;
DROP TABLE t21;
rmdir $targetdir;
......@@ -29,7 +29,7 @@ let $targetdir=$MYSQLTEST_VARDIR/tmp/backup;
--disable_result_log
exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup "--tables=test.*1" --target-dir=$targetdir;
echo # xtrabackup prepare;
exec $XTRABACKUP --prepare --export --target-dir=$targetdir;
exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --defaults-group-suffix=.1 --prepare --export --target-dir=$targetdir;
--enable_result_log
ALTER TABLE t1 DISCARD TABLESPACE;
......
......@@ -4984,6 +4984,11 @@ static int init_server_components()
help information. Since the implementation of plugin server
variables the help output is now written much later.
*/
#ifdef _WIN32
if (opt_console)
opt_error_log= false;
#endif
if (opt_error_log && !opt_abort)
{
if (!log_error_file_ptr[0])
......
......@@ -589,16 +589,18 @@ row_quiesce_table_complete(
++count;
}
/* Remove the .cfg file now that the user has resumed
normal operations. Otherwise it will cause problems when
the user tries to drop the database (remove directory). */
char cfg_name[OS_FILE_MAX_PATH];
if (!opt_bootstrap) {
/* Remove the .cfg file now that the user has resumed
normal operations. Otherwise it will cause problems when
the user tries to drop the database (remove directory). */
char cfg_name[OS_FILE_MAX_PATH];
srv_get_meta_data_filename(table, cfg_name, sizeof(cfg_name));
srv_get_meta_data_filename(table, cfg_name, sizeof(cfg_name));
os_file_delete_if_exists(innodb_data_file_key, cfg_name, NULL);
os_file_delete_if_exists(innodb_data_file_key, cfg_name, NULL);
ib::info() << "Deleting the meta-data file '" << cfg_name << "'";
ib::info() << "Deleting the meta-data file '" << cfg_name << "'";
}
if (trx_purge_state() != PURGE_STATE_DISABLED) {
trx_purge_run();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment