LOCK INSTANCE FOR BACKUP
UNLOCK INSTANCE
LOCK INSTANCE FOR BACKUP
获取实例级别的 备份锁,允许在线备份期间进行 DML 操作,同时阻止可能导致不一致快照的操作。
执行 LOCK INSTANCE FOR BACKUP
语句需要 BACKUP_ADMIN
权限。当从早期版本进行就地升级到 MySQL 8.4 时,会自动授予具有 RELOAD
权限的用户 BACKUP_ADMIN
权限。
多个会话可以同时持有备份锁。
UNLOCK INSTANCE
释放当前会话持有的备份锁。如果会话终止,会话持有的备份锁也会被释放。
LOCK INSTANCE FOR BACKUP
阻止创建、重命名或删除文件。 REPAIR TABLE
TRUNCATE TABLE
、OPTIMIZE 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
语句在放弃之前等待获取锁的时间量。