安装Percona XtraBackup
使用Percona XtraBackup进行数据库物理备份。
安装环境 : Ubuntu linux 操作系统
官网说明:Installing Percona XtraBackup on Debian and Ubuntu - Percona XtraBackup
- Ubuntu只支持7.0以上版本。
- 下载deb 下载地址:https://repo.percona.com/apt/percona-release_latest.jessie_all.deb
- 安装
dpkg -i percona-release_latest.jessie_all.deb
apt-get update
apt-get install percona-xtrabackup-24
测试安装是否成功
Xtrabackup --help
创建备份用户,并给最小权限
CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 'tykjtykj';
GRANT RELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'bkpuser'@'localhost'
FLUSH PRIVILEGES;
备份与恢复
备份
1. 准备数据
新建数据库 backtestdb 表 user并插入数据
2. 全量备份
xtrabackup --backup --user=bkpuser --password=**** --host=127.0.0.1 --target-dir=/root/mysqlbackup
# 这里要加 --host 参数,否则会走socket连接,而不是tcp。
# 备份完成会生成以日期命名的文件夹如 2019-11-22_20-02-02
## --password 替换成自己的密码
该命令常用选项
--host 指定主机
--user 指定用户名
--password 指定密码
--port 指定端口
--databases 指定数据库
--incremental 创建增量备份
--incremental-basedir 指定包含完全备份的目录
--incremental-dir 指定包含增量备份的目录
--apply-log 对备份进行预处理操作一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处理不一致状态。“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态。
--redo-only 不回滚未提交事务,增量备份需要使用。
--copy-back 恢复备份目
--defaults-file 默认配置文件,my.cnf
--parallel 此选项指定创建备份时用于同时复制多个数据文件的线程数。默认值为1(即无并发传输)
3. 新建一张表作为增量备份标志1
创建表record
4. 进行第一次增量备份
xtrabackup --backup --user=bkpuser --password=**** --host=127.0.0.1 --target-dir=/root/mysqbackup-inc1 --incremental-basedir=/root/mysqlbackup
# --incremental-basedir 增量备份基础目录(上一次备份也就是全量备份的目录)
## --password 替换成自己的密码
5. record表新增数据,作为第二次增量备份的标志
6. 进行第二次增量备份
xtrabackup --backup --user=bkpuser --password=**** --host=127.0.0.1 --target-dir=/root/mysqbackup-inc2 --incremental-basedir=/root/mysqlbackup
## --password 替换成自己的密码
7. 至此,共进行三次备份,备份目录分别为
1)/root/mysqlbackup
2)/root/mysqlbackup-inc1
3)/root/mysqlbackup-inc2
准备备份prepare
1. 关闭数据库并移除数据文件,创建新的数据库目录
service mysql stop
mv /usr/local/mysql/data/ /usr/local/mysql/data_bak/
mkdir /usr/local/mysql/data/
chown mysql /usr/local/mysql/data/
chmod 755 /usr/local/mysql/data/
2. 在全备目录上准备,重放已提交的事务
xtrabackup --prepare --apply-log-only --user=bkpuser --password=**** --host=127.0.0.1 --target-dir=/root/mysqlbackup
## --password 替换成自己的密码
3. 备份一prepare
xtrabackup --prepare --apply-log-only --user=bkpuser --password=**** --host=127.0.0.1 --target-dir=/root/mysqlbackup --incremental-dir=/root/mysqlbackup_inc1
## --password 替换成自己的密码
4. 备份二prepare
xtrabackup –prepare --user=bkpuser --password=**** --host=127.0.0.1 --target-dir=/root/mysqlbackup --incremental-dir=/root/mysqlbackup_inc2
# 最后一次备份不需要加--apply-log-only
## --password 替换成自己的密码
恢复备份
xtrabackup --copy-back --user=bkpuser --password=**** --host=127.0.0.1 --target-dir=/root/mysqlbackup
## ## --password 替换成自己的密码
## 不要忘记给恢复的目录授权,否则会启动失败
chown -R mysql /usr/local/mysql/data
chmod -R 777 /usr/local/mysql/data
启动mysql,查看数据库内容,跟回复前一致。