1. 程式人生 > 資料庫 >MySQL的SQL語句事務性語句和鎖定語句(4)LOCK INSTANCEFORBACKUP 等語句

MySQL的SQL語句事務性語句和鎖定語句(4)LOCK INSTANCEFORBACKUP 等語句

LOCK INSTANCE FOR BACKUP 和 UNLOCK INSTANCE 語句

1. LOCK INSTANCE FOR BACKUP
2. 
3. UNLOCK INSTANCE

LOCK INSTANCE FOR BACKUP 獲取例項級備份鎖,該鎖允許在聯機備份期間使用 DML 語句,同時防止可能導致快照不一致的操作。

執行 LOCK INSTANCE FOR BACKUP 語句需要 BACKUP_ADMIN 許可權。在執行從早期版本到 MySQL 8.0 的就地升級時,具有 RELOAD 許可權的使用者將自動獲得 BACKUP_ADMIN 許可權。

多個會話可以同時持有一個備份鎖。

UNLOCK INSTANCE 釋放當前會話持有的備份鎖。如果會話被終止,會話持有的備份鎖也會被釋放。

LOCK INSTANCE FOR BACKUP 可防止建立、重新命名或刪除檔案。會阻止 REPAIR TABLE TRUNCATE TABLE, OPTIMIZE TABLE 和賬戶管理語句。沒有記錄在 InnoDB redo 日誌中的修改 InnoDB 檔案的操作也會被阻止。

LOCK INSTANCE FOR BACKUP 允許隻影響使用者建立的臨時表的 DDL 操作。實際上,當持有備份鎖時,可以建立、重新命名或刪除屬於使用者建立的臨時表的檔案。也允許建立二進位制日誌檔案。

LOCK INSTANCE FOR BACKUP 獲取的備份鎖獨立於事務性鎖和 FLUSH TABLES tbl_name [, tbl_name] ... WITH READ LOCK 獲得的鎖,並且允許以下語句序列:

1. LOCK INSTANCE FOR BACKUP;
2. FLUSH TABLES tbl_name [, tbl_name] ... WITH READ LOCK;
3. UNLOCK TABLES;
4. UNLOCK INSTANCE;
1. FLUSH TABLES tbl_name [, tbl_name] ... WITH READ LOCK;
2. LOCK INSTANCE FOR BACKUP;
3. UNLOCK INSTANCE;
4. UNLOCK TABLES;

lock_wait_timeout 設定定義 LOCK INSTANCE FOR BACKUP 語句在放棄之前等待獲取鎖的時間。

官方網址: