# *************************************************** # wl#8619: Test the basic functionality of portability # Test by moving --datadir location to new location # start the server with only by providing the --datadir # Here in this case no need to pass the option # --innodb-directories # **************************************************** --source include/have_innodb_max_16k.inc --source include/have_innodb_default_undo_tablespaces.inc let $MYSQLD_OLD_DATADIR = `select @@datadir`; # Create new datadir folders like data --mkdir $MYSQL_TMP_DIR/new_datadir --mkdir $MYSQL_TMP_DIR/new_datadir/data let $MYSQLD_NEW_DATADIR = $MYSQL_TMP_DIR/new_datadir/data; --mkdir $MYSQLD_NEW_DATADIR/test --mkdir $MYSQLD_NEW_DATADIR/mysql --mkdir $MYSQLD_NEW_DATADIR/sys --mkdir $MYSQLD_NEW_DATADIR/performance_schema --mkdir $MYSQLD_NEW_DATADIR/mtr --echo ## create tables and tablespaces without absolute paths CREATE TABLESPACE ts1 ADD DATAFILE 'ts1.ibd' Engine=InnoDB; CREATE TABLE tab1(c1 int, c2 varchar(10)) TABLESPACE=ts1; INSERT INTO tab1 VALUES(1, 'VISH'); CREATE TABLE tab2(c1 int, c2 varchar(10)) Engine=InnoDB; INSERT INTO tab2 VALUES(2, 'VISH'); CREATE INDEX ix1 ON tab1(c2) USING BTREE; CREATE INDEX ix1 ON tab2(c2) ; # Create new undo tablespaces CREATE UNDO TABLESPACE undo_003 ADD DATAFILE 'undo_003.ibu'; CREATE UNDO TABLESPACE undo_004 ADD DATAFILE 'undo_004.ibu'; # Check from metadata info SELECT file_name,file_type,tablespace_name FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE LIKE '%undo%'; --echo ## Stop DB server --source include/shutdown_mysqld.inc --echo # Copy whole --datadir files into new location --copy_file $MYSQLD_OLD_DATADIR/auto.cnf $MYSQLD_NEW_DATADIR/auto.cnf --copy_file $MYSQLD_OLD_DATADIR/ib_buffer_pool $MYSQLD_NEW_DATADIR/ib_buffer_pool --copy_file $MYSQLD_OLD_DATADIR/ibdata1 $MYSQLD_NEW_DATADIR/ibdata1 --copy_files_wildcard $MYSQLD_OLD_DATADIR $MYSQLD_NEW_DATADIR *.ibd --copy_files_wildcard $MYSQLD_OLD_DATADIR $MYSQLD_NEW_DATADIR undo* --copy_files_wildcard $MYSQLD_OLD_DATADIR $MYSQLD_NEW_DATADIR ib_logfile* --copy_files_wildcard $MYSQLD_OLD_DATADIR/test/ $MYSQLD_NEW_DATADIR/test/ *.* --copy_files_wildcard $MYSQLD_OLD_DATADIR/sys/ $MYSQLD_NEW_DATADIR/sys/ *.* --copy_files_wildcard $MYSQLD_OLD_DATADIR/performance_schema/ $MYSQLD_NEW_DATADIR/performance_schema/ *.* --copy_files_wildcard $MYSQLD_OLD_DATADIR/mysql/ $MYSQLD_NEW_DATADIR/mysql/ *.* --copy_files_wildcard $MYSQLD_OLD_DATADIR/mtr/ $MYSQLD_NEW_DATADIR/mtr/ *.* --echo ## Start with new --datadir --let $restart_parameters="restart: --datadir=$MYSQLD_NEW_DATADIR" --source include/start_mysqld_no_echo.inc --echo ## Check datadir started with new one --replace_result $MYSQLD_NEW_DATADIR NEW_DATADIR SELECT @@datadir; --echo ## Check with SHOW SHOW CREATE TABLE tab1; SHOW CREATE TABLE tab2; --echo ## Check with DML and DDL SELECT * FROM tab1; SELECT * FROM tab2; ALTER UNDO TABLESPACE innodb_undo_001 SET INACTIVE; let $inactive_undo_space = innodb_undo_001; source include/wait_until_undo_space_is_empty.inc; ALTER UNDO TABLESPACE innodb_undo_002 SET INACTIVE; let $inactive_undo_space = innodb_undo_002; source include/wait_until_undo_space_is_empty.inc; SELECT name,space_type,state FROM INFORMATION_SCHEMA.INNODB_TABLESPACES WHERE space_type = 'Undo'; DELETE FROM tab1; DELETE FROM tab2; ALTER TABLE tab1 add column c3 varchar(10); INSERT INTO tab1 VALUES(1, 'VISH','NATH'); INSERT INTO tab2 VALUES(2, 'VISH'); SELECT * FROM tab1; SELECT * FROM tab2; SELECT name,space_type,state FROM INFORMATION_SCHEMA.INNODB_TABLESPACES WHERE space_type = 'Undo'; ALTER UNDO TABLESPACE innodb_undo_001 SET ACTIVE; ALTER UNDO TABLESPACE innodb_undo_002 SET ACTIVE; ALTER UNDO TABLESPACE undo_003 SET INACTIVE; let $inactive_undo_space = undo_003; source include/wait_until_undo_space_is_empty.inc; ALTER UNDO TABLESPACE undo_004 SET INACTIVE; let $inactive_undo_space = undo_004; source include/wait_until_undo_space_is_empty.inc; SELECT name,space_type,state FROM INFORMATION_SCHEMA.INNODB_TABLESPACES WHERE space_type = 'Undo'; --echo # Clean up new datadir DROP TABLE tab1; DROP TABLE tab2; DROP TABLESPACE ts1; DROP UNDO TABLESPACE undo_003; DROP UNDO TABLESPACE undo_004; --echo # Stop DB server with new datadir --source include/shutdown_mysqld.inc # Clean up new datadir while server is OFF --force-rmdir $MYSQL_TMP_DIR/new_datadir --echo # Re-start with old --datadir --replace_result $MYSQLD_OLD_DATADIR OLD_DATADIR --let $restart_parameters="restart: --datadir=$MYSQLD_OLD_DATADIR" --source include/start_mysqld.inc --echo # Check --datadir started with old --replace_result $MYSQLD_OLD_DATADIR OLD_DATADIR SELECT @@datadir; # Clean up old datadir DROP TABLE tab1; DROP TABLE tab2; DROP TABLESPACE ts1; SELECT name,space_type,state FROM INFORMATION_SCHEMA.INNODB_TABLESPACES WHERE space_type = 'Undo'; ALTER UNDO TABLESPACE undo_003 SET INACTIVE; let $inactive_undo_space = undo_003; source include/wait_until_undo_space_is_empty.inc; ALTER UNDO TABLESPACE undo_004 SET INACTIVE; let $inactive_undo_space = undo_004; source include/wait_until_undo_space_is_empty.inc; SELECT name,space_type,state FROM INFORMATION_SCHEMA.INNODB_TABLESPACES WHERE space_type = 'Undo'; DROP UNDO TABLESPACE undo_003; DROP UNDO TABLESPACE undo_004;