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 伺服器。
-
擁有目錄的存取權限 數據目錄.
-
建立備份副本時,對指定參數有寫入權限 目標目錄 目錄。
什麼是數據目錄?
數據目錄 是資料庫伺服器所在的目錄 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