国产探花免费观看_亚洲丰满少妇自慰呻吟_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,磁盤上的文件也是完整的,備份的數據也是完整的。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 拜城县| 台安县| 东莞市| 师宗县| 龙江县| 夏河县| 陆川县| 德清县| 沾益县| 宁强县| 长丰县| 张家川| 交城县| 大化| 札达县| 湾仔区| 泰安市| 阜平县| 阿瓦提县| 永善县| 奉新县| 秭归县| 博客| 洮南市| 邻水| 屏东县| 进贤县| 临高县| 沾益县| 北海市| 邵阳县| 西安市| 南投县| 清镇市| 郁南县| 灵丘县| 高密市| 蒲江县| 永宁县| 大安市| 新平|