171 lines
5.3 KiB
Plaintext
171 lines
5.3 KiB
Plaintext
# ***************************************************
|
|
# 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;
|
|
|