config root man

Current Path : /home/usr.opt/mysql57/mysql-test/suite/innodb/t/

FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64
Upload File :
Current File : /home/usr.opt/mysql57/mysql-test/suite/innodb/t/tablespace_crash.test

--echo #
--echo # This test shows that datafiles can be moved after a crash in such a way
--echo # that recovery can occur on the datafiles at the new location.
--echo #

--source include/have_innodb.inc
--source include/have_debug.inc
# Restarting and killing mysqld is not supported in embedded
--source include/not_embedded.inc
--source include/not_valgrind.inc

SET DEFAULT_STORAGE_ENGINE=InnoDB;

# Set these up for show_i_s_tablespaces.inc
LET $MYSQLD_DATADIR = `select @@datadir`;
LET $INNODB_PAGE_SIZE = `select @@innodb_page_size`;

--echo #
--echo # Create various kinds of tablespaces in both local and remote
--echo # locations and start populating them in a transaction.
--echo #
CREATE TABLESPACE ts1 ADD DATAFILE 'tablespace1.ibd' ENGINE=InnoDB;
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
eval CREATE TABLESPACE ts2 ADD DATAFILE '$MYSQL_TMP_DIR/tablespace2.ibd' ENGINE=InnoDB;
CREATE TABLE t1a (a int) TABLESPACE=ts1;
CREATE TABLE t1b (a int) TABLESPACE=ts1;
CREATE TABLE t2a (a int) TABLESPACE=ts2;
CREATE TABLE t2b (a int) TABLESPACE=ts2;
CREATE TABLE t3 (a int) TABLESPACE=innodb_file_per_table;
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
eval CREATE TABLE t4 (a int) TABLESPACE=innodb_file_per_table DATA DIRECTORY='$MYSQL_TMP_DIR';
INSERT INTO t1a VALUES (1),(2),(3),(4),(5);
INSERT INTO t1b VALUES (1),(2),(3),(4),(5);
INSERT INTO t2a VALUES (1),(2),(3),(4),(5);
INSERT INTO t2b VALUES (1),(2),(3),(4),(5);
INSERT INTO t3 VALUES (1),(2),(3),(4),(5);
INSERT INTO t4 VALUES (1),(2),(3),(4),(5);
--source suite/innodb/include/show_i_s_tablespaces.inc
--list_files $MYSQL_TMP_DIR/test

START TRANSACTION;
INSERT INTO t1a VALUES (6);
INSERT INTO t1b VALUES (6);
INSERT INTO t2a VALUES (6);
INSERT INTO t2b VALUES (6);
INSERT INTO t3 VALUES (6);
INSERT INTO t4 VALUES (6);

--echo #
--source include/kill_mysqld.inc

--echo # Copy the datafiles so that they can be found
--echo # in both default and remote locations.
--copy_file $MYSQLD_DATADIR/tablespace1.ibd $MYSQL_TMP_DIR/tablespace1.ibd
--exec echo $MYSQL_TMP_DIR/tablespace1.ibd > $MYSQLD_DATADIR/tablespace1.isl
--copy_file $MYSQL_TMP_DIR/tablespace2.ibd $MYSQLD_DATADIR/tablespace2.ibd
--copy_file $MYSQLD_DATADIR/test/t3.ibd $MYSQL_TMP_DIR/test/t3.ibd
--exec echo $MYSQL_TMP_DIR/test/t3.ibd > $MYSQLD_DATADIR/test/t3.isl
--copy_file $MYSQL_TMP_DIR/test/t4.ibd $MYSQLD_DATADIR/test/t4.ibd

--echo # Restart mysqld and display which datafiles were recovered.
--source include/start_mysqld.inc

--echo # Default locations should be recovered.
--echo #

--source suite/innodb/include/show_i_s_tablespaces.inc
select * from t1a;
select * from t2a;
select * from t3;
select * from t4;
SHOW CREATE TABLE t1a;
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
SHOW CREATE TABLE t2a;
SHOW CREATE TABLE t3;
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
SHOW CREATE TABLE t4;

--echo #
--echo # Start a transaction to each table again.
--echo #

START TRANSACTION;
INSERT INTO t1a VALUES (6);
INSERT INTO t1b VALUES (6);
INSERT INTO t2a VALUES (6);
INSERT INTO t2b VALUES (6);
INSERT INTO t3 VALUES (6);
INSERT INTO t4 VALUES (6);

--echo #
--source include/kill_mysqld.inc

--echo # Changes were made to the files in the default locations and the
--echo # SYS_DATAFILES.PATH was updated to show the default location.
--echo # Delete the older remote files and move the default files to the
--echo # remote locations.
--remove_file $MYSQL_TMP_DIR/tablespace1.ibd
--remove_file $MYSQL_TMP_DIR/tablespace2.ibd
--remove_file $MYSQL_TMP_DIR/test/t3.ibd
--remove_file $MYSQL_TMP_DIR/test/t4.ibd
--move_file $MYSQLD_DATADIR/tablespace1.ibd $MYSQL_TMP_DIR/tablespace1.ibd
--move_file $MYSQLD_DATADIR/tablespace2.ibd $MYSQL_TMP_DIR/tablespace2.ibd
--move_file $MYSQLD_DATADIR/test/t3.ibd $MYSQL_TMP_DIR/test/t3.ibd
--move_file $MYSQLD_DATADIR/test/t4.ibd $MYSQL_TMP_DIR/test/t4.ibd
--exec echo $MYSQL_TMP_DIR/tablespace1.ibd > $MYSQLD_DATADIR/tablespace1.isl
--exec echo $MYSQL_TMP_DIR/tablespace2.ibd > $MYSQLD_DATADIR/tablespace2.isl
--exec echo $MYSQL_TMP_DIR/test/t3.ibd > $MYSQLD_DATADIR/tablespace3.isl
--exec echo $MYSQL_TMP_DIR/test/t4.ibd > $MYSQLD_DATADIR/tablespace4.isl

--echo # Restart mysqld and show that the remote files were opened and recovered.
--source include/start_mysqld.inc
--echo #


--source suite/innodb/include/show_i_s_tablespaces.inc
select * from t1a;
select * from t2a;
select * from t3;
select * from t4;
SHOW CREATE TABLE t1a;
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
SHOW CREATE TABLE t2a;
SHOW CREATE TABLE t3;
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
SHOW CREATE TABLE t4;

--echo #
--echo # Start a transaction to each table again.
--echo #

START TRANSACTION;
INSERT INTO t1a VALUES (6);
INSERT INTO t1b VALUES (6);
INSERT INTO t2a VALUES (6);
INSERT INTO t2b VALUES (6);
INSERT INTO t3 VALUES (6);
INSERT INTO t4 VALUES (6);

--echo #
--source include/kill_mysqld.inc

--echo # Mess up a general tablespace ISL file so that it points to the wrong file.
--echo # Recovery will fail. Check the error message.

--exec echo $MYSQL_TMP_DIR/bad/tablespace1.ibd > $MYSQLD_DATADIR/tablespace1.isl

let SEARCH_FILE= $MYSQLTEST_VARDIR/log/my_restart.err;
--error 3,42
--exec $MYSQLD_CMD --core-file --console > $SEARCH_FILE 2>&1;

let SEARCH_PATTERN= \[ERROR\] InnoDB: ISL file '.*tablespace1.isl' was found but the linked file '.*tablespace1.ibd' could not be opened or is not correct;
--source include/search_pattern_in_file.inc

let SEARCH_PATTERN= \[ERROR\] InnoDB: Tablespace .* was not found at .*tablespace1.ibd;
--source include/search_pattern_in_file.inc

let SEARCH_PATTERN= \[ERROR\] InnoDB: Cannot continue operation;
--source include/search_pattern_in_file.inc

--remove_file $SEARCH_FILE

--echo # Mess up a file-per-table tablespace ISL file so that it points to the wrong file.
--echo # Recovery will fail. Check the error message.

--exec echo $MYSQL_TMP_DIR/tablespace1.ibd > $MYSQLD_DATADIR/tablespace1.isl
--exec echo $MYSQL_TMP_DIR/bad/t3.ibd > $MYSQLD_DATADIR/test/t3.isl

--error 3,42
--exec $MYSQLD_CMD --core-file --console > $SEARCH_FILE 2>&1;

let SEARCH_PATTERN= \[ERROR\] InnoDB: ISL file '.*t3.isl' was found but the linked file '.*t3.ibd' could not be opened or is not correct;
--source include/search_pattern_in_file.inc

let SEARCH_PATTERN= \[ERROR\] InnoDB: Tablespace .* was not found at .*t3.ibd;
--source include/search_pattern_in_file.inc

let SEARCH_PATTERN= \[ERROR\] InnoDB: Cannot continue operation;
--source include/search_pattern_in_file.inc

--remove_file $SEARCH_FILE

--echo # Delete the ISL files and move all remote files to default locations
--remove_file $MYSQLD_DATADIR/tablespace1.isl
--remove_file $MYSQLD_DATADIR/tablespace2.isl
--remove_file $MYSQLD_DATADIR/test/t3.isl
--remove_file $MYSQLD_DATADIR/test/t4.isl
--move_file $MYSQL_TMP_DIR/tablespace1.ibd $MYSQLD_DATADIR/tablespace1.ibd
--move_file $MYSQL_TMP_DIR/tablespace2.ibd $MYSQLD_DATADIR/tablespace2.ibd
--move_file $MYSQL_TMP_DIR/test/t3.ibd $MYSQLD_DATADIR/test/t3.ibd
--move_file $MYSQL_TMP_DIR/test/t4.ibd $MYSQLD_DATADIR/test/t4.ibd

--echo # Restart mysqld and display which datafiles were recovered.
--source include/start_mysqld.inc

--echo # It should be the default datafiles
--echo # The two previous attempts to recover should not cause a problem
--echo #

--source suite/innodb/include/show_i_s_tablespaces.inc
select * from t1a;
select * from t2a;
select * from t3;
select * from t4;
SHOW CREATE TABLE t1a;
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
SHOW CREATE TABLE t2a;
SHOW CREATE TABLE t3;
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
SHOW CREATE TABLE t4;

--echo #
--echo # Cleanup
--echo #
DROP TABLE t1a;
DROP TABLE t1b;
DROP TABLE t2a;
DROP TABLE t2b;
DROP TABLE t3;
DROP TABLE t4;
DROP TABLESPACE ts1;
DROP TABLESPACE ts2;
--rmdir $MYSQL_TMP_DIR/test

Man Man