--source include/have_multi_ndb.inc --source suite/ndb/include/backup_restore_setup.inc # # The table structure is as follows: # CREATE TABLE t1 ( # a INT PRIMARY KEY, # b VARCHAR(30) # ) ENGINE NDB; # # INSERT INTO t1 VALUES # (1, 'a'), # (2, 'bb'), # (3, 'ccc'); --exec $NDB_RESTORE -b 1 -n 1 -m -r --disable-indexes $NDB_SAVED_BACKUPS/metadata_upgrade_basic_backup >> $NDB_TOOLS_OUTPUT --exec $NDB_RESTORE -b 1 -n 2 -r $NDB_SAVED_BACKUPS/metadata_upgrade_basic_backup >> $NDB_TOOLS_OUTPUT --exec $NDB_RESTORE -b 1 -n 1 --rebuild-indexes $NDB_SAVED_BACKUPS/metadata_upgrade_basic_backup >> $NDB_TOOLS_OUTPUT --echo Backup restored # Test upgrade of the metadata during schema synchronization --echo Restart server 1 to trigger schema synchronization let $mysqld_name=mysqld.1.1; --source include/restart_mysqld.inc connection server2; --echo Restart server 2 to trigger schema synchronization let $mysqld_name=mysqld.2.1; --source include/restart_mysqld.inc # Turn off metadata check so it doesn't intefere with discovery/schema sync SET @old_ndb_metadata_check_server2 = @@global.ndb_metadata_check; SET GLOBAL ndb_metadata_check = false; connection server1; SET @old_ndb_metadata_check_server1 = @@global.ndb_metadata_check; SET GLOBAL ndb_metadata_check = false; SHOW CREATE TABLE t1; --sorted_result SELECT * FROM t1; ALTER TABLE t1 DROP COLUMN b; INSERT INTO t1 values (4),(5); --sorted_result SELECT * FROM t1; DROP TABLE t1; --exec $NDB_RESTORE -b 1 -n 1 -m -r --disable-indexes $NDB_SAVED_BACKUPS/metadata_upgrade_basic_backup >> $NDB_TOOLS_OUTPUT --exec $NDB_RESTORE -b 1 -n 2 -r $NDB_SAVED_BACKUPS/metadata_upgrade_basic_backup >> $NDB_TOOLS_OUTPUT --exec $NDB_RESTORE -b 1 -n 1 --rebuild-indexes $NDB_SAVED_BACKUPS/metadata_upgrade_basic_backup >> $NDB_TOOLS_OUTPUT # Test upgrade of the metadata during discovery from NDB SHOW CREATE TABLE t1; --sorted_result SELECT * FROM t1; ALTER TABLE t1 DROP COLUMN b; INSERT INTO t1 values (4),(5); --sorted_result SELECT * FROM t1; DROP TABLE t1; # Test upgrade of the metadata during automatic sync # Store initial counts of both detected and synchronized objects --let $initial_detected_count = query_get_value(SHOW STATUS LIKE 'Ndb_metadata_detected_count', Value, 1) --let $initial_synced_count = query_get_value(SHOW STATUS LIKE 'Ndb_metadata_synced_count', Value, 1) # Set low interval so changes are detected quickly SET GLOBAL ndb_metadata_check = @old_ndb_metadata_check_server1; SET @old_ndb_metadata_check_interval = @@global.ndb_metadata_check_interval; SET GLOBAL ndb_metadata_check_interval = 0; --exec $NDB_RESTORE -b 1 -n 1 -m -r --disable-indexes $NDB_SAVED_BACKUPS/metadata_upgrade_basic_backup >> $NDB_TOOLS_OUTPUT --exec $NDB_RESTORE -b 1 -n 2 -r $NDB_SAVED_BACKUPS/metadata_upgrade_basic_backup >> $NDB_TOOLS_OUTPUT --exec $NDB_RESTORE -b 1 -n 1 --rebuild-indexes $NDB_SAVED_BACKUPS/metadata_upgrade_basic_backup >> $NDB_TOOLS_OUTPUT # Wait until the following 1 object change is detected: # Table 'test.t1' --let $expected_changes = 1 --let $max_wait = 30 --source wait_metadata_changes_detected.inc # Changes have been detected, reset value SET GLOBAL ndb_metadata_check_interval = @old_ndb_metadata_check_interval; # Wait until the changes detected have been synced --let $max_wait = 30 --source wait_metadata_synced.inc --sorted_result SELECT * FROM t1; ALTER TABLE t1 DROP COLUMN b; INSERT INTO t1 values (4),(5); --sorted_result SELECT * FROM t1; DROP TABLE t1; # Reset metadata check value --connection server2 SET GLOBAL ndb_metadata_check = @old_ndb_metadata_check_server2; --connection server1 SET GLOBAL ndb_metadata_check = @old_ndb_metadata_check_server1; let NDB_RESTORE=; --remove_file $NDB_TOOLS_OUTPUT