1 介绍
本文用来介绍如何使用percona公司的xtrabackup备份工具
参考资料:https://www.cnblogs.com/shenxm/p/7862247.html
2 安装
yum localinstall percona-xtrabackup-24-2.4.11-1.el7.x86_64.rpm -y
3 使用
由于innobackupex命令既可以备份innodb又可以备份myisam表,因此主要介绍此工具的用法
# 备份slave库上的数据。加上此参数会输出master库上的binlog信息
--slave-info
3.1 全备备份
1.全量备份
/usr/bin/innobackupex --defaults-file=/etc/my.cnf --socket=/var/lib/mysql/mysql.sock --host=127.0.0.1 --user=root --password=mvtech123 /data/20181129 --no-timestamp --slave-info --parallel=2 --throttle=800
2.恢复全量备份
2.1 关闭mysql
2.2 重命名mysql的数据目录和日志目录
mv /data/mysql/data /data/mysql/data_20181129
mv /data/mysql/log /data/mysql/log_20181129
2.3 应用日志
innobackupex --apply-log --use-memory=200G /data/20181129/
2.4 恢复 注:恢复有两种方式--move-back 和--copy-back,move-back速度快,但备份文件被move后就不存在,请根据实际情况进行选择
innobackupex --defaults-file=/etc/my.cnf --move-back /data/20181129/
2.5 修改权限
chown -R mysql:mysql /data/mysql
2.6 启动mysql
service mysqld start
3.2 增量备份
增量备份是在全量备份的基础上进行
1. 增量备份
innobackupex --defaults-file=/etc/my.cnf --host=127.0.0.1 --user=root --password=mvtech123 --parallel=4 --throttle=400 --incremental-basedir=/data/20181129 --no-timestamp --slave-info --incremental /data/20181130
2. 恢复
2.1 关闭mysql
2.2 重命名mysql的数据目录和日志目录
mv /data/mysql/data /data/mysql/data_20181129
mv /data/mysql/log /data/mysql/log_20181129
2.3 对全量备份做prepare
innobackupex --apply-log --redo-only /data/20181129
2.4 对增量备份做prepare
--redo-only:若只有一个增量备份或是最后那个增量备份文件,那么不需要这个选项,原因同上。也就是说这个选项不能用于最后一个增量备份进行prepare。
--incremental-dir=:此选项对应的目录为增量备份文件的目录
innobackupex --apply-log [--redo-only] /data/20181129 --incremental-dir=/data/20181130
2.5 查看prepare情况 查看全量备份文件中的xtrabackup_checkpoints
发现last_lsn = 508150192已经和最后一次备份一致
2.6 恢复 注:恢复有两种方式--move-back 和--copy-back,move-back速度快,但备份文件被move后就不存在,请根据实际情况进行选择
innobackupex --defaults-file=/etc/my.cnf --move-back /data/20181129/
2.7 修改权限
chown -R mysql:mysql /data/mysql
2.8 启动mysql
service mysqld start
附录1 生产全备示例脚本
#!/bin/bash
#This script is xtrabackup full backup mysql
#The Author is mvtech by 2018
#格式化日期
today=$(date +%Y%m%d)
deleteDay=`date -d "-1 days" +%Y%m%d`
echo "--------------------------------------------------------"
echo "-------------------Today is $today----------------------"
echo "--------------------Start backup------------------------"
echo "--------------------------------------------------------"
#定义变量
blxxDir="/data/xtrabackup/$today"
delDir="/data/xtrabackup/$deleteDay"
#创建备份文件夹
mkdir -p $blxxDir
#全量备份
/usr/bin/innobackupex --defaults-file=/etc/my.cnf --socket=/data/mysql/mysql.sock --host=10.99.0.81 --user=weihu --password=Mvtech123!@ $blxxDir --slave-info --no-timestamp --parallel=8 --throttle=800
#删除2天以前的备份
rm -rf $delDir
附录2 备份文件夹里文件说明
序号 | 文件名称 | 文件用途 |
---|---|---|
1 | xtrabackup_binlog_info | 记录导出mysql的binlog信息 |
2 | xtrabackup_checkpoints | 记录备份方式 |
3 | xtrabackup_info | 记录此次备份的详细信息 |
4 | xtrabackup_logfile | 备份的重做日志文件 |
5 | xtrabackup_slave_info | 记录备份slave节点时主机上的binlog信息,需要添加--slave-info参数 |