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