mysql 備份方式和原理二

2021-09-24 20:16:17 字數 2049 閱讀 5958

innobackupex備份過程:

1、根據命令列引數給定的ip,使用者名稱和密碼,使用perl-dbi連線到mysql中,並執行兩次版本檢查

2、讀取配置檔案,找到相應的資料和日誌檔案位置

3、start xtrabackup_log:建立xtrabackup_logfile檔案,模擬mysql instance方式,以讀寫模式開啟並讀取redo log,

檢查當前checkpoint點,從當前checkpoint點位置開始拷貝redo log,同時持續掃瞄redo log,有新產生的redo log

資料就拷貝到xtrabackup_logfile檔案中

4、copy innodb tables .ibd、.ibdata1、undo logs

5、flush no_write_to _binlog tables、flush tables with read lock;

6、copy non-innodb tables  .myd、myi、.frm、opt、misc files和innodb tables  .frm、opt、misc files

7、get binary log file position 寫到xtrabbackup_info檔案中

8、flush no_write_to_binlog engine logs  在所有事務表和非事務表備份完成,獲取全域性讀鎖,且show master status獲取binlog pos後,執行重新整理redo log buffer中的日誌到磁碟中,然後redo log copy執行緒拷貝最後的redo log日誌資料 

9、stopping log copying thread   拷貝完成後就停止copy執行緒並關閉xtrabackup_logfile檔案,然後unlock tables釋放全域性讀鎖

10、unlock tables

11、備份收尾工作:生成backup-my.cnf、xtrabackup_info等檔案,完成後退出innobackupex備份程序

innobackupex備份獲得乙個一致性備份,會使用flush tables(重新整理表快取),flush tables with read lock(加全域性讀鎖):

1、如果會話中使用lock tables 對錶加了表鎖,在該鎖未釋放前,另外的會話執行flush tables和flush tables with read lock會被阻塞,如果資料庫lock_wait_timeout引數時間太短,innobackupex會因執行flush tables with read lock獲取全域性讀鎖超時導致備份失敗退出

2、如果會話在執行ddl語句,另一會話執行flush tables和flush tables with read lock會被阻塞,如果資料lock_wait_timeout引數時間太短,innobackupex會因執行flush tables with read lock獲取全域性讀鎖超時導致備份失敗退出

3、如果會話正在執行dml大事務(不使用lock in share mode 和for update顯式枷鎖),另一會話執行flush tables 和flush tables with read lock會被阻塞,如果資料庫lock_wait_timeout引數時間太短,innobackupex會因執行flush tables with read lock獲取全域性讀鎖超時導致備份失敗退出

但是在執行備份中發現在flush no_write_to_binlog tables語句之前,會set session lock_wait_timeout=31536000,將鎖超時時間修改,獲取全域性讀鎖等待時間太長,可以使用引數--kill-long-queries-timeout對獲取flush tables with read lock全域性讀鎖超過時間閾值的查詢執行kill.

引數:--kill-long-query-type=all|select     哪些型別在指定時間之後未執行完時被kill掉

--kill-long-queries-timeout=seconds  預設0,不啟用kill掉任何查詢。否則到指定時間執行kill操作

詳細請參考taobao核心月報:

MySQL的備份方式

資料庫的備份是極其重要的事情。如果沒有備份,遇到下列情況就會抓狂 update or delete whitout where table was dropped accidentally innodb was corrupt entire datacenter loses power 從資料安全的...

初探MySQL資料備份及備份原理

根據需求的不同,資料備份的方式也不同,mysql官方給定的備份方式有三種,分別是冷備 熱備和溫備 如果以備份的資料集為劃分標準,那麼可劃分為完全備份和部分備份 如果是以備份時的介面為劃分標準,那麼可分為物理備份 邏輯備份 完全備份 增量備份和差異備份。後面兩種備份的分類方式比較容易理解,下面我們著重...

mysql備份和恢復 mysql備份和恢復

目標 備份和恢復的3種方法,掌握mysqldump命令匯出資料,source命令匯入資料 備份必要性 重要資料不丟失 資料轉移 mysqldump客戶端 作用 轉儲資料庫 搜尋資料庫進行備份 將資料轉移到另乙個sql伺服器 不一定是mysql伺服器 mysqldump h 主機名 u使用者名稱 p ...