1# Test of mysqlhotcopy (perl script) 2# Author: Horst Hunger 3# Created: 2010-05-10 4 5--source include/not_windows.inc 6--source include/not_embedded.inc 7--source include/have_dbi_dbd-mysql.inc 8 9if (!$MYSQLHOTCOPY) 10{ 11 # Fail the test if the mysqlhotcopy script is missing. 12 # If the tool's location changes, mysql-test-run.pl must be updated to 13 # reflect this (look for "MYSQLHOTCOPY"). 14 die due to missing mysqlhotcopy tool; 15} 16 17# NOTE (johnemb, 2011-01-26): 18# In this test mysqlhotcopy (a perl script) is executed as a standalone 19# executable, i.e. not necessarily using the perl interpreter in PATH, 20# because that is how the documentation demonstrates it. 21# 22# We include have_dbi_dbd-mysql.inc above so that the test will 23# be skipped if Perl modules required by the mysqlhotcopy tool are not 24# found when the script is run this way. 25 26 27let $MYSQLD_DATADIR= `SELECT @@datadir`; 28--disable_warnings 29DROP DATABASE IF EXISTS hotcopy_test; 30--enable_warnings 31CREATE DATABASE hotcopy_test; 32USE hotcopy_test; 33eval CREATE TABLE t1 (c1 int, c2 varchar(20)) ENGINE=$engine; 34eval CREATE TABLE t2 (c1 int, c2 varchar(20)) ENGINE=$engine; 35eval CREATE TABLE t3 (c1 int, c2 varchar(20)) ENGINE=$engine; 36 37INSERT INTO t1 VALUES (1,'aaaaaaaaaaaaaaaaaaaa'),(2, 'bbbbbbbbbbbbbbbbbbbbbbb'); 38INSERT INTO t2 VALUES (1,'aaaaaaaaaaaaaaaaaaaa'),(2, 'bbbbbbbbbbbbbbbbbbbbbbb'); 39INSERT INTO t3 VALUES (1,'aaaaaaaaaaaaaaaaaaaa'),(2, 'bbbbbbbbbbbbbbbbbbbbbbb'); 40 41--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR 42--list_files $MYSQLD_DATADIR/hotcopy_test 43 44# backup into another database in the same directory 45--replace_result $MASTER_MYSOCK MASTER_MYSOCK 46--exec $MYSQLHOTCOPY --quiet -S $MASTER_MYSOCK -u root hotcopy_test hotcopy_save 47 48--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR 49--list_files $MYSQLD_DATADIR/hotcopy_save 50 51USE hotcopy_save; 52SELECT * FROM t1; 53SELECT * FROM t2; 54SELECT * FROM t3; 55 56# restore data into the original database with mysqlhotcopy 57if(`SELECT engine= 'MyISAM' FROM information_schema.tables WHERE table_name='t1'`) 58{ 59USE hotcopy_test; 60DELETE FROM t1; 61SELECT * FROM t1; 62 63--replace_result $MASTER_MYSOCK MASTER_MYSOCK 64--exec $MYSQLHOTCOPY --quiet --addtodest -S $MASTER_MYSOCK -u root hotcopy_save hotcopy_test 65 66USE hotcopy_save; 67SELECT * FROM t1; 68SELECT * FROM t2; 69SELECT * FROM t3; 70} 71 72USE hotcopy_test; 73DROP TABLE t2; 74--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR 75--list_files $MYSQLD_DATADIR/hotcopy_test 76 77--replace_result $MASTER_MYSOCK MASTER_MYSOCK 78--exec $MYSQLHOTCOPY --quiet --addtodest -S $MASTER_MYSOCK -u root hotcopy_save hotcopy_test 79 80FLUSH TABLES; 81SELECT * FROM t1; 82SELECT * FROM t2; 83SELECT * FROM t3; 84 85# backup of db into a directory 86USE hotcopy_test; 87--replace_result $MASTER_MYSOCK MASTER_MYSOCK $MYSQLTEST_VARDIR MYSQLTEST_VARDIR 88--exec $MYSQLHOTCOPY --quiet -S $MASTER_MYSOCK -u root hotcopy_test $MYSQLTEST_VARDIR/tmp 89--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR 90--list_files $MYSQLTEST_VARDIR/tmp/hotcopy_test 91#--exec rm -rf $MYSQLTEST_VARDIR/tmp/hotcopy_test 92--disable_warnings 93--remove_files_wildcard $MYSQLTEST_VARDIR/tmp/hotcopy_test * 94--enable_warnings 95--rmdir $MYSQLTEST_VARDIR/tmp/hotcopy_test 96 97# backup without full index files 98# reproduction of bug#53556, "--list_files" shows MYI files, which is wrong. 99DROP DATABASE hotcopy_save; 100--replace_result $MASTER_MYSOCK MASTER_MYSOCK 101--exec $MYSQLHOTCOPY --quiet --noindices -S $MASTER_MYSOCK -u root hotcopy_test hotcopy_save 102--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR 103--list_files $MYSQLD_DATADIR/hotcopy_save 104 105# test of option "allowold" 106DROP DATABASE hotcopy_save; 107--replace_result $MASTER_MYSOCK MASTER_MYSOCK 108--exec $MYSQLHOTCOPY --quiet -S $MASTER_MYSOCK -u root hotcopy_test hotcopy_save 109--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR 110--list_files $MYSQLD_DATADIR/hotcopy_save 111--replace_result $MASTER_MYSOCK MASTER_MYSOCK 112--error 1,9,11,110,2304,255 113--exec $MYSQLHOTCOPY --quiet -S $MASTER_MYSOCK -u root hotcopy_test hotcopy_save 114--replace_result $MASTER_MYSOCK MASTER_MYSOCK 115--exec $MYSQLHOTCOPY --quiet --allowold -S $MASTER_MYSOCK -u root hotcopy_test hotcopy_save 116--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR 117--list_files $MYSQLD_DATADIR/hotcopy_save 118 119# test of option "keepold" 120--replace_result $MASTER_MYSOCK MASTER_MYSOCK 121--exec $MYSQLHOTCOPY --quiet --keepold -S $MASTER_MYSOCK -u root hotcopy_test hotcopy_save 122--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR 123--list_files $MYSQLD_DATADIR/hotcopy_save_old 124--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR 125--list_files $MYSQLD_DATADIR/hotcopy_save 126 127# test of option "suffix" 128--replace_result $MASTER_MYSOCK MASTER_MYSOCK 129--exec $MYSQLHOTCOPY --quiet --suffix=_cpy -S $MASTER_MYSOCK -u root hotcopy_test 130--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR 131--list_files $MYSQLD_DATADIR/hotcopy_test_cpy 132DROP DATABASE hotcopy_test_cpy; 133 134DROP DATABASE hotcopy_test; 135DROP DATABASE hotcopy_save; 136DROP DATABASE hotcopy_save_old; 137 138