物理备份的方式

完全备份恢复流程

  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/完整备份的文件/**

相关推荐
csdn_aspnet10 分钟前
如何在 Ubuntu 24.04/22.04/20.04 上安装 MySQL 8.0
linux·mysql·ubuntu
最好结果1 小时前
MyBatis 精确查询逗号分隔字符串
mysql·mybatis·1024程序员节
苹果醋31 小时前
学习札记-Java8系列-1-Java8新特性简介&为什么要学习Java8
java·运维·spring boot·mysql·nginx
zz-zjx1 小时前
MySQL 索引深度指南:原理 · 实践 · 运维(适配 MySQL 8.4 LTS)
运维·数据库·mysql
布朗克1682 小时前
MySQL 运算符详细说明
数据库·mysql·运算符·1024程序员节
码力引擎4 小时前
【零基础学MySQL】第一章:MySQL介绍与安装
数据库·mysql·1024程序员节
Sam_Deep_Thinking4 小时前
MySQL 8 索引与 B+ 树-初浅理解
mysql
235164 小时前
【MySQL】慢查寻的发现和解决优化(思维导图版)
java·后端·sql·mysql·职场和发展·数据库开发·数据库架构
hweiyu004 小时前
Node.js+Koa2+MySQL 打造前后端分离项目(视频教程)
数据库·mysql·node.js
penguin_bark6 小时前
C++调用MySQL数据库完整教程
数据库·c++·mysql