文档主页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  LOCK INSTANCE FOR BACKUP 和 UNLOCK INSTANCE 语句

15.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 9.0 时,将自动授予具有 RELOAD 权限的用户 BACKUP_ADMIN 权限。

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

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

LOCK INSTANCE FOR BACKUP 阻止创建、重命名或删除文件。 REPAIR TABLE TRUNCATE TABLEOPTIMIZE TABLE 以及帐户管理语句都会被阻塞。参见 第 15.7.1 节,“帐户管理语句”。修改 InnoDB 文件但未在 InnoDB 重做日志中记录的操作也会被阻塞。

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

PURGE BINARY LOGS 在实例上执行 LOCK INSTANCE FOR BACKUP 语句时无法发出,因为它违反了备份锁的规则,即从服务器中删除文件。

通过 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 语句在放弃之前等待获取锁的时间量。