做者:姚遠
專一於 Oracle、MySQL 數據庫多年,Oracle 10G 和 12C OCM,MySQL 5.6 ,5.7,8.0 OCP。如今鼎甲科技任顧問,爲同事和客戶提升數據庫培訓和技術支持服務。
本文來源:原創投稿
*愛可生開源社區出品,原創內容未經受權不得隨意使用,轉載請聯繫小編並註明來源。
MySQL8.x 中新增了一個輕量級的備份鎖,它容許在 online 備份的時候進行 DML 操做,同時可防止快照不一致。這個鎖禁止的操做不多,它禁止的操做包括:html
備份鎖由 lock instance for backup 和 unlock instance 語法組成。使用這些語句須要 BACKUP_ADMIN 權限。mysql
從圖裏面看長查詢對 FTWRL(flush tables with read lock) 是有影響的,整個系統會 hung 住,此時其它的數據庫查詢也不能用,包括 use database。sql
能夠看到你們都在等這個鎖釋放。而 lock instance for backup 則沒有這個問題。Oracle 本身的備份產品(MySQL Enterprise Backup 8)就用這個鎖,Percona 的 Xtrabackup 在 8 的版本也是用這個鎖。數據庫
順便提一下,Percona 本身的 MySQL 也有一種輕量級的備份鎖「LOCK TABLES FOR BACKUP」也是一種比 FTWRL 要輕量級的鎖。它不會刷新表,即存儲引擎不會強制關閉表,而且表不會從表緩存中排出。所以,LOCK TABLES FOR BACKUP 僅等待衝突的語句完成,它不會等待 SELECT 或更新 InnoDB 表來完成。緩存
參考:
https://dev.mysql.com/doc/ref...
https://www.percona.com/doc/p...