一.概述 物理備份和恢復又分為冷備份和熱備份。與邏輯備份相比,它最大優點是備份和恢復的速度更快。因為物理備份的原理都是基於文件的cp。 1.1 冷備份 冷備份就是停掉資料庫服務。這種物理備份一般很少使用,因為很多應用是不允許長時間停機的。恢復操作大概是:首先停掉mysql服務, 在操作系統級別恢復m ...
一.概述
物理備份和恢復又分為冷備份和熱備份。與邏輯備份相比,它最大優點是備份和恢復的速度更快。因為物理備份的原理都是基於文件的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工具的主要特征,功能中講到的Drizzle、MariaDB和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.1、5.5或5.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,唯一的區別是它將文件移動到目標位置,而不是複製文件。由於此選項刪除了備份文件,因此必須謹慎使用。當沒有足夠的空閑磁碟空間來容納數據文件和它們的備份副本時,它非常有用。