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 操作。實際上,當持有備份鎖定時,屬於使用者建立的暫時資料表的檔案可以被建立、重新命名或移除。也允許建立二進位日誌檔案。
當執行個體正在使用 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 陳述式在放棄之前等待取得鎖定的時間量。