使用 XtraBackup 實用程序創建 MySQL 備份

Percona XtraBackup 是一個用於熱資料庫備份的實用程序 MySQL的.

建立資料備份時,不會鎖定任何表,您的系統將繼續運行,不受任何限制。

超備份2.4 可以建立表格的備份副本 InnoDB的數據庫 и 我的ISAM 在伺服器上 MySQL 5.11、5.5、5.6 和 5.7,以及在伺服器上 佩爾科納 為 MySQL的 с 數據庫.

跟...共事 MySQL 8.x 應該使用版本 XtraBackup 8.x。 本文只講 超備份 2.4。

主要優勢 超備份 此實用程式既適合建立高負載伺服器的備份,也適合交易數量較少的系統。

如果 MySQL 資料庫的總大小很大(數十 GB),則標準實用程序 轉儲 不允許您快速建立備份副本,且恢復轉儲將花費大量時間。

安裝

安裝 超備份 從儲存庫 易於 佩爾科納。

依序執行以下命令:

wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb

sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb

sudo apt-get update 

sudo apt-get install percona-xtrabackup-24

2。 安裝完成後,執行命令 xtrabackup -v。 因此,確保該實用程式在伺服器上正常運作非常重要。 結果,螢幕上會顯示類似這樣的內容:

xtrabackup:辨識的伺服器參數: - datadir=/var/lib/mysql - tmpdir=/tmp - server-id=1 - logbin=/var/log/mysql/mysql-bin.log - innodbbufferpoolsize=16384M - innodbfilepertable=1 - innodbflushmethod=Odirect — innodbflushlogattrxcommit=0xtrabackup 版本 2.4.20 基於 MySQL 伺服器 5.7.26 Linux (x8664)(修訂版 ID:c8b4056)

使用 XtraBackup 實用程序創建 MySQL 備份

存取權、權限和特權 

XtraBackup 應該能夠:

  • 連接到您的 MySQL 伺服器。

  • 擁有目錄的存取權限 數據目錄

  • 建立備份副本時,對指定參數有寫入權限 目標目錄 目錄。

什麼是數據目錄?

數據目錄 是資料庫伺服器所在的目錄 MySQL的 儲存資料。 所有資料庫、所有表格都在那裡。 在大多數 Linux 發行版上,預設目錄是 /var/lib/mysql.

target-dir 目錄是什麼?

目標目錄 - 這是保存備份的目錄。

資料庫使用者需要對要備份的表和資料庫具有以下存取權限:

  • 重新載入並鎖定表

  • 複製客戶端

  • 建立表空間

  • 步驟

  • SUPER

  • 創建

  • INSERT

  • 選擇

組態 

組態 超備份 使用與標準 MySQL 選項行為相同的選項完成。

這是什麼意思?

配置參數可以在命令列或 DBMS 設定檔中指定,例如 /etc/my.cnf中.

XtraBackup 實用程式在啟動後讀取分區 的[mysqld] и [額外備份] 來自 MySQL 設定檔。 這樣做是為了使實用程式可以使用 DBMS 的設置,而無需在每次備份期間手動指定參數。

例如,值 數據目錄 和一些參數 InnoDB的 我們從您的 DBMS 的配置中取得 XtraBackup。

如果要讓 XtraBackup 正常運作,您想要覆寫該部分中的參數 的[mysqld],然後只需在設定檔的 部分中指定它們 [額外備份]。 由於稍後會閱讀它們,因此它們的優先順序會更高。

您不必新增任何參數 我的.cnf。 所有必需的參數都可以在命令列上指定。 通常是唯一可以方便地放置在該部分中的東西 [額外備份] 您的 我的.cnf 是一個參數 目標目錄,預設指定放置備份的目錄。 但這是可選的。

指定帶有備份副本的目錄路徑的範例 我的.cnf:

[xtrabackup]
target_dir = /data/backups/mysql/

備份腳本

您可以使用以下腳本來建立備份:

#!/bin/bash

# Удаляем данные в каталоге бекапа
rm -rf /mysql/backup

# Cоздаём бекап
xtrabackup --user=xtrabackup 
 --password=xxxx_SECRET_xxxx 
 --backup 
 --target-dir=/mysql/backup

# Выполняем подготовку бекапа для развёртывания
xtrabackup --prepare --target-dir=/mysql/backup

# Создаём архив
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-"$(date +%F-%H:%M:%S)".gz /mysql/backup

腳本執行期間會發生什麼?

首先,我們清除(刪除)保存備份副本的目錄:

rm -rf /mysql/backup.

然後,使用該實用程式 超備份 建立備份副本並將其保存在 /mysql/備份/:

xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backup

之前我們在MySQL中創建了一個用戶 xtrabackup 具有所需的權限。 使用參數 target-dir 我們指定應保存備份的目錄。

重要的一點!

注意腳本行:

xtrabackup --prepare --target-dir=/mysql/backup

目錄數據 /mysql/備份 直到煮熟後才一致。 

事實上,複製文件時可能會發生變更。 手術 xtrabackup --prepare --target-dir=/mysql/backup 使備份資料隨著時間的推移完全一致。

您可以在任何機器上執行資料準備操作。 無需在來源 DBMS 所在的伺服器上執行此操作。 您可以將備份複製到目標伺服器並在那裡準備。

我們做的最後一件事是建立一個存檔,在其中放置備份:

tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date % F% H% M% S)».gz /mysql/backup

恢復備份 

在將備份還原到目標伺服器之前,資料必須經過準備階段。 請參閱上文以了解如何執行此操作。

資料恢復過程非常簡單。 您需要從存檔中提取備份並替換其中的數據 數據目錄.

如何替換datadir中的資料?

讓我們考慮兩種選擇。

選項1

使用該實用程式 超備份。 您需要指定一個選項 --複製回

下面的命令將備份傳輸到 數據目錄 目標伺服器:

xtrabackup --copy-back --target-dir=/mysql/backup

選項2

您可以以不同的方式進行操作,無需實用程序 超備份.

您所需要做的就是將備份複製到 數據目錄。 你可以這樣做 cp 或 rsync的.

重要的是要了解恢復備份的過程歸結為僅替換目錄的內容 數據目錄.

在開始在目標伺服器上恢復備份之前,您必須:

  • 停止 MySQL 伺服器。

  • 清除資料夾 數據目錄 或將其內容移動到另一個位置。 目錄 數據目錄 必須為空。

完成資料傳輸後 數據目錄 MySQL伺服器可以啟動。

使用的材料

官方文檔 佩爾科納 超備份.

來源: www.habr.com

添加評論