1. 程式人生 > >mysql 開發進階篇系列 44 物理備份與恢復( 熱備份xtrabackup 工具介紹)

mysql 開發進階篇系列 44 物理備份與恢復( 熱備份xtrabackup 工具介紹)

一.概述

  物理備份和恢復又分為冷備份和熱備份。與邏輯備份相比,它最大優點是備份和恢復的速度更快。因為物理備份的原理都是基於檔案的cp。

  1.1 冷備份    冷備份就是停掉資料庫服務。這種物理備份一般很少使用,因為很多應用是不允許長時間停機的。恢復操作大概是:首先停掉mysql服務, 在作業系統級別恢復mysql的資料檔案,然後重啟mysql服務, 使用mysqlbinlog工具恢復自備份以來的所有binlog。估計這種方法跟sql server的分離附加庫類似。由於會停機,冷備份就不在深入。

  1.2 熱備份    對於熱備份有很多方法,本質其實就是將要備份的表加讀鎖,然後再cp資料檔案到備份目錄。對於熱備份有很多第三方工具。使用最為廣泛的好像是 xtrabackup 工具,該工具是用來備份mysql資料庫的開源工具。    

點選檢視xtrabackup 使用者指南

二. precona xtrabackup 介紹

  下面翻譯來自官方文件 2.4版本,有些地方翻譯後不是很懂,在後面繼續學習xtrabackup中,一邊實戰一邊理解,在回頭把該介紹文件修正。

  2.1 xtrabackup介紹

    Percona XtraBackup是一個開源的MySQL伺服器熱備份工具,在備份期間不會鎖定資料庫。是一個編譯好的C二進位制檔案,提供了用MyISAM、InnoDB和XtraDB表備份整個MySQL資料庫例項的功能。現是最新版本是2.4,目前只支援在linux系統上。

    它可以在MySQL 5.1、5.5、5.6和5.7伺服器上備份InnoDB、XtraDB和MyISAM表的資料,也可以用XtraDB備份Percona伺服器的資料。

    無論是24x7高負載的伺服器還是低事務量的環境,Percona XtraBackup的設計目的是使備份成為一個無縫的過程,而不會破壞生產環境中伺服器的效能。

   2.2 支援的備份型別

    (1)增量備份

    (2)部分備份

    (3)緊湊的備份

  2.3 高階特徵     (1)使用xtrabackup指令碼備份

     (2)統計分析表

     (3)處理二進位制日誌

     (4)恢復單個表

     (5)LRU轉儲備份

  2.4  XtraBackup備份功能   

    下面介紹下XtraBackup工具的主要特徵,功能中講到的DrizzleMariaDB

Percona Server等是MySQL

Supported MySQL flavors

支援mysql分支型別

MySQL, PerconaServer, MariaDB, Percona XtraDB Cluster, MariaDB Galera Cluster

Supported operating systems

支援的作業系統: linux

Non-blocking InnoDB backups

非阻塞InnoDB備份。在複製非InnoDB資料時,InnoDB表仍然是鎖定的

Blocking MyISAM backups

阻塞MyISAM備份

Incremental backups

增量備份

Full compressed backups

完全壓縮備份

Incremental compressed backups

增量壓縮備份

Fast incremental backups

快速增量備份。

Percona伺服器支援快速增量備份,支援XtraDB更改頁面跟蹤

Incremental backups with archived logs feature in Percona Server

Percona伺服器裡帶有歸檔日誌特性的增量備份

Incremental backups with REDO log only

僅使用重做日誌的增量備份

Backup locks

備份鎖是Percona Server 5.6+中具有讀鎖的表的輕量級替代方法。Percona XtraBackup自動使用它們複製非InnoDB資料,以避免阻塞修改InnoDB表的DML查詢。

Encrypted backups

加密備份

Streaming backups

流備份

Parallel local backups

並行的本地備份

Parallel compression

並行壓縮

Parallel encryption

並行加密

Parallel apply-log

並行apply-log

Parallel copy-back

並行copy-back

Partial backups

部分備份

Partial backups of individual partitions

部分的備份分割槽

Point-in-time recovery support

時間點恢復支援

Safe slave backups

安全的從庫備份

Compact backups

緊湊備份。Percona XtraBackup在準備緊湊備份時跳過二級索引頁並重新建立它們。MySQL企業備份跳過未使用的頁面並重新插入到準備階段。

Buffer pool state backups

緩衝池狀態備份

Individual tables export

表匯出

Individual partitions export

分割槽匯出

Restoring tables to a different server

將表還原到另一臺伺服器。使用Percona XtraBackup匯出的表可以匯入Percona Server 5.15.55.6+MySQL 5.6+。使用MySQL企業備份建立的可傳輸表空間只能匯入Percona Server 5.6+MySQL 5.6+MariaDB 10.0+

