xtrabackup实现全量备份和增量备份

Posted 风中驻足

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xtrabackup实现全量备份和增量备份相关的知识,希望对你有一定的参考价值。

mysql增量和完全备份
innobackupex2.1.9版本
1 yum安装:

官网地址:https://www.percona.com/doc/percona-xtrabackup/LATEST/installation/yum_repo.html
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
yum list | grep percona
yum remove percona-xtrabackup
yum install percona-xtrabackup-24 -y
xtrabackup -version

2使用编译好的通用包

自行选择版本:https://www.percona.com/downloads/XtraBackup/LATEST/binary/redhat/6/x86_64/
本次使用版本: https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.8/binary/tarball/percona-xtrabackup-2.4.8-Linux-x86_64.tar.gz
tar xf percona-xtrabackup-2.4.8-Linux-x86_64.tar.gz -C /usr/local/
mv /usr/local/percona-xtrabackup-2.4.8-Linux-x86_64/ /usr/local/xtrabackup
echo "export PATH=$PATH:/usr/local/xtrabackup/bin" >> /etc/profile
source /etc/profile
yum install numactl -y #安装依赖

 


--------全量备份---------
数据备份放到/data/backup/下面,innobackuppex会自动创建一个文件夹+当前系统时间戳
先备份下,然后测试一下,再备份。
备份:
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456
--socket=/usr/local/mysql/mysqld.sock /data/backup/full --host=192.168.133.140
测试:
grant all slave on *.* to ‘backup‘@‘%‘ identified by ‘123456‘;
再次备份:
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456
--socket=/usr/local/mysql/mysqld.sock /data/backup/full --host=192.168.133.140

一下这个删除不要了。
#innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=root
#--password=123456 --host=127.0.0.1 --parallel=2 --throttle=200
#/backup/mysql/data 2>/backup/mysql/data/bak.log 1>/backup/mysql/data/`data +%Y-%m-%d_%H-%M%S`

--user=root 备份操作用户名
--password=123456 数据库密码
--host=192.168.133.140 数据库的ip,本地的可以不加(适用于远程备份)。
提前在mysql中授权连接的权限,最好备份前测试用户名,密码,host能否正常连接mysql
--parallel=2 --throttle=200 并行个数,根据主机配置选择合适的,默认是1,多个加速备份速度
/data/backup 备份存放的目录
2>/data/backup/bak.log 备份日志,将日志备份过程中的输出信息重定向到bak.log


备份完成后会在备份目录下创建一个以当前时间日期为名字的目录,存放备份文件
ll /data/backup/时间
backup-my.cnf --备份命令用到的配置选项信息
ibdata1 --备份的表空间文件
xtarbackup_binary --备份中用到的xtrabackup的可执行文件
xtarbackup_binlog_info --mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止的二进制日志事件的位置。
xtrabackup_checkpoints --备份类型(如完全或者增量),备份状态(如是否为prepare状态)
LSN(日志序列号)范围信息
xtarbackup_logfile --备份的重做日志文件

