Introduction of MySQL 5.5FLUSH TABLES WITH READ LOCK statement
The FLUSH TABLES WITH READ LOCK statement closes all open tables and adds a global read-only lock to all database tables.
This is very convenient for backup. If you have a file system like Veritas or ZFS, you can take a snapshot of the backup.
You can also directly copy the table files to be backed up to the backup directory
Cp-r / data_dir/ / back_dir
Use the UNLOCK TABLES statement to release the lock.
-- example one
-- session ①
Mysql > FLUSH TABLES WITH READ LOCK
Query OK, 0 rows affected (0.04 sec)
-- session ②, DML operation will hang
Mysql > insert into test values.
-- session ①
Mysql > UNLOCK TABLES
Query OK, 0 rows affected (0.01 sec)
-- session ②, DML operation succeeded
Mysql > insert into test values.
Query OK, 1 row affected (18 min 44.54 sec)