1.flush table with read lock 的認識:
flush table with read lock(簡稱: ftwrl) 有哪些問題:
例如讓dba頭大的long query,ftwrl需要等待所有的表沒有引用後關閉所有表,long query 導致ftwrl無法執行成功。這也是經常備份被hung住,有可能導致備份失敗。
2.老版本如何獲得一致性的備份:
2.1 mysqldump
早期使用mysqldump 來備份,xtrabackup 成為當前主流inoodb+myisam熱備工具。
從mysql 5.1開始: 在最後備份非事務引擎表的時候為了獲得一致性備份需要在mysql上獲得 flush table with read lock,有可能在壓力大的庫或者有事務沒有正常關閉的連線在,會導致備份無法因超時後導致備份失敗。還有如果在master 上備份會導致加ftwrl到最後這段時間會堵塞所有的dml,master這段時間變成唯讀,長短取決於非事務表的數量和大小。
percona server 從5.6.16-64.0開始優化了mysqldump備份,引入輕量級鎖,lock tables for backup 和 lock binlog for backup。mysqldump 增加引數:--lock-for-backup
2.2 xtrabackup:
version<2.2.0 :也是加ftwrl,和老版本mysqldump類似。老版本的改進:improved flush tables with read lock handling:
version>=2.2.0 引入輕量級鎖,lock tables for backup; 和 lock binlog for backup;
xtrabackup物理備份流程變化如下:
修改之前(<2.2.0 )的流程:
1.get redo lsn
2.copy 系統表空間+事務引擎表的資料檔案+後台子程序(ibackup)拷貝redo
3.flush tables with read lock
4.copy 所有 *.frm檔案,非事務引擎表(myisam、archive等)資料+索引檔案
5.get the binary log coordinates(座標/位點)
6.finalize the background copy of redo log
7.unlock tables;
修改之後(>=2.2.0 )的流程:
1.get redo lsn
2.copy 系統表空間+事務引擎表的資料檔案+後台子程序(ibackup)拷貝redo
3.lock tables for backup
4.copy 所有 *.frm檔案,非事務引擎表(myisam、archive等)資料+索引檔案
5.lock binlog for backup
6.finalize the background copy of redo log
7.unlock tables;
8.get the binary log coordinates(座標/位點)
9.unlock binlog
3.優化的目標
3.1 引入備份鎖的優勢
lock tables for backup:
作用:獲取一致性資料
a)禁止非事務引擎(非innodb)表寫入(也即dml)。
b)禁止所有表的ddl。
優點:a)不會被大查詢阻塞。
b)不會堵塞innodb表的讀取和更新,這點非常重要,對於業務表全部是並innodb的情況,則備份過程中dml完全不受損。
lock binlog for backup:
作用:獲取一致性位點。
a)禁止對binlog的位點操作(不允許dml、ddl)
優點:a)時間短,對db的影響很小。
下面是xtrabackup-2.2.4的備份主要log:
mysql 備份優化 Mysql資料庫優化備份恢復
資料庫空間清理 刪除操作會帶來一些資料碎片,正是這些碎片在占用硬碟空間 mysql的 information schema 資料庫中的tables 表記錄了mysql資料庫中每個表占用的空間 表記錄的行數,更新時間,說明等,這個表主要字段如下 table schema 資料庫名 table name...
mysql增量備份幾種 mysql的增量備份
一 啟用 binary log 修改 mysql server 的系統設定檔案 eg.etc my.cnf 在 mysqld 區塊中加上 log bin mysql bin 選項,然後重新啟動 mysql server,例如 mysqld log bin 啟用後你應該可以在 mysql 的 data...
mysql軟體進行備份 MySQL的幾種備份工具
mysql備份和恢復 注意 備份不成功的原因可能是版本不一樣,需執行命令 cp usr local mysql bin mysqldump mysqlhotcop mysqlimport usr local bin 1 mysqldump備份工具 備份資料庫下的表 mysqldump u root ...