Documentation Home
MySQL 8.0 参考手册  / 第 13 章 SQL 语句  / 13.3 事务和锁定语句  /  13.3.5 LOCK INSTANCE FOR BACKUP 和 UNLOCK INSTANCE 语句

13.3.5 LOCK INSTANCE FOR BACKUP 和 UNLOCK INSTANCE 语句

LOCK INSTANCE FOR BACKUP

UNLOCK INSTANCE

LOCK INSTANCE FOR BACKUP获取实例级备份锁,允许在线备份期间的 DML,同时防止可能导致快照不一致的操作。

执行该LOCK INSTANCE FOR BACKUP 语句需要BACKUP_ADMIN 特权。当从早期版本执行到 MySQL 8.0 的就地升级时, 该BACKUP_ADMIN 权限会自动授予具有权限的用户 。RELOAD

多个会话可以同时持有备份锁。

UNLOCK INSTANCE释放当前会话持有的备份锁。如果会话终止,会话持有的备份锁也会被释放。

LOCK INSTANCE FOR BACKUP防止文件被创建、重命名或删除。, , 和帐户管理语句被阻止。参见 第 13.7.1 节,“账户管理声明”。修改未记录在重做日志中的文件的操作也会被阻止。 REPAIR TABLE TRUNCATE TABLEOPTIMIZE TABLEInnoDBInnoDB

LOCK INSTANCE FOR BACKUP允许仅影响用户创建的临时表的 DDL 操作。实际上,属于用户创建的临时表的文件可以在持有备份锁时创建、重命名或删除。还允许创建二进制日志文件。

PURGE BINARY LOGS当语句对实例有效时不应发出LOCK INSTANCE FOR BACKUP,因为它通过从服务器中删除文件违反了备份锁的规则。从 MySQL 8.0.28 开始,这是不允许的。

由 获取的备份锁LOCK INSTANCE FOR BACKUP独立于事务锁和由 获取的锁,并且允许以下语句序列: FLUSH TABLES tbl_name [, tbl_name] ... WITH READ LOCK

LOCK INSTANCE FOR BACKUP;
FLUSH TABLES tbl_name [, tbl_name] ... WITH READ LOCK;
UNLOCK TABLES;
UNLOCK INSTANCE;
FLUSH TABLES tbl_name [, tbl_name] ... WITH READ LOCK;
LOCK INSTANCE FOR BACKUP;
UNLOCK INSTANCE;
UNLOCK TABLES;

lock_wait_timeout设置定义LOCK INSTANCE FOR BACKUP语句在放弃之前等待获取锁的时间量。