# # The 'innodb_file_per_table' variable should show "ON" # SHOW VARIABLES LIKE 'innodb_file_per_table'; Variable_name Value innodb_file_per_table ON CREATE DATABASE `db1`; CREATE DATABASE `db.2`; CREATE DATABASE `db-3`; CREATE TABLE `db1`.`t1` (c1 INT) ENGINE=InnoDB; CREATE TABLE `db.2`.`t.2` (c1 INT) ENGINE=InnoDB; CREATE TABLE `db-3`.`t-3` (c1 INT) ENGINE=InnoDB; INSERT INTO `db1`.`t1` VALUES (1); INSERT INTO `db.2`.`t.2` VALUES (2); INSERT INTO `db-3`.`t-3` VALUES (3); SELECT Schema_name FROM information_schema.schemata WHERE Schema_name LIKE 'db%'; Schema_name db1 db-3 db.2 SELECT Table_schema, Table_name FROM information_schema.tables WHERE Table_schema LIKE 'db%'; Table_schema Table_name db1 t1 db-3 t-3 db.2 t.2 SELECT * FROM `db1`.`t1`; c1 1 SELECT * FROM `db.2`.`t.2`; c1 2 SELECT * FROM `db-3`.`t-3`; c1 3 # Stop server. # list_files MYSQLD_DATADIR db* db1 db@002d3 db@002e2 # list_files MYSQLD_DATADIR/db1 db.opt t1.frm t1.ibd # list_files MYSQLD_DATADIR/db@002e2 db.opt t@002e2.frm t@002e2.ibd # list_files MYSQLD_DATADIR/db@002d3 db.opt t@002d3.frm t@002d3.ibd # run ibbackup --include "db@002e2\.t@002e2|db@002d3\.t@002d3" # list_files BACKUP_DIR db* db@002d3 db@002e2 # list_files BACKUP_DIR/db@002e2 t@002e2.ibd # list_files BACKUP_DIR/db@002d3 t@002d3.ibd # run ibbackup --apply-log # remove all InnoDB files from datadir # list_files MYSQLD_DATADIR db* db1 db@002d3 db@002e2 # list_files MYSQLD_DATADIR/db1 db.opt t1.frm # list_files MYSQLD_DATADIR/db@002e2 db.opt t@002e2.frm # list_files MYSQLD_DATADIR/db@002d3 db.opt t@002d3.frm # copy back all files from BACKUP_DIR # list_files MYSQLD_DATADIR db* db1 db@002d3 db@002e2 # list_files MYSQLD_DATADIR/db1 db.opt t1.frm # list_files MYSQLD_DATADIR/db@002e2 db.opt t@002e2.frm t@002e2.ibd # list_files MYSQLD_DATADIR/db@002d3 db.opt t@002d3.frm t@002d3.ibd # # Avoid server crash, remove MYSQLD_DATADIR/db1/t1.frm # # Restart server. SELECT Schema_name FROM information_schema.schemata WHERE Schema_name LIKE 'db%'; Schema_name db1 db-3 db.2 SELECT Table_schema, Table_name FROM information_schema.tables WHERE Table_schema LIKE 'db%'; Table_schema Table_name db-3 t-3 db.2 t.2 SELECT * FROM `db1`.`t1`; ERROR 42S02: Table 'db1.t1' doesn't exist SELECT * FROM `db.2`.`t.2`; c1 2 SELECT * FROM `db-3`.`t-3`; c1 3 # # db1 is broken due to missing files, but still exists in InnoDB # data dictionary. Would crash on DROP DATABASE. So don't do that. # list_files MYSQLD_DATADIR/db1 db.opt DROP DATABASE `db.2`; DROP DATABASE `db-3`; # # Cannot clean up db1. So create new databases. CALL mtr.force_restart(); CALL mtr.add_suppression("InnoDB: Rollback of non-prepared transactions"); CALL mtr.add_suppression("InnoDB: Rolling back trx with id"); CALL mtr.add_suppression("InnoDB: Error: table");