一、增量备份定义:
- 增量备份是备份上次备份后新产生的数据,所以在执行增量备份之前 必须要先有一次备份,否则无法得知那些数据是新数
- 通常增量备份前的首次备份是完全备份
- 通常每周的周二到周日可以对数据都做增量备份
二、增量备份percona软件说明:
- 第三方软件
percona
提供的备份命令innobackupex
可以实现对数据的备份和恢复 - 还可以使用
percona
来实现完全备份的功能 -
percona
每次备份数据,其选择的备份目录每次都要不一样 -
percona
的特点是:在线热备不锁表,适合生产环境下备份业务 -
percona
恢复数据时,必须要停止数据库服务
三、增量备份语法格式及参数说明:
完全备份格式
innobackupex -uroot -p密码 备份目录 [参数]
增量备份格式
innobackupex -uroot -p密码 备份目录 --incremental 新数据存放目录 --incremental-basedir=上次备份目录 [参数]
准备恢复数据格式
innobackupex --apply-log --redo-only 完全备份目录
合并数据格式(合并的顺序要与增量备份的顺序一致)
innobackupex --apply-log --redo-only 完全备份目录 --incremental-dir=新数据存放目录
拷贝数据格式
innobackupex --copy-back 完全备份目录
类型 | 参数 | 说明 |
---|---|---|
备份 | --no-timestamp | 不用时间戳创建子目录存储备份数据 |
--incremental /newdir | 备份新数据newdir :新数据备份目录 |
|
--incremental-basedir=/olddir | 上次备份olddir :上次备份目录 |
|
恢复 | --apply-log --redo-only | 准备恢复数据 |
--incremental-dir | 合并数据中指定增量备份数据存放目录 | |
--copy-back | 将合并完的完全备份数据拷贝数据到默认/自定义数据库目录下 |
四、增量备份及恢复数据具体操作步骤:
- 安装命令软件
- 备份:完全备份+增量备份
- 准备恢复数据并合并
- 恢复数据
第一步:安装命令软件
- 安装软件包
[root@host50 ~]# yum -y install libev-4.15-1.el6.rf.x86_64.rpm
[root@host50 ~]# yum -y install percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm
# 查看帮助
[root@host50 ~]# man innobackupex
第二步:备份
- 周一 执行完全备份
[root@host50 ~]# innobackupex -uroot -p密码 /fullbak
--no-timestamp
- 周二~周日 执行增量备份
[root@host50 ~]# innobackupex –uroot –p密码 --incremental /new2
--incremental-basedir=/fullbak --no-timestamp
[root@host50 ~]# innobackupex –uroot –p密码 --incremental /new3
--incremental-basedir=/new2 --no-timestamp
[root@host50 ~]# innobackupex -uroot -p密码 --incremental /new4
--incremental-basedir=/new3 --no-timestamp
[root@host50 ~]# innobackupex -uroot -p密码 --incremental /new5
--incremental-basedir=/new4 --no-timestamp
[root@host50 ~]# innobackupex -uroot -p密码 --incremental /new6
--incremental-basedir=/new5 --no-timestamp
[root@host50 ~]# innobackupex -uroot -p密码 --incremental /new7
--incremental-basedir=/new6 --no-timestamp
第三步:准备恢复数据并合并
- 准备恢复数据
# 告诉innobackupex从什么位置开始合并数据
[root@host51 ~]# innobackupex --apply-log --redo-only /opt/fullbak/
- 合并数据(需要恢复哪一天的就合并到哪一天)
# 合并周二增量备份数据
[root@host51 ~]# innobackupex --apply-log --redo-only /fullbak/
--incremental-dir=/opt/new2
# 合并周三增量备份数据
[root@host51 ~]# innobackupex --apply-log --redo-only /fullbak/
--incremental-dir=/opt/new3
# 合并周四增量备份数据
[root@host51 ~]# innobackupex --apply-log --redo-only /fullbak/
--incremental-dir=/opt/new4
# 合并周五增量备份数据
[root@host51 ~]# innobackupex --apply-log --redo-only /fullbak/
--incremental-dir=/opt/new5
# 合并周六增量备份数据
[root@host51 ~]# innobackupex --apply-log --redo-only /fullbak/
--incremental-dir=/opt/new6
# 合并周日增量备份数据
[root@host51 ~]# innobackupex --apply-log --redo-only /fullbak/
--incremental-dir=/opt/new7
第四步:恢复数据
- 停止数据库服务
[root@host51 ~]# systemctl stop mysqld
- 清空数据库目录(必须要清空目录信息,否则无法恢复)
[root@host51 ~]# rm -rf /var/lib/mysql/*
- 恢复数据
# 把合并后的数据拷贝到数据库目录下
[root@host51 ~]# innobackupex --copy-back /opt/fullbak
# 修改数据库目录的所有者和组用户为mysql
[root@host51 ~]# chown -R mysql:mysql /var/lib/mysql
# 重启数据库服务
[root@host51 ~]# systemctl start mysqld