xtrabackup增量备份MySQL-5.7操作说明

2022-11-07,,,,

下载工具

本方法利用xtrabackup二进制包,版本是2.4.26

# 从官网下载二进制包:
wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.26/binary/tarball/percona-xtrabackup-2.4.26-Linux-x86_64.glibc2.12.tar.gz


#解压二进制包:
tar -zxvf percona-xtrabackup-2.4.26-Linux-x86_64.glibc2.12.tar.gz

#移动目录:
mv percona-xtrabackup-2.4.26-Linux-x86_64.glibc2.12 /usr/local/xtrabackup

#配置PATH:
vim /etc/profile

#写下如下内容
export PATH=$PATH:/usr/local/xtrabackup/bin

#使其生效
source /etc/profile

#软链接
ln -s /usr/local/xtrabackup/bin/innobackupex /usr/bin/innobackupex

确定文件

使用备份工具xtrabackup,首先该工具要和mysql在同一个服务器上,并且要知道如下内容才可使用备份功能

# 1.配置文件路径:my.cnf 或者 mysqld.cnf
# 7.mysql数据文件夹路径:data
# 2.连接地址:如果是装在宿主机则填 127.0.0.1, 如果是装在容器则填容器网关
# 3.端口:3306 或其它
# 4.超级账号的账户:root 或其它
# 5.超级账号的密码:123456 或其它
# 6.socket文件:mysql.sock 或者 mysqld.sock

开始备份

因为增量备份是基于全量备份上进行的差额备份,所以先要有一次全量备份

1.全量备份

# 参数说明, innobackupex是xtrabackup的符号链接
innobackupex --defaults-file=[mysql配置文件路径] \
--datadir=[mysql数据文件夹路径] \
--host=[mysql连接地址] \
--port=[mysql端口] \
--user=[mysql备份账号名称] \
--password=[mysql备份账号密码] \
--socket=[用于连接mysql的socket文件] \
[指定备份存放路径]

# 操作例子如下, 指定全量备份路径在 /backup/full
innobackupex --defaults-file=/home/database/mysql-5.7/conf \
--datadir='/home/database/mysql-5.7/data' \
--host='127.0.0.1' \
--port=3306 \
--user=root \
--password='abc1234' \
--socket='/home/database/mysql-5.7/data/mysql.sock' \
/backup/full

# 备份好会出现 completed OK! 的字样, 按照例子出现的全量备份文件夹路径如下
/backup/full/2022-08-30_14-20-55

2.增量备份

第一次增量备份是基于第一次全量备份上操作的

# 参数说明
innobackupex --defaults-file=[mysql配置文件路径] \
--datadir=[mysql数据文件夹路径] \
--host=[mysql连接地址] \
--port=[mysql端口] \
--user=[mysql备份账号名称] \
--password=[mysql备份账号密码] \
--socket=[用于连接mysql的socket文件] \
--incremental-basedir=[指定前一次备份的目录] \
--incremental=[指定增量备份存放的文件路径]

# 操作例子如下
innobackupex --defaults-file=/home/database/mysql-5.7/conf \
--datadir='/home/database/mysql-5.7/data' \
--host='127.0.0.1' \
--port=3306 \
--user=root \
--password='abc1234' \
--socket='/home/database/mysql-5.7/data/mysql.sock' \
--incremental-basedir=/backup/full/2022-08-30_14-20-55 \
--incremental /backup/inc

# 备份好会出现 completed OK! 的字样, 按照例子出现的第一次增量备份文件夹路径如下
/backup/inc/2022-08-30_14-29-07

第二次增量备份是基于前一次增量备份上操作的

# 操作例子如下
innobackupex --defaults-file=/home/database/mysql-5.7/conf \
--datadir='/home/database/mysql-5.7/data' \
--host='127.0.0.1' \
--port=3306 \
--user=root \
--password='abc1234' \
--socket='/home/database/mysql-5.7/data/mysql.sock' \
--incremental-basedir=/backup/inc/2022-08-30_14-29-07 \
--incremental /backup/inc

# 备份好会出现 completed OK! 的字样, 按照例子出现的第二次增量备份文件夹路径如下
/backup/inc/2022-08-30_14-34-11

备份文件路径

上述三个操作的文件路径如下:

全量备份:/backup/full/2022-08-30_14-20-55
增量备份1:/backup/inc/2022-08-30_14-29-07
增量备份2:/backup/inc/2022-08-30_14-34-11

开始还原

1.停止数据库
# 不允许mysql进程存在
/etc/init.d/mysqld stop
ps aux |grep "mysqld"
kill -9 xxxx


2.移除mysql原有数据
# 创建一个新文件夹,移走原有data数据
mkdir -p /home/database/mysql-5.7/data_bak
mv /home/database/mysql-5.7/data/* /home/database/mysql-5.7/data_bak/


3.合并增量备份
# 先初始化全量
innobackupex --apply-log --redo-only [全量备份目录]
# 例子如下
innobackupex --apply-log --redo-only /backup/full/2022-08-30_14-20-55



# 初始化第一次增量
innobackupex --apply-log --redo-only [全量备份目录] --incremental-dir=[第一次增量备份目录]
# 例子如下
innobackupex --apply-log --redo-only /backup/full/2022-08-30_14-20-55 --incremental-dir=/backup/inc/2022-08-30_14-29-07/


# 初始化第二次增量, 因为这是最后一次增量, 所以不需要 --redo-only 参数
innobackupex --apply-log [全量备份目录] --incremental-dir=[第二次增量备份目录]
# 例子如下
innobackupex --apply-log /backup/full/2022-08-30_14-20-55 --incremental-dir=/backup/inc/2022-08-30_14-34-11


# 再初始化一次全量, 不需要 --redo-only 参数
innobackupex --apply-log [全量备份目录]
# 例子如下
innobackupex --apply-log /backup/full/2022-08-30_14-20-55


# 执行还原, 复制所有的备份到他们原来的位置
innobackupex --datadir=[mysql数据文件夹路径] --copy-back [执行还原需要的全量备份目录]
# 例子如下
innobackupex --datadir='/home/database/mysql-5.7/data' --copy-back /backup/full/2022-08-30_14-20-55


# 还原好会出现 completed OK! 的字样,此时重启 mysql 即可看到恢复的数据

 

xtrabackup增量备份MySQL-5.7操作说明的相关教程结束。

《xtrabackup增量备份MySQL-5.7操作说明.doc》

下载本文的Word格式文档,以方便收藏与打印。