Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  LOCK INSTANCE FOR BACKUP and UNLOCK INSTANCE Statements

15.3.5 锁定实例以进行备份和解锁实例语句

LOCK INSTANCE FOR BACKUP

UNLOCK INSTANCE

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

执行LOCK INSTANCE FOR BACKUP语句需要BACKUP_ADMIN特权。从 MySQL 8.4 版本的 in-place 升级开始,拥有RELOAD特权的用户将自动授予BACKUP_ADMIN特权。

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

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

LOCK INSTANCE FOR BACKUP 防止文件被创建、重命名或删除。REPAIR TABLETRUNCATE TABLEOPTIMIZE TABLE和账户管理语句被阻塞。请参阅第15.7.1节,“账户管理语句”。修改InnoDB文件但未记录在InnoDBredo日志中的操作也被阻塞。

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

PURGE BINARY LOGS 在实例上持有LOCK INSTANCE FOR BACKUP语句时不能被issued,因为它违反了备份锁定的规则,删除了服务器上的文件。

通过 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 语句等待获取锁的时间,直到放弃。