国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql-物理配備-Percona xtrabackup

2024-07-24 12:31:44
字體:
來源:轉載
供稿:網友
      xtrabackup是percona公司開發的一個用于mysql物理熱備的備份工具。
 
      軟件安裝后一共有4個可執行文件:
 
     innobackupex:perl腳本,用來備份非innodb表,同時會調用xtrabackup來備份innodb表,會和mysql server進行交互。如:加讀鎖(FTWRL),獲取位點(show slave status)等。即封裝了xtrabackup
     xbcrypt:用來解密
     xbstream:類似tar,一種支持并發寫的流文件格式。和xbcrypt都在備份和解壓會用到
     xtrabackup:c/c++編譯的二進制,用來備份innodb表,和mysql server沒有交互
 
原理
 
通信方式:xtrabackup和innobackupex之間的交互和協調是通過控制文件的創建和刪除來實現的。
 
主要文件:
    xtrabackup_suspended_1
    xtrabackup_suspended_2
    xtrabackup_log_copied
 
例:看看備份時xtrabackup_suspended_2是怎么協調2個工具進程的:
    1.innobackupex在啟動xtrabackup進程后,會一直等xtrabackup備份完innodb文件,方式就是等待xtrabackup_suspended_2被創建出
    2.xtrabackup備份完innodb數據后,就在指定目錄下創建出xtrabackup_suspended_2,然后等到這個文件被innobackupex刪除,
    3.innobackupex 檢測到文件 xtrabackup_suspended_2 被創建出來后,就繼續往下走;
    4.innobackupex 在備份完非 InnoDB 表后,刪除 xtrabackup_suspended_2 這個文件,這樣就通知 xtrabackup 可以繼續了,然后等 xtrabackup_log_copied 被創建;
    5.xtrabackup 檢測到 xtrabackup_suspended_2 文件刪除后,就可以繼續往下了。
 
說明:
 
1.innobackupex 在啟動后,會先 fork 一個進程,啟動 xtrabackup進程,然后就等待 xtrabackup 備份完 ibd 數據文件;
 
2.xtrabackup 在備份 InnoDB 相關數據時,是有2種線程的,1種是 redo 拷貝線程,負責拷貝 redo 文件,1種是 ibd 拷貝線程,負責拷貝 ibd 文件;redo 拷貝線程只有一個,在 ibd 拷貝線程之前啟動,在 ibd 線程結束后結束。xtrabackup 進程開始執行后,先啟動 redo 拷貝線程,從最新的 checkpoint 點開始順序拷貝 redo 日志;然后再啟動 ibd 數據拷貝線程,在 xtrabackup 拷貝 ibd 過程中,innobackupex 進程一直處于等待狀態(等待文件被創建)。
 
3.xtrabackup 拷貝完成idb后,通知 innobackupex(通過創建文件),同時自己進入等待(redo 線程仍然繼續拷貝);
 
4.innobackupex 收到 xtrabackup 通知后,執行FLUSH TABLES WITH READ LOCK (FTWRL),取得一致性位點,然后開始備份非 InnoDB 文件(包括 frm、MYD、MYI、CSV、opt、par等)。拷貝非 InnoDB 文件過程中,因為數據庫處于全局只讀狀態,如果在業務的主庫備份的話,要特別小心,非 InnoDB 表(主要是MyISAM)比較多的話整庫只讀時間就會比較長,這個影響一定要評估到。
 
5.當 innobackupex 拷貝完所有非 InnoDB 表文件后,通知 xtrabackup(通過刪文件) ,同時自己進入等待(等待另一個文件被創建);
 
6.xtrabackup 收到 innobackupex 備份完非 InnoDB 通知后,就停止 redo 拷貝線程,然后通知 innobackupex redo log 拷貝完成(通過創建文件);
 
7.innobackupex 收到 redo 備份完成通知后,就開始解鎖,執行 UNLOCK TABLES;
 
8.最后 innobackupex 和 xtrabackup 進程各自完成收尾工作,如資源的釋放、寫備份元數據信息等,innobackupex 等待 xtrabackup 子進程結束后退出。
 
在備份進程中都是直接通過操作系統讀取數據文件的,只在執行SQL命令時和數據庫有交互,基本不會影響數據庫的運行,在備份非innodb時會有一段時間只讀,對備份innodb表時完全沒有影響。
 
備份innodb文件和非innodb都是通過拷貝文件,但實現的方式不一樣,innodb是以page粒度(xtrabackup),在讀取每個page時會檢驗checksum值,保證數據塊是一致的;非innodb是cp或者tar(innobackupex),由于對文件做了FTWRL,磁盤上的文件也是完整的,備份的數據也是完整的。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新余市| 洮南市| 玛曲县| 铜鼓县| 进贤县| 泽库县| 元阳县| 醴陵市| 彭州市| 申扎县| 万盛区| 乌海市| 南丰县| 夏津县| 江孜县| 澳门| 万盛区| 宜都市| 乐亭县| 永修县| 安溪县| 溧阳市| 枣强县| 临武县| 江陵县| 金坛市| 景洪市| 汕头市| 嘉善县| 安岳县| 景东| 太湖县| 神木县| 镇江市| 会理县| 邛崃市| 宜黄县| 绥阳县| 盘山县| 武冈市| 霸州市|