Percona XtraBackup 備份 MySQL

MySQL 熱備份時如果沒有停止 MySQL 或者變成唯讀狀態, 備份檔有機會出現不連貫的問題。而 Percona XtraBackup 就是一個可以在 MySQL 不停機的情況下對進行熱備份的開源工具, 而且可以選擇完整備份或者增量備份。除了 MySQL 外, 它也支援 MariaDB 及 Percona Server。

由於 Percona XtraBackup 是借用 transaction log 進行備份, 所以熱備份只適用於 InnoDB 的資料庫, 如果資料庫使用 MyISAM, 用 XtraBacup 備份時會暫時將資料庫鎖定, 完成備份後自動解除。

以下文章會介紹在 RHEL 及 CentOS 7 用 Percona XtraBackup 進行完整熱備份。

安裝 Percona XtraBackup

安裝 Percona XtraBackup 可以先安裝 Percona Repository, 再用 YUM 安裝:

# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
# sudo yum install percona-xtrabackup

只要跟著指示確認就可以完成 Percona XtraBackup 的安裝。

在開始備份前, 設定用作備份的系統帳號, 加入 mysql 群組, 以下的例子帳號是 pxbuser, 而儲存備份的目錄是 /backup/mysql

# gpasswd -a pxbuser mysql
# mkdir -p /backup/mysql
# chown pxbuser /backup/mysql

現在建立一個用作備份的 MySQL 帳號, 用 root 登入 MySQL:

# mysql -u root -p

建立 MySQL 帳號 pxbuser, 密碼會設定為 pxbpassword:

Percona XtraBackup 備份

在 RHEL 及 CentOS, MySQL 的資料目錄 (datadir) 預設位置是 /var/lib/mysql, 將資料目錄設定為給予群組用戶存取:

# find /var/lib/mysql -type d -exec chmod 770 “{}” \;

現在可以建立備份, 執行以下指令, 並將 user 及 password 根據自己設定的密碼修改:

# innobackupex –user=pxbuser –password=pxbpassword /backup/mysql
# innobackupex –apply-log /backup/mysql/new_backup

上面第二行指令的 /backup/mysql/new_backup, 是第一行指令建立的備份檔名稱。




Leave a Reply