xtrabackup配置与使用

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参数
原文地址:https://www.cnblogs.com/sdhzdtwhm/p/10043473.html