一、完全备份
创建备份目录:
[root@server ~]# mkdir /xtrabackup/full -p
备份:
[root@server ~]# innobackupex --user=root --password='123' /xtrabackup/full
可以查看一下:
[root@server ~]# cd /xtrabackup/full/
[root@server full]# ls
2019-08-20_11-47-49
完全备份恢复流程
1. 停止数据库
2. 清理环境
3. 重演回滚--> 恢复数据
4. 修改权限
5. 启动数据库
1.关闭数据库:
[root@server ~]# systemctl stop mysqld
[root@server ~]# rm -rf /var/lib/mysql/*
[root@server ~]# rm -rf /var/log/mysqld.log
[root@server ~]# rm -rf /var/log/mysql-slow/slow.log
2.重演恢复:
[root@server ~]# innobackupex --apply-log /xtrabackup/full/2019-08-20_11- 47-49
3.确认数据库目录:
恢复之前需要确认配置文件内有数据库目录指定,不然xtrabackup不知道恢复到哪里
# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
二、增量备份
原理:每次备份上一次备份到现在产生的新数据
完整备份:周一
[root@server ~]# rm -rf /xtrabackup/*
[root@server ~]# innobackupex --user=root --password='123' /xtrabackup
[root@server ~]# cd /xtrabackup/
[root@server xtrabackup]# ls
2019-08-20_14-51-35
[root@server xtrabackup]# cd 2019-08-20_14-51-35/
[root@server 2019-08-20_14-51-35]# ls
backup-my.cnf ib_buffer_pool mysql sys testdb xtrabackup_info company ibdata1 performance_schema test xtrabackup_checkpoints xtrabackup_logfile
增量备份:周二 —— 周三
在数据库中插入周二的数据:
mysql> insert into testdb.t1 values(2); #模拟周二
[root@server ~]# innobackupex --user=root --password='123' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2019-08-20_14-51-35/
--incremental-basedir:基于哪个增量
[root@server ~]# cd /xtrabackup/
[root@server xtrabackup]# ls
2019-08-20_14-51-35 2019-08-20_15-04-29 ---相当于周二的增量备份
在数据库中插入周三的数据:
mysql> insert into testdb.t1 values(3); #模拟周三
[root@server ~]# innobackupex --user=root --password='123' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2019-08-20_15-04-29/ #基于前 一天的备份为目录
[root@server ~]# cd /xtrabackup/
[root@server xtrabackup]# ls
2019-08-20_14-51-35 2019-08-20_15-04-29 2019-08-20_15-10-56 ---相当于周三的增量
备份查看一下备份目录:
[root@server ~]# ls /xtrabackup/
2019-08-20_14-51-35 2019-08-20_15-04-29 2019-08-20_15-10-56
全备周一 增量周二 增量周三
增量备份恢复流程
1. 停止数据库
2. 清理环境
3. 依次重演回滚redo log--> 恢复数据
4. 修改权限
5. 启动数据库
[root@server ~]# systemctl stop mysqld
[root@server ~]# rm -rf /var/lib/mysql/*
依次重演回滚redo log:
[root@server ~]# innobackupex --apply-log --redo-only /xtrabackup/2019-08- 20_14-51-35
周二 --- 周三
[root@server ~]# innobackupex --apply-log --redo-only /xtrabackup/2019-08- 20_14-51-35 --incremental-dir=/xtrabackup/2019-08-20_15-04-29 --incremental-dir:增量目录
[root@server ~]# innobackupex --apply-log --redo-only /xtrabackup/2019-08- 20_14-51-35 --incremental-dir=/xtrabackup/2019-08-20_15-10-56/
恢复数据:
[root@server ~]# innobackupex --copy-back /xtrabackup/2019-08-20_14-51-35/
修改权限
[root@server ~]# chown -R mysql.mysql /var/lib/mysql/
[root@server ~]# systemctl start mysqld
三、差异备份
清理备份的环境:
[root@server ~]# rm -rf /xtrabackup/*
登陆数据库,准备环境
mysql> delete from testdb.t1;
mysql> insert into testdb.t1 values(1); #插入数据1,模拟周一
mysql> select * from testdb.t1;
mysql> \q
查看时间:
[root@server ~]# date Tue Aug
20 15:39:59 CST 2019
1.完整备份:周一
[root@server ~]# innobackupex --user=root --password='123' /xtrabackup
2.差异备份:周二 —— 周三
语法: # innobackupex --user=root --password=888 --incremental /xtrabackup -- incremental-basedir=/xtrabackup/完全备份目录(周一)
3.修改时间:
[root@mysql-server ~]# date 08211543
Wed Aug 21 15:43:00 CST 2019
4.在登陆mysql
mysql> insert into testdb.t1 values(2); #插入数据2,模拟周二 差异备份周二的
[root@server ~]# innobackupex --user=root --password='123' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2019-08-20_15-42-02/ #备份目录基于 周一的备份
5.再次登陆mysql
mysql> insert into testdb.t1 values(3); #插入数据,模拟周三
6.在次修改时间
[root@server ~]# date 08221550
Thu Aug 22 15:50:00 CST 2019
7.在次差异备份
[root@server ~]# innobackupex --user=root --password='123' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2019-08-20_15-42-02/ #还是基于周一 的备份
8.延申到周四
mysql> insert into testdb.t1 values(4);
9.修改时间
[root@server ~]# date 08231553
Fri Aug 23 15:53:00 CST 2019
10.差异备份周四
[root@server ~]# innobackupex --user=root --password='123' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2019-08-20_15-42-02/ #还是基于周一 的备份
11.查看一下备份目录
[root@server ~]# ls /xtrabackup/
2019-08-20_15-42-02 2019-08-21_15-46-53 2019-08-22_15-51-15 2019-08-23_15-53- 28
周一 周二 周三 周四
差异备份恢复流程 回到目录
1. 停止数据库
2. 清理环境
3. 重演回滚redo log(周一,某次差异)--> 恢复数据
4. 修改权限
5. 启动数据库
6. 停止数据库
[root@server ~]# systemctl stop mysqld
[root@server ~]# rm -rf /var/lib/mysql/*
1.恢复全量的redo log
语法: # innobackupex --apply-log --redo-only /xtrabackup/完全备份目录(周一)
[root@server ~]# innobackupex --apply-log --redo-only /xtrabackup/2019-08- 20_15-42-02/
2.恢复差异的redo log
语法:# innobackupex --apply-log --redo-only /xtrabackup/完全备份目录(周一)-- incremental-dir=/xtrabacku/某个差异备份 这里我们恢复周三的差异备份
[root@server ~]# innobackupex --apply-log --redo-only /xtrabackup/2019-08- 20_15-42-02/ --incremental-dir=/xtrabackup/2019-08-22_15-51-15/ #我们恢复周三的差 异备份
3.恢复数据
语法: # innobackupex --copy-back /xtrabackup/完全备份目录(周一)
[root@server ~]# innobackupex --copy-back /xtrabackup/2019-08-20_15-42-02/
修改权限:
[root@server ~]# chown -R mysql.mysql /var/lib/mysql
[root@server ~]# systemctl start mysqld