linux mysql 物理备份-增量备份

你们好,我是霸王卸甲,今天给你们带来的是数据库中的物理备份,物理备份又包括增量备份和差别备份,今天要讲的是增量备份!!!!!!!

物理备份 + binlog

准备工做:
PERCONA XtraBakuo
它是开源免费的支持MySQL 数据库热备份的软件,它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份。它不暂停服务建立Innodb热备份;
为mysql作增量备份;在mysql服务器之间作在线表迁移;使建立replication更加容易;备份mysql而不增长服务器的负载。
percona是一家老牌的mysql技术咨询公司。它不只提供mysql的技术支持、培训、咨询,还发布了mysql的分支版本--percona Server。并围绕
percona Server还发布了一系列的mysql工具。 mysql

官方站点:https://www.percona.com/sql

安装:wget http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm 下载yum源数据库

yum -y install percona-release-0.1-3.noarch.rpm 安装yum源服务器

yum -y install percona-xtrabackup-24.x86_64 安装perconaapp

rpm -ql percona-xtrabackup-24 查询安装结果 安装文件ide

单一彻底备份工具

首先准备备份目录
mkdir /xtrabackup/full -p
链接数据库,开始备份。
innobackupex --user=root --password='QianFeng@123' /xtrabackup/full
请注意备份结果是否完成
xtrabackup: Transaction log of lsn (74182721) to (74182730) was copied.
171127 15:04:12 completed OK!日志

查看备份目录。数据库,配置文件,日志文件
ls /xtrabackup/full/
2018-08-01_00-00-02/code

二进制日志位置
cat /xtrabackup/full/2017-08-01_00-00-18/xtrabackup_binlog_info rem

彻底恢复流程

首先中止数据库
systemctl stop mysqld

清理环境(模拟损坏)
rm -rf /var/lib/mysql/*

rm -rf /var/log/mysqld.log

rm -rf /var/log/mysql-slow/slow.log

生成回滚日志
innobackupex --apply-log /xtrabackup/full/2018-08-01_00-00-18/

恢复文件
innobackupex --copy-back /xtrabackup/full/2018-08-01_00-00-18/

登录验证
ls /var/lib/mysql

给权限
chown -R mysql.mysql /var/lib/mysql
重启
systemctl start mysqld

mysql -uroot -p'QianFeng@123'

增量备份流程

create database testdb;
use testdb;
create table test(id int);
insert into test values (1);
select * from test;
模拟数据

首先完整备份下周一的
rm -rf /xtrabackup/*
本身设置下时间 以避免作乱了
date 09010000
innobackupex --user=root --password='QianFeng@123' /xtrabackup
ll /xtrabackup/
2018-09-01_00-00-04
数据库中的记录是1条

备份下周二的
date 09020000
mysql -uroot -p'QianFeng@123' -e 'insert into testdb.test values (2)'
basedir基于周一的备份。
会生成一个今天的。
innobackupex --user=root --password='QianFeng@123' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2017-09-01_00-00-04

ls /xtrabackup/
2018-09-01_00-00-04
2018-09-02_00-00-58

备份下周三的
date 09030000
mysql -uroot -p'QianFeng@123' -e 'insert into testdb.test values (3)'
innobackupex --user=root --password='QianFeng@123' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2017-09-02_00-00-26

ls /xtrabackup/
2018-09-01_00-00-04
2018-09-02_00-00-58
2018-09-03_00-00-36

备份就到此结束
接下来是:增量恢复流程

中止数据库
systemctl stop mysqld
清理环境 模拟数据丢失
rm -rf /var/lib/mysql/*
回滚周一日志
innobackupex --apply-log --redo-only /xtrabackup/2018-09-01_00-00-04
回滚周二日志
innobackupex --apply-log --redo-only /xtrabackup/2018-09-01_00-00-04 --incremental-dir=/xtrabackup/2018-09-02_00-00-26
开始恢复数据
innobackupex --copy-back /xtrabackup/2017-09-01_00-00-06
chown -R mysql.mysql /var/lib/mysql
systemctl start mysqld

登录查询记录。发现是周二的
想要恢复周三还得在回滚一第二天志
innobackupex --apply-log --redo-only /xtrabackup/2017-09-01_00-00-04 --incremental-dir=/xtrabackup/2018-09-03_00-00-27

中止数据库
systemctl stop mysqld
恢复备份
innobackupex --copy-back /xtrabackup/2018-09-01_00-00-04

给下权力
chown -R mysql.mysql /var/lib/mysql

systemctl start mysqld

进入数据库查看数据是否恢复mysql -uroot -p'QianFeng@123'