物理备份的方式

完全备份恢复流程

  1. 停止数据库
  2. 清理环境
  3. 重演回滚--> 恢复数据
  4. 修改权限
  5. 启动数据库
    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查看一下: ![image-20230807234228290](https://file.jishuzhan.net/article/1761527953662939138/c63e9b78aa773fd79e0a51f368ab8adc.webp) 只有123.因为我们恢复的是周三的差异备份。 **增量:基于上一次备份 innobackupex --user=root --password='qf123' --incremental /xtrabackup --incremental-basedir=/xtrabackup/上一次备份的 文件/ 差异:基于第一次完备 innobackupex --user=root --password='qf123' --incremental /xtrabackup --incremental-basedir=/xtrabackup/完整备份的文件/**

相关推荐
q***04051 小时前
在 Ubuntu 上安装 MySQL 的详细指南
mysql·ubuntu·adb
赵渝强老师5 小时前
【赵渝强老师】MySQL集群解决方案
数据库·mysql
李慕婉学姐6 小时前
【开题答辩过程】以《Javaweb的火花流浪动物救助系统设计与实现》为例,不会开题答辩的可以进来看看
vue.js·spring boot·mysql
百***62856 小时前
MySQL 常用 SQL 语句大全
数据库·sql·mysql
百***6976 小时前
MySQL数据库(SQL分类)
数据库·sql·mysql
百***41668 小时前
Java MySQL 连接
java·mysql·adb
百***46809 小时前
MySQL的底层原理与架构
数据库·mysql·架构
暂时先用这个名字11 小时前
信创时代下,PHP/MySQL应用的平滑迁移与运维管理升级(AI整理)
运维·mysql·php·信创·国产化·国产·迁移
一氧化二氢.h11 小时前
MySQL root用户连接错误解决方法
android·数据库·mysql
百***221211 小时前
mysql 迁移达梦数据库出现的 sql 语法问题 以及迁移方案
数据库·sql·mysql