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 TABLE
、OPTIMIZE TABLE
以及帳戶管理語法都會被封鎖。請參閱 第 15.7.1 節,「帳戶管理語法」。修改未記錄在 InnoDB
重做日誌中的 InnoDB
檔案的操作也會被封鎖。
LOCK INSTANCE FOR BACKUP
允許只影響使用者建立的臨時資料表的 DDL 操作。實際上,當持有備份鎖定時,屬於使用者建立的臨時資料表的檔案可以被建立、重新命名或移除。也允許建立二進位日誌檔案。
當執行個體的 LOCK INSTANCE FOR BACKUP
語法生效時,無法發出 PURGE BINARY LOGS
語法,因為它會透過從伺服器移除檔案來違反備份鎖定的規則。
由 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
語法在放棄之前等待取得鎖定的時間長度。