126 lines
4.6 KiB
Plaintext
126 lines
4.6 KiB
Plaintext
#
|
|
# WL#12731: Improve database synchronization during mysqld startup
|
|
#
|
|
# Setup - create few databases and tables so that the alter and drop statements can be tested.
|
|
create database alter_db1 charset utf8mb4;
|
|
create table alter_db1.t1 (a int);
|
|
create database drop_db1;
|
|
create database drop_db2;
|
|
create table drop_db2.t1(a int) engine ndb;
|
|
create database drop_db3;
|
|
create table drop_db3.t1(a int);
|
|
create database restore_db1;
|
|
create table restore_db1.t1(a int) engine ndb;
|
|
create database restore_db2 charset latin1;
|
|
create table restore_db2.t1(a int) engine ndb;
|
|
create database restore_db3 charset latin1;
|
|
create table restore_db3.t1(a int) engine ndb;
|
|
# Take a backup of the current setup
|
|
# Drop restore_db1,restore_db2 to check how the server startup handles database restores
|
|
drop database restore_db1;
|
|
drop database restore_db2;
|
|
#
|
|
# Shutdown Server1
|
|
#
|
|
#
|
|
# Run DDLs on Server2 when server1 is down
|
|
#
|
|
# Create a database
|
|
create database create_db;
|
|
# Add tables to it
|
|
create table create_db.t1(a int) engine ndb;
|
|
create table create_db.t2(a int);
|
|
# Alter already existing databases
|
|
alter database alter_db1 charset latin1;
|
|
# Create and alter a database
|
|
create database alter_db2 charset utf8mb4;
|
|
alter database alter_db2 charset latin1;
|
|
# Drop databases
|
|
drop database drop_db1;
|
|
drop database drop_db2;
|
|
drop database drop_db3;
|
|
# Drop database restore_db3 and then restore restore_db1, restore_db2, restore_db3
|
|
drop database restore_db3;
|
|
#
|
|
# Startup server1
|
|
#
|
|
#
|
|
# Now check that the databases are in expected states
|
|
#
|
|
# Verify that create_db has been discovered
|
|
show create database create_db;
|
|
Database Create Database
|
|
create_db CREATE DATABASE `create_db` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */
|
|
# Verify t1 has been created. t2 won't be as it is local to Server 2.
|
|
show tables from create_db;
|
|
Tables_in_create_db
|
|
t1
|
|
show create table create_db.t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) DEFAULT NULL
|
|
) ENGINE=ndbcluster DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
|
|
show create table create_db.t2;
|
|
ERROR 42S02: Table 'create_db.t2' doesn't exist
|
|
# Verify that the database alter_db1 were properly altered
|
|
show create database alter_db1;
|
|
Database Create Database
|
|
alter_db1 CREATE DATABASE `alter_db1` /*!40100 DEFAULT CHARACTER SET latin1 */ /*!80016 DEFAULT ENCRYPTION='N' */
|
|
# Check that alter_db2 is created and altered
|
|
show create database alter_db2;
|
|
Database Create Database
|
|
alter_db2 CREATE DATABASE `alter_db2` /*!40100 DEFAULT CHARACTER SET latin1 */ /*!80016 DEFAULT ENCRYPTION='N' */
|
|
# Check the states of databases that were dropped
|
|
# Databases drop_db1 and drop_db2 should be dropped.
|
|
show create database drop_db1;
|
|
ERROR 42000: Unknown database 'drop_db1'
|
|
show create database drop_db2;
|
|
ERROR 42000: Unknown database 'drop_db2'
|
|
# Database drop_db3 should be preserved.
|
|
show create database drop_db3;
|
|
Database Create Database
|
|
drop_db3 CREATE DATABASE `drop_db3` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */
|
|
# Check that the databases and tables that were
|
|
# dropped and restored are now discovered
|
|
show create database restore_db1;
|
|
Database Create Database
|
|
restore_db1 CREATE DATABASE `restore_db1` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */
|
|
show create table restore_db1.t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) DEFAULT NULL
|
|
) ENGINE=ndbcluster DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
|
|
# restore_db2 was dropped when both mysqlds were alive
|
|
# so it would have been discovered with default charset
|
|
show create database restore_db2;
|
|
Database Create Database
|
|
restore_db2 CREATE DATABASE `restore_db2` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */
|
|
show create table restore_db2.t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) DEFAULT NULL
|
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
|
# restore_db3 was dropped when server1 was down
|
|
# when server1 came up, it should have been
|
|
# preserved the database with previous setting
|
|
show create database restore_db3;
|
|
Database Create Database
|
|
restore_db3 CREATE DATABASE `restore_db3` /*!40100 DEFAULT CHARACTER SET latin1 */ /*!80016 DEFAULT ENCRYPTION='N' */
|
|
show create table restore_db3.t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) DEFAULT NULL
|
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
|
#
|
|
# Cleanup
|
|
#
|
|
drop table create_db.t2;
|
|
drop table drop_db3.t1;
|
|
drop database create_db;
|
|
drop database alter_db1;
|
|
drop database alter_db2;
|
|
drop database drop_db3;
|
|
drop database restore_db1;
|
|
drop database restore_db2;
|
|
drop database restore_db3;
|