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
陳述式在放棄之前等待取得鎖定的時間量。