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, 是第一行指令建立的备份档名称。