一、Percona-XtraBackup介紹

2021-02-25 拙人筆談

本章節摘選自Percona官網。

Percona XtraBackup is an open-source hot backup utility for MySQL - based servers that doesn’t lock your database during the backup.

Whether it is a 24x7 highly loaded server or a low-transaction-volume environment, Percona XtraBackup is designed to make backups a seamless procedure without disrupting the performance of the server in a production environment.

Percona XtraBackup can back up data from InnoDB, XtraDB, MyISAM, and MyRocks tables on MySQL 8.0 servers as well as Percona Server for MySQL with XtraDB, Percona Server for MySQL 8.0, and Percona XtraDB Cluster 8.0.

Percona XtraBackup是基於MySQL伺服器的開源熱備份程序,在備份過程中不會鎖定資料庫。

無論是24x7高負載伺服器還是低事務量環境,Percona XtraBackup都能在不影響生產環境伺服器性能的前提下完成備份過程。

Percona XtraBackup可以備份InnoDB,XtraDB, MyISAM等引擎的數據,並且支持備份MyRocks tables類型的數據。

注意:版本8.0.6後才添加了對MyRocks存儲引擎的支持,Percona XtraBackup 8.0還不支持TokuDB存儲引擎。

Percona XtraBackup 8.0 does not support making backups of databases created in versions prior to 8.0 of MySQL, Percona Server for MySQL or Percona XtraDB Cluster. As the changes that MySQL 8.0 introduced in data dictionaries, redo log and undo log are incompatible with previous versions, it is currently impossible for Percona XtraBackup 8.0 to also support versions prior to 8.0.

Percona XtraBackup 8.0 不支持 8.0之前的版本的MySQL 、Percona Server for MySQL或 Percona XtraDB Cluster。

MySQL 8.0在redo日誌和undo日誌中引入的更改與以前的版本不兼容,因此Percona XtraBackup 8.0目前不支持8.0之前的版本。


本文實驗環境MySQL版本為5.7,根據兼容性提示,備份工具我們選用Percona XtraBackup* 2.4。官網文檔地址


Percona XtraBackup2.4特性

Percona XtraBackup is the world’s only open-source, free MySQL hot backup software that performs non-blocking backups for InnoDB and XtraDB databases. With Percona XtraBackup, you can achieve the following benefits:

Backups that complete quickly and reliably

Uninterrupted transaction processing during backups

Savings on disk space and network bandwidth

Automatic backup verification

Higher uptime due to faster restore time

Percona XtraBackup是一款唯一的開源的、免費MySQL熱備軟體,能夠InnoDB和XtraDB 資料庫完成非阻塞備份。

使用Percona XtraBackup,您可以獲得以下好處:

快速可靠地完成備份

備份期間不間斷的事務處理

節省磁碟空間和網絡帶寬

自動備份驗證

更快的恢復時間,提升正常運行時間

Percona XtraBackup提供以下功能:

創建InnoDB熱備份而不會暫停資料庫

進行MySQL的增量備份

將壓縮的MySQL備份流式傳輸到另一臺伺服器

在線在MySQL伺服器之間移動表

輕鬆創建新的MySQL複製副本

備份MySQL而不增加伺服器負載


Percona XtraBackup備份原理

Percona XtraBackup基於InnoDB的故障恢復(crash-recovery )功能。

它會複製InnoDB數據文件,從而導致數據內部不一致;但隨後它將對文件執行故障恢復,使其再次成為一致的可用資料庫。

因為InnoDB維護redo日誌,也稱為事務日誌。它包含對InnoDB數據的每次更改的記錄。

當InnoDB 啟動時,它將檢查並執行數據文件和事務日誌。

將已提交的事務日誌條目應用於數據文件,並對已修改數據但未提交的所有事務執行撤消(undo)操作。


Percona XtraBackup的工作方式是在啟動時記住事務日誌序列號(LSN),然後複製數據文件。

如果文件正在更改,則它們會在不同的時間點反映資料庫的狀態。

同時,Percona XtraBackup運行一個後臺進程監視事務日誌文件,並從中複製更改的數據。

