Linux 技术手札

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

Exit mobile version