>drop database test; (线上不使用)
恢复全备
恢复备份到mysql的数据文件目录,
先关mysql数据库
重命名或者删除原数据库目录
创建新的数据库目录
将备份的数据库目录复制到新的数据文件目录下
赋值,修改权限,启动数据库
service mysqld stop
mv /data/mysql/ /xxx (这个只是将数据库的目录复制)
或者直接删除: rm -rf /data/mysql/*

mkdir /data/mysql

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456
--use-memory=4G --apply-log /data/backup/full/2017-12-24_07-33-51
加快速度用 --apply-log 目录准备就绪

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456
--copy-back /data/backup/full/2017-12-24_07-33-51
copy-back将备份文件拷贝到原来的数据目录下
innobackupex增量备份仅针对于InnoDB,对于MyISAM仍是全备

修改数据目录权限,启动mysql,
chown -R mysql.mysql /data/mysql/
service mysqld start

 

yum安装的没有报错信息,如果是编译安装的(这个报错信息如下,但是没有碰到过)
可能报错:
sh: xtrabackup: command not found
innobackupex: Error: no ‘mysqld‘ group in MySQL options
at /home/mysql/admin/bin/percona-xtrabackup-2.1.9/innobackupex line 4350

解决:将xtrabackup_56复制成xtrabackup即可
[[email protected] percona-xtrabackup-2.1.9]# ls
innobackupex xbstream xtrabackup_56
[[email protected] percona-xtrabackup-2.1.9]# cp xtrabackup_56 xtrabackup
[[email protected] percona-xtrabackup-2.1.9]# ls
innobackupex xbstream xtrabackup xtrabackup_56


$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


增量备份:
先进行一次全量备份
第一次增量备份是基于全备的,
之后的是基于上一次的增量备份,

全备份放在/data/backup/full,
增量备份在/data/backup/incremental,
增量备份后在该目录下生成 2017-12-24_10-22-30文件夹

全量备份:
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456
--socket=/data/mysqldata/mysqld.sock /data/backup/full
在t1插入数据
inster into t1 values(null);
再增量备份:
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456
--socket=/usr/local/mysql/mysqld.sock --incremental /data/backup/incremental/
--incremental-basedir=/data/backup/full/2017-12-24_10-22-30/ --parallel=2
如果关于sock报错,去掉就OK了。
2017-12-24_10-22-30该文件是增量备份文件夹
查看增量备份的大小和文件内容
cat xtrabackup_checkpoints
创建t2表,插入数据然后创建增量备份2
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456
--socket=/usr/local/mysql/mysqld.sock --incremental /data/backup/incremental/
--incremental-basedir=/data/backup/full/2017-12-24_10-22-30/ --parallel=2
2017-12-31_11-09-09是第二个增量备份文件夹


&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
增量备份恢复:
--恢复完全备份
--恢复增量备份到完全备份
开始增量备份加--redo-only,最后一次去掉--redo-only
--对整体的完全备份进行恢复,回滚未提交的数据
--恢复完全备份
一定加--redo-only

恢复完全备份
innobackupex --apply-log --redo-only /data/backup/full/完全备份的文件夹日期
将增量备份1应用到完全备份
innobackupex --apply-log --redo-only /data/backup/full/完全备份的文件夹日期
--incremental-dir=/data/backup/incremental/增量备份1的文件夹
将增量备份2应用到完全备份
innobackupex --apply-log --redo-only /data/backup/full/完全备份的文件夹日期
--incremental-dir=/data/backup/incremental/增量备份2的文件夹日期
把所有合在一起的完全备份整体进行一次apply操作,回滚未提交的数据
innobackupex --apply-log /data/backup/full/2014-04-07_23-37-20/ ??????

把恢复完的备份复制到数据库目录文件中,赋权,然后启动mysql数据库,检测数据正确性
同上,省略





整理增量备份的内容:
innobackupex --apply-log --redo-only 完整备份路径
innobackupex --apply-log --redo-only 完整备份路径 --incremental-dir=增量备份1路径
innobackupex --apply-log --redo-only 完整备份路径 --incremental-dir=增量备份2路径
......
innobackupex --apply-log 完整备份路径 --incremental-dir=最后一个增量备份X的路径
这个增量备份是把增量备份下的目录的数据,整合到全变量目录下,然后进行全数据的还原。
现在已经把增量目录下是数据整合到全量备份目录下,然后进行全量还原
/etc/init.d/mysqld stop
rm -rf /data/mysql/data/*
innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=root --password=123456
--copy-back /backup/mysql/data/备份过程中用的完整备份路径的文件夹
chown -R mysql.mysql /data/mysql/data/*
/etc/init.d/mysql start


****
*****
最好将备份目录和增量目录放到同一目录路径下
/backup/mysql/data/full 存放全量备份目录
/backup/mysql/data/daily1 存放第一次增量备份目录
/backup/mysql/data/daily2 存放第二次增量目录

 

以上是关于xtrabackup实现全量备份和增量备份的主要内容,如果未能解决你的问题,请参考以下文章

Xtrabackup全量备份/增量备份脚本

xtrabackup实现全量+增量+binlog恢复库

MySQL5.7.18 备份Mysqldump,mysqlpump,xtrabackup,innobackupex 全量,增量备份,数据导入导出

XtraBackup实现MySQL数据库全量+增量+Binlog恢复库

Centos 6.9 安装xtrabackup-2.4.8 通用包,yum安装,全量备份,增量备份

基于Xtrabackup8的Mysql定时全量,增量备份及恢复实战演练