如果伺服器提供了備份鎖(如:Percona Server for MySQL 5.6+)的特性,Percona XtraBackup將使用備份鎖(Percona Server for MySQL 5.6+中提供了此功能)替代FLUSH TABLES WITH READ LOCK(FTWRL全局讀鎖)。

Percona XtraBackup使用備份鎖自動複製非InnoDB數據,以避免阻止修改InnoDB表的DML(數據操縱語言)查詢。

當伺服器支持備份鎖時,xtrabackup將首先複製InnoDB數據,運行 LOCK TABLES FOR BACKUP(備份鎖)並複製MyISAM表和文件。

完成上一步的此操作後,然後進行InnoDB文件備份(.frm,.MRG,.MYD,.MYI,.TRG,.TRN, .ARM,.ARZ,.CSM,.CSV,.par和 .opt等格式文件)。

然後xtrabackup將使用LOCK BINLOG FOR BACKUP(binlog-lock的共享鎖)阻止可能發生變化的二進位日誌位置(或者通過SHOW MASTER/SLAVE STATUS獲取Exec_Master_Log_Pos操作 或者Exec_Gtid_Set操作)。

然後,xtrabackup將完成REDO日誌文件的複製,並獲取二進位日誌坐標。

完成上述操作後,xtrabackup`將解鎖二進位日誌和表。

Exec_Master_Log_Pos記錄的是SQL thread執行到master binlog的文件和位置

GTID即全局事務ID

最後,通過STDERR(標準輸出)將二進位日誌位置進行輸出,如果一切正常xtrabackup 將退出並返回0。


Percona XtraBackup增量備份原理

xtrabackup工具支持增量備份,可以在每個完整備份之間執行許多增量備份,

可以選擇按需要配置備份間隔,例如每周一次完整備份和每天增量備份,或者每天完整備份和每小時增量備份。

增量備份的原理是基於InnoDB頁面的日誌序列號或LSN(事務日誌序列號)。

LSN是整個資料庫系統的版本號。每個頁面的LSN都包含了最近的更改時間。

增量備份複製相較於先前的增量或完全備份的LSN之後更新的每個頁面。

有兩種算法用於查找要複製的此類頁面集。

第一個通過讀取所有數據頁直接檢查LSN頁,該方式可用於所有伺服器類型和版本。

Percona Server for MySQL提供的第二個方式,通過啟用已更改的頁面跟蹤功能,在更改頁面時記錄下來。然後將這些信息寫在一個位圖文件中。

xtrabackup使用位圖文件來讀取增量備份所需的數據頁。

如果xtrabackup找到位圖文件,則默認情況下啟用後一種算法。

即使位圖數據可用,也可以通過變量(xtrabackup --incremental-force-scan)指定掃描所有頁面。


Percona XtraBackup恢復原理

xtrabackup可以通過使用xtrabackup --copy-back或xtrabackup --move-back來完成備份恢復工作。

xtrabackup將從my.cnf讀取datadir, innodb_data_home_dir,innodb_data_file_path, innodb_log_group_home_dir變量並檢查目錄是否存在。

首先複製的MyISAM表,索引等文件,接下來再複製InnoDB的表和索引,最後是日誌文件。

在複製文件時,它將保留文件的屬性,因為它們由創建備份的用戶擁有,所以可能需要在啟動資料庫之前將文件的所有權更改mysql,。

使用xtrabackup --move-back選項還原備份,類似於xtrabackup --copy-back, 唯一的區別在於,它不是複製文件,而是將文件移動到目標位置。

由於xtrabackup --move-back將刪除備份文件,因此必須謹慎使用。

在沒有足夠的可用磁碟空間來容納數據文件及其備份副本的情況下,此選項很有用。

相關焦點

  • Percona XtraBackup 8.0.26使用說明
    為了創建percona_schema.xtrbackup_history表9)Alter權限。為了更新percona_schema.xtrbackup_history表10)Insert權限。為了將歷史記錄插入到percona_schema.xtrbackup_history表3.
  • xtrabackup 備份原理
    xtrabackup。安裝 目前最新版是 percona-xtrabackup-24-2.4.21,直接下載 rpm 包安裝即可。wget https://mirrors.cloud.tencent.com/percona/tools/yum/release/7Server/RPMS/x86_64/percona-xtrabackup-24-2.4.21-1.el7.x86_64.rpmyum install percona-xtrabackup-24-2.4.21
  • Mysql 物理備份Xtrabackup
    後來朋友給了RPM版,我又從網上找到RPM下載地址wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-80.0.4/binary/redhat/7/x86_64/percona-xtrabackup-80-8.0.4-1.el7.x86_64.rpmyum
  • Xtrabackup工作原理
    Percona Xtrabackup是一款針對MySQL資料庫的開源、免費的熱備工具,支持增量備份,壓縮備份和流備份等,功能十分強大。
  • xtrabackup 實現MySQL資料庫備份
    這時就 需要一種好用又高效的工具,xtrabackup就是其中一款,號稱免費版的InnoDB HotBackup。Xtrabackup實現是 物理備份,而且是物理熱備 目前主流的有兩個工具可以實現物理熱備:ibbackup和xtrabackup;ibbackup是商 業軟體,需要授權,非常昂貴。而xtrabackup功能比ibbackup還要強大,但卻是開源的。
  • 故障分析 | xtrabackup 吃掉了MySQL的 binlog 文件名?
    有興趣的同學可以參考社區中的《一問一實驗》專欄的第9問、第12問和第32問,以及文末的參考文檔。(2) 使用 xtrabackup 版本 from percona-xtrabackup-8.0.6 to percona-xtrabackup-8.0.23-16 時需要注意 binlog 文件名如果配置了絕對路徑,發生文章中這種報錯提前預知,官方已於https://github.com/percona/percona-xtrabackup/blob
  • MySQL - Xtrabackup簡介
    Xtrabackup是由percona開源的免費資料庫熱備份軟體,它能對InnoDB資料庫和XtraDB存儲引擎的資料庫非阻塞地備份(對於MyISAM的備份同樣需要加表鎖);mysqldump備份方式是採用的邏輯備份,其最大的缺陷是備份和恢復速度較慢,如果資料庫大於50G,mysqldump備份就不太適合
  • MySQL數據備份與恢復(二) -- xtrabackup工具
    上一篇介紹了邏輯備份工具mysqldump,本文將通過應用更為廣泛的物理備份工具xtrabackup來演示數據備份及恢復的第二篇內容(本文篇幅較長
  • xtrabackup 原理及實施
    Xtrabackup 必須持續的做這個操作,是因為事務日誌是會輪轉重複的寫入,並且事務日誌可以被重用。所以 xtrabackup 自啟動開始,就不停的將事務日誌中每個數據文件的修改都記錄下來。上面就是 xtrabackup 的備份過程。接下來是準備(prepare)過程。
  • 問題定位 | Peronca Xtrabackup 8.0近日踩坑總結 - xtrabackup 2.4和8.0區別
    前言近期在給 radondb/xenon 適配 percona xtrabackup 8.0時,遇到了一些問題,經過多日調研、嘗試終於解決
  • 【MySQL在線熱備神器】MySQL · 物理備份 · Percona XtraBackup 備份原理
    簡單來說,innobackupex 在 xtrabackup 之上做了一層封裝。一般情況下,我們是希望能備份 MyISAM 表的,雖然我們可能自己不用 MyISAM 表,但是 mysql 庫下的系統表是 MyISAM 的,因此備份基本都通過 innobackupex 命令進行;另外一個原因是我們可能需要保存位點信息。
  • 組複製常規操作-使用xtrabackup備份恢復或添加組成員 | 全方位認識MySQL8.0 Group Replication
    4.6.
  • 如何讓xtrabackup恢復速度提升20倍?
    簡介  Xtrabackup是由percona開源的免費資料庫熱備份軟體,它能對InnoDB資料庫和XtraDB存儲引擎資料庫進行非阻塞的備份,
  • MySQL中xtrabackup備份恢復全攻略(r12筆記第11天)
    # xtrabackup --versionxtrabackup version 1.6.5 for Percona Server 5.1.59innobackupex --versionInnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oyand
  • Mac-XtraFinder Finder增強工具
    喜歡的朋友可以點下關注,⬆️「老白的MacOs」,謝謝支持,感覺不錯的話可以介紹給身邊用mac的朋友,給老白同志一點動力;如有侵權