Data & index file statistics

資料和索引檔案統計

InnoDB secondary indexes defragmentation

InnoDB二級索引整理

support to minimize lock time

支援最小化鎖的時間

Backup history table

備份歷史表

External graphical user interfaces to backup/recovery

用於備份/恢復的外部圖形使用者介面

  2.5 備份工作原理    Percona XtraBackup基於InnoDB的崩潰恢復功能, 它會複製InnoDB資料檔案,這會導致內部不一致的資料, 然後,它對檔案執行崩潰恢復,使它們再次成為一致的、可用的資料庫。

    它的工作是因為InnoDB維護一個重做日誌,也稱為事務日誌。這包含對InnoDB資料的每次更改的記錄。當InnoDB啟動時,它檢查資料檔案和事務日誌,並執行兩個步驟。它將提交的事務日誌條目應用於資料檔案,並對任何修改了資料但沒有提交的事務執行撤銷操作。

    Percona XtraBackup的工作原理是在日誌序列號(LSN)啟動時記住它,然後複製資料檔案。這樣做需要一些時間,所以如果檔案正在更改,那麼它們就會在不同的時間點反映資料庫的狀態。同時,Percona XtraBackup執行一個後臺程序來監視事務日誌檔案,並從中複製更改。Percona XtraBackup需要不斷地這樣做,因為事務日誌是以迴圈方式編寫的,並且可以在一段時間後重用。自從Percona XtraBackup開始執行以來,對資料檔案的每次更改都需要事務日誌記錄。

    Percona XtraBackup將使用備份鎖作為具有讀鎖的表的輕量級替代。這個特性在Percona Server 5.6+中可用。Percona XtraBackup自動使用此功能複製非InnoDB資料,以避免阻塞修改InnoDB表的DML查詢。當伺服器支援備份鎖時,xtrabackup首先複製InnoDB資料,執行鎖表進行備份,然後複製MyISAM表和.frm檔案。一旦完成,檔案的備份將開始。它將備份.frm, . mrg, . myd, . myi, . trg, . trn, . arm, . arz, . csm, . csv, .par和.opt檔案。

    在此之後,xtrabackup將使用LOCK BINLOG進行備份,以阻止顯示主/從狀態所報告的所有可能更改二進位制日誌位置或Exec_Master_Log_Pos或Exec_Gtid_Set(即與複製從庫上的當前SQL執行緒狀態對應的主庫二進位制日誌座標)的操作。然後xtrabackup將完成重做日誌檔案的複製,並獲取二進位制日誌座標。完成此操作後,xtrabackup將解鎖二進位制日誌和表。

    最後,將二進位制日誌位置列印到STDERR,如果一切正常,xtrabackup將退出返回0

    注意,xtrabackup的STDERR沒有寫在任何檔案中。您必須將其重定向到一個檔案,例如,xtrabackup 選項2> backupout.log。

    它還將在備份目錄中建立以下檔案:

     在準備階段,Percona XtraBackup使用複製的事務日誌檔案對複製的資料檔案執行崩潰恢復。完成之後,資料庫就可以恢復和使用了。

     備份後的MyISAM表和InnoDB表最終會保持一致,因為在準備(恢復)過程之後,InnoDB的資料會向前滾到備份完成的地方,而不是回滾到備份開始的地方。這個時間點與具有讀鎖的flush tables表匹配,因此MyISAM資料和準備好的InnoDB資料是同步的。

     xtrabackup和innobackupex工具都提供了前面解釋中沒有提到的許多特性。每個工具的功能在手冊中有更詳細的說明。簡單地說,這些工具允許您使用各種組合的資料檔案複製、日誌檔案複製和對資料應用日誌來執行流備份和增量備份等操作。

  2.6 恢復還原工作

    要使用xtrabackup恢復備份,您可以使用xtrabackup—copy-back或xtrabackup—move選項。

    Xtrabackup將從my.cnf中讀取datadir、innodb_data_home_dir、innodb_data_file_path、innodb_log_group_home_dir變數,並檢查目錄是否存在。

    它將首先複製MyISAM表、索引等(.frm、. mrg、. myd、. myi、. trg、. trn、. arm、. arz、. csm、. csv、par和.opt檔案),然後複製InnoDB表和索引,最後複製日誌檔案。它將保留檔案的屬性,當複製它們時,您可能不得不在啟動資料庫伺服器之前,將檔案的所有權更改為mysql使用者,因為它們將屬於建立備份的使用者。

    可以使用xtrabackup—move-back選項恢復備份。這個選項類似於xtrabackup——copy-back,唯一的區別是它將檔案移動到目標位置,而不是複製檔案。由於此選項刪除了備份檔案,因此必須謹慎使用。當沒有足夠的空閒磁碟空間來容納資料檔案和它們的備份副本時,它非常有用。