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; CREATE TABLE t1(i INT) ENGINE INNODB;
INSERT INTO t1 VALUES(1); INSERT INTO t1 VALUES(1);
CREATE TABLE t21(i INT) ENGINE INNODB;
INSERT INTO t21 VALUES(1);
CREATE TABLE t2(i int) ENGINE INNODB; CREATE TABLE t2(i int) ENGINE INNODB;
# xtrabackup backup # xtrabackup backup
t1.ibd t1.ibd
t21.ibd
# xtrabackup prepare # xtrabackup prepare
t1.cfg
t21.cfg
ALTER TABLE t1 DISCARD TABLESPACE; ALTER TABLE t1 DISCARD TABLESPACE;
ALTER TABLE t1 IMPORT TABLESPACE; ALTER TABLE t1 IMPORT TABLESPACE;
SELECT * FROM t1; SELECT * FROM t1;
...@@ -11,3 +16,4 @@ i ...@@ -11,3 +16,4 @@ i
1 1
DROP TABLE t1; DROP TABLE t1;
DROP TABLE t2; DROP TABLE t2;
DROP TABLE t21;
...@@ -5,6 +5,9 @@ ...@@ -5,6 +5,9 @@
CREATE TABLE t1(i INT) ENGINE INNODB; CREATE TABLE t1(i INT) ENGINE INNODB;
INSERT INTO t1 VALUES(1); INSERT INTO t1 VALUES(1);
CREATE TABLE t21(i INT) ENGINE INNODB;
INSERT INTO t21 VALUES(1);
CREATE TABLE t2(i int) ENGINE INNODB; CREATE TABLE t2(i int) ENGINE INNODB;
echo # xtrabackup backup; echo # xtrabackup backup;
...@@ -15,13 +18,23 @@ exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup "--tables=te ...@@ -15,13 +18,23 @@ exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup "--tables=te
--enable_result_log --enable_result_log
list_files $targetdir/test *.ibd; 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; echo # xtrabackup prepare;
--disable_result_log --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 --enable_result_log
ALTER TABLE t1 DISCARD TABLESPACE; list_files $targetdir/test *.cfg;
let $MYSQLD_DATADIR= `select @@datadir`; 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.ibd $MYSQLD_DATADIR/test/t1.ibd;
copy_file $targetdir/test/t1.cfg $MYSQLD_DATADIR/test/t1.cfg; copy_file $targetdir/test/t1.cfg $MYSQLD_DATADIR/test/t1.cfg;
ALTER TABLE t1 IMPORT TABLESPACE; ALTER TABLE t1 IMPORT TABLESPACE;
...@@ -29,4 +42,5 @@ ALTER TABLE t1 IMPORT TABLESPACE; ...@@ -29,4 +42,5 @@ ALTER TABLE t1 IMPORT TABLESPACE;
SELECT * FROM t1; SELECT * FROM t1;
DROP TABLE t1; DROP TABLE t1;
DROP TABLE t2; DROP TABLE t2;
DROP TABLE t21;
rmdir $targetdir; rmdir $targetdir;
...@@ -29,7 +29,7 @@ let $targetdir=$MYSQLTEST_VARDIR/tmp/backup; ...@@ -29,7 +29,7 @@ let $targetdir=$MYSQLTEST_VARDIR/tmp/backup;
--disable_result_log --disable_result_log
exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup "--tables=test.*1" --target-dir=$targetdir; exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup "--tables=test.*1" --target-dir=$targetdir;
echo # xtrabackup prepare; 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 --enable_result_log
ALTER TABLE t1 DISCARD TABLESPACE; ALTER TABLE t1 DISCARD TABLESPACE;
......
...@@ -4984,6 +4984,11 @@ static int init_server_components() ...@@ -4984,6 +4984,11 @@ static int init_server_components()
help information. Since the implementation of plugin server help information. Since the implementation of plugin server
variables the help output is now written much later. 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 (opt_error_log && !opt_abort)
{ {
if (!log_error_file_ptr[0]) if (!log_error_file_ptr[0])
......
...@@ -589,16 +589,18 @@ row_quiesce_table_complete( ...@@ -589,16 +589,18 @@ row_quiesce_table_complete(
++count; ++count;
} }
/* Remove the .cfg file now that the user has resumed if (!opt_bootstrap) {
normal operations. Otherwise it will cause problems when /* Remove the .cfg file now that the user has resumed
the user tries to drop the database (remove directory). */ normal operations. Otherwise it will cause problems when
char cfg_name[OS_FILE_MAX_PATH]; 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) { if (trx_purge_state() != PURGE_STATE_DISABLED) {
trx_purge_run(); 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