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 安裝:
# sudo yum install percona-xtrabackup
只要跟著指示確認就可以完成 Percona XtraBackup 的安裝。
在開始備份前, 設定用作備份的系統帳號, 加入 mysql 群組, 以下的例子帳號是 pxbuser, 而儲存備份的目錄是 /backup/mysql
# mkdir -p /backup/mysql
# chown pxbuser /backup/mysql
現在建立一個用作備份的 MySQL 帳號, 用 root 登入 MySQL:
建立 MySQL 帳號 pxbuser, 密碼會設定為 pxbpassword:
|
1 2 3 4 |
mysql> CREATE USER 'pxbuser'@'localhost' IDENTIFIED BY 'pxbpassword'; mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'pxbuser'@'localhost'; mysql> FLUSH PRIVILEGES; mysql> exit; |
Percona XtraBackup 備份
在 RHEL 及 CentOS, MySQL 的資料目錄 (datadir) 預設位置是 /var/lib/mysql, 將資料目錄設定為給予群組用戶存取:
現在可以建立備份, 執行以下指令, 並將 user 及 password 根據自己設定的密碼修改:
# innobackupex –apply-log /backup/mysql/new_backup
上面第二行指令的 /backup/mysql/new_backup, 是第一行指令建立的備份檔名稱。