完全备份恢复流程
- 停止数据库
- 清理环境
- 重演回滚--> 恢复数据
- 修改权限
- 启动数据库
1.关闭数据库:
c
[root@mysql-server ~]# systemctl stop mysqld
[root@mysql-server ~]# rm -rf /var/lib/mysql/* //删除所有数据//
[root@mysql-server ~]# rm -rf /var/log/mysqld.log
[root@mysql-server ~]# rm -rf /var/log/mysql-slow/slow.log
2.重演恢复:
c
[root@mysql-server ~]# innobackupex --apply-log /xtrabackup/full/2021-12-07_14-31-13
3.确认数据库目录: 恢复之前需要确认配置文件内有数据库目录指定,不然xtrabackup不知道恢复到哪里
cat /etc/my.cnf
mysqld\] datadir=/var/lib/mysql 4.恢复数据: \[root@mysql-server \~\]# innobackupex --copy-back /xtrabackup/full/2021-12-07_14-31-13
5.修改权限:
root@mysql-server \~\]# chown mysql.mysql /var/lib/mysql -R 启动数据库: \[root@mysql-server \~\]# systemctl start mysqld 6.确认数据是否恢复 ```c mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | chenge | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec) mysql> use chenge; Database changed mysql> show tables; +--------------------+ | Tables_in_chenge | +--------------------+ | t1 | +--------------------+ 1 row in set (0.00 sec) ===可以看到数据已恢复=== ``` ### 增量备份流程 **原理:每次备份上一次备份到现在产生的新数据,基于上一次备份的时间点到现在** 1. 停止数据库 2. 清理环境 3. 依次重演回滚redo log--\> 恢复数据 4. 修改权限 5. 启动数据库 1.完整备份:周一 ```c [root@mysql-server ~]# rm -rf /xtrabackup/* [root@mysql-server ~]# innobackupex --user=root --password='qf123' /xtrabackup [root@mysql-server ~]# cd /xtrabackup/ [root@mysql-server xtrabackup]# ls 2022-01-10_14-10-40 [root@mysql-server xtrabackup]# cd 2022-01-10_14-10-40/ [root@mysql-server 2022-01-10_14-10-40]# ls backup-my.cnf ib_buffer_pool mysql sys testdb xtrabackup_info company ibdata1 performance_schema test xtrabackup_checkpoints xtrabackup_logfile ``` 2、增量备份:周二 ------ 周三 在数据库中插入周二的数据: ```c mysql> insert into testdb.t1 values(2); #模拟周二 [root@mysql-server ~]# innobackupex --user=root --password='qf123' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2022-01-10_14-10-40/ --incremental-basedir:基于哪个增量 [root@mysql-server ~]# cd /xtrabackup/ [root@mysql-server xtrabackup]# ls 2022-01-10_14-10-40 2022-01-10_14-16-16 ---相当于周二的增量备份 ``` ```c 在数据库中插入周三的数据: mysql> insert into testdb.t1 values(3); #模拟周三 [root@mysql-server ~]# innobackupex --user=root --password='qf123' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2022-01-10_14-16-16/ #基于前一天的备份为目录 [root@mysql-server ~]# cd /xtrabackup/ [root@mysql-server xtrabackup]# ls 2022-01-10_14-10-40 2022-01-10_14-16-16 2022-01-10_14-19-59 ---相当于周三的增量备份 ``` 查看一下备份目录: ```c [root@mysql-server ~]# ls /xtrabackup/ 2022-01-10_14-10-40 2022-01-10_14-16-16 2022-01-10_14-19-59 全备周一 增量周二 增量周三 ``` ```c [root@mysql-server ~]# systemctl stop mysqld [root@mysql-server ~]# rm -rf /var/lib/mysql/* 依次重演回滚redo log: [root@mysql-server ~]# innobackupex --apply-log --redo-only /xtrabackup/2022-01-10_14-10-40 周二 --- 周三 [root@mysql-server ~]# innobackupex --apply-log --redo-only /xtrabackup/2022-01-10_14-10-40 --incremental-dir=/xtrabackup/2022-01-10_14-16-16 --incremental-dir:增量目录 [root@mysql-server ~]# innobackupex --apply-log --redo-only /xtrabackup/2022-01-10_14-10-40 --incremental-dir=/xtrabackup/2022-01-10_14-19-59/ 恢复数据: [root@mysql-server ~]# innobackupex --copy-back /xtrabackup/2022-01-10_14-10-40/ 修改权限 [root@mysql-server ~]# chown -R mysql.mysql /var/lib/mysql [root@mysql-server ~]# systemctl start mysqld 登陆上去看一下: ``` ### 差异备份流程 清理备份的环境: ```c [root@mysql-server ~]# rm -rf /xtrabackup/* 登陆数据库,准备环境 mysql> delete from testdb.t1; mysql> insert into testdb.t1 values(1); #插入数据1,模拟周一 mysql> select * from testdb.t1; +------+ | id | +------+ | 1 | +------+ mysql> \q 查看时间: [root@mysql-server ~]# date Tue Aug 20 15:39:59 CST 2019 1、完整备份:周一 [root@mysql-server ~]# innobackupex --user=root --password='qf123' /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@mysql-server ~]# innobackupex --user=root --password='qf123' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2022-01-10_14-34-07/ #备份目录基于周一的备份 5.再次登陆mysql mysql> insert into testdb.t1 values(3); #插入数据,模拟周三 6.在次修改时间 [root@mysql-server ~]# date 08221550 Thu Aug 22 15:50:00 CST 2019 7.在次差异备份 [root@mysql-server ~]# innobackupex --user=root --password='qf123' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2022-01-10_14-34-07/ #还是基于周一的备份 8.延申到周四 mysql> insert into testdb.t1 values(4); 9.修改时间 [root@mysql-server ~]# date 08231553 Fri Aug 23 15:53:00 CST 2019 10.差异备份周四 [root@mysql-server ~]# innobackupex --user=root --password='qf123' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2022-01-10_14-34-07/ #还是基于周一的备份 11.查看一下备份目录 [root@mysql-server ~]# ls /xtrabackup/ 2022-01-10_14-34-07 2022-01-10_14-36-09 2022-01-10_14-38-45 2022-01-10_14-39-18 周一 周二 周三 周四 ``` 差异备份恢复流程 1. 停止数据库 2. 清理环境 3. 重演回滚redo log(周一,某次差异)--\> 恢复数据 4. 修改权限 5. 启动数据库 停止数据库 ```c [root@mysql-server ~]# systemctl stop mysqld [root@mysql-server ~]# rm -rf /var/lib/mysql/* 1.恢复全量的redo log 语法: # innobackupex --apply-log --redo-only /xtrabackup/完全备份目录(周一) [root@mysql-server ~]# innobackupex --apply-log --redo-only /xtrabackup/2022-01-10_14-34-07/ 2.恢复差异的redo log 语法:# innobackupex --apply-log --redo-only /xtrabackup/完全备份目录(周一)--incremental-dir=/xtrabacku/某个差异备份 这里我们恢复周三的差异备份 [root@mysql-server ~]# innobackupex --apply-log --redo-only /xtrabackup/2022-01-10_14-34-07/ --incremental-dir=/xtrabackup/2022-01-10_14-38-45/ #我们恢复周三的差异备份 3.恢复数据 语法:# innobackupex --copy-back /xtrabackup/完全备份目录(周一) [root@mysql-server ~]# innobackupex --copy-back /xtrabackup/2022-01-10_14-34-07/ 修改权限: [root@mysql-server ~]# chown -R mysql.mysql /var/lib/mysql [root@mysql-server ~]# systemctl start mysqld ``` 登陆mysql查看一下:  只有123.因为我们恢复的是周三的差异备份。 **增量:基于上一次备份 innobackupex --user=root --password='qf123' --incremental /xtrabackup --incremental-basedir=/xtrabackup/上一次备份的 文件/ 差异:基于第一次完备 innobackupex --user=root --password='qf123' --incremental /xtrabackup --incremental-basedir=/xtrabackup/完整备份的文件/**