mysql 数据备份和恢复

news/2024/11/19 16:23:03/

操作系统:22.04.1-Ubuntu

在这里插入图片描述

mysql 版本:8.033

在这里插入图片描述

binlog 介绍

binlog 是mysql 二进制日志 binary log的简称,可以简单理解为数据的修改记录。
需要开启binlog,才会产生文件,mysql 8.0 默认开启,开启后可以在 /var/lib/mysql (这是mysql默认数据存储路径,如果用户自己指定则另说) 目录下看到一系列 binlog.xxxxxx 的文件
在这里插入图片描述

binlog刷新

每次mysql重启 都会生成一个新的binlog文件,也可以使用命令来刷新binlog
1、进入mysql,使用flush logs,会看到新生成了新的binlog.000011文件
在这里插入图片描述
2、mysqladmin -uroot -p flush-logs(这里也需要root账号密码)
在这里插入图片描述

备份与恢复

以下是官网的关于备份与恢复的翻译:
完整备份是必要的,但创建它们并不总是很方便。它们会生成大型备份文件,并且需要时间来生成。它们不是最佳的,因为每次连续的完全备份都包括所有数据,即使是自上次完全备份以来没有更改的部分。先进行初始完全备份,然后进行增量备份会更高效。增量备份更小,生成时间更短。代价是,在恢复时,不能仅通过重新加载完整备份来恢复数据。您还必须处理增量备份以恢复增量更改
官网关于备份恢复的链接
简而言之就是2种方式,完整和增量,优缺点也如上所述,下面描述2种方式的使用

完整备份与恢复

完整备份就是将所有数据以表的形式进行保存

备份

命令

mysqldump --all-databases --master-data --single-transaction > back_20220806_112100.sql

备份的同时刷新binlog文件

mysqldump --single-transaction --flush-logs --master-data=2 --all-databases > back_20220806_112100.sql

在这里插入图片描述
mysqldump 指令选项说明

恢复

如何恢复

执行指令

mysql <  back_20220806_112100.sql

如果需要密码则

mysql -uroot -p <  back_20220806_112100.sql

该指令相当于执行了备份文件中的sql语句。

可以先可以查看 备份文件,发现里面基本是以下语句:删除表,创建表,数据的插入,显然是以表为单位来备份的,恢复时也是以表来恢复的
因此可以得出结论:在利用备份文件进行数据恢复时,会恢复备份前的所有表数据,但不包括备份后新增加的表,新增的表有以下2中情况:
1、同一个数据库存在相同的表则被则会被覆盖
2、同一个数据库存在不同的表则忽略,因为备份文件中不含任何对该表的操作
在这里插入图片描述

增量恢复

备份

前面我们已经描述过 binlog是一个数据修改记录的文件,默认一个binlog文件代表一次运行的所有数据修改记录,然后也可以使用命令强制生成一个新的binlog文件作为新的起点来记录数据修改过程,因此增量备份其实是自动的,就是一个个binlog文件
在这里插入图片描述

恢复

恢复的前提是要备份,完整备份和增量备份在上面已经描述清楚,因此数据恢复就是利用备份文件+binlog文件来做任意回滚

举个例子,执行备份指令

mysqldump --single-transaction --flush-logs --master-data=2 --all-databases > back_20220806_153500.sql

生成备份文件以及新的binlog文件,从000005开始的binlog文件都是back_20220806_153500.sql备份文件的增量文件
在这里插入图片描述
在上面的基础上(生成了back_20220806_153500.sql 以及新的binlog.000005),现在做一个简单测试来验证数据恢复,分为几个步骤

  • 步骤1、新增一个数据库incrementTestDatabase,再添加一个表incrementTestTable,包含了id、test字段,以及一条数据(1,“test1”)
  • 步骤2、刷新binlog日志
  • 步骤3、删除incrementTestTable,在创建一个incrementTestTable表包含了id、test字段,以及一条数据(2,“test2”)
  • 步骤4、恢复成1中的数据(1,“test1”)
  • 步骤5、恢复成3中的数据(2,“test2”)
    开始测试
    执行步骤1,2效果
    在这里插入图片描述在这里插入图片描述
    执行步骤3后
    在这里插入图片描述
    现在我们开始执行步骤4
    显然我们知道
    binlog.000005中包含了数据(1,“test1”)的新建
    binlog.000006中包含了表的删除及(2,“test2”)的新建
    因此要恢复到步骤1,只需要back_20220806_153500.sql + binlog.000005
    先恢复备份
mysql -uroot -p <  back_20220806_153500.sql

备份基础上恢复修改记录

mysqlbinlog binlog.000005 | mysql -uroot -p

结果如下,与预料中的一样
在这里插入图片描述

现在我们开始执行步骤5,在步骤4的基础上,恢复binlog.000006

mysqlbinlog binlog.000006 | mysql -uroot -p

结果如下,与预料中的一样
在这里插入图片描述


http://www.ppmy.cn/news/1039207.html

相关文章

图数据库_Neo4j基于docker服务版安装_Neo4j Desktop桌面版安装---Neo4j图数据库工作笔记0004

然后我们来看看如何用docker来安装Neo4j community server 首先去执行docker pull neo4j:3.5.22-community 去拉取镜像 然后执行命令就可以安装了 可以用docker ps查看一下 看看暴露了哪些端口 然后再看一下访问一下这个时候,要用IP地址了注意 然后再来看一下安装Desktop 去下…

算法通关村第九关 | 二叉树查找和搜索树原理

1. 二分查找的扩展问题 1.1山脉数组的巅峰索引 LeetCode852&#xff1a;题目核心意思是在数组中&#xff0c;从0到i是递增的&#xff0c;从i1到数组最后是递减的&#xff0c;让你找到这个最高点。 三种情况&#xff1a; mid在上升阶段的时候&#xff0c;满足arr[mid] > a…

.net core发布到IIS上出现 HTTP 错误 500.19

1.检查.net core 环境运行环境是否安装完成&#xff0c;类似如下环境 2.IIS是否安装全 本次原因就是IIS未安装全导致的 按照网上说的手动重启iis&#xff08;iisreset&#xff09;也不行

VTK vtkOBBTree 有向包围盒

vtkOBBTree 有向包围盒 vtkOBBTree是一个包围盒的树&#xff0c;它将体的每个cell分割到每个小的包围盒中&#xff0c;由SetNumberOfBuckets确定每个盒中放多少个 Cell。建立一个vtkOBBTree要先设定DataSet,SetDataSet。然后调用BuildLocator。包围盒精细程度由递归深度 (Max…

04- 串口

串口 串口波特率的计算串口操作常用的库函数(省略函数入口参数)串口配置的一般步骤&#xff1a;串口的引脚配置时的模式&#xff1a;示例 串口 常用的寄存器&#xff1a;还有USART_CRx&#xff0c;x1/2/3&#xff08;控制寄存器&#xff0c;作用&#xff1a;相关的中断使能&…

JVM参数配置推荐

以下是一些常见的JVM参数配置推荐&#xff0c;适用于大多数应用程序&#xff1a; -Xms256m: 设置JVM初始分配的堆内存大小为256MB。 -Xmx1024m: 设置JVM最大可分配的堆内存大小为1024MB。 -Xmn512m: 设置新生代的大小为512MB。 -Xss1024k: 设置每个线程的堆栈大小为1024KB。 -…

pprof 三把刀

pprof 三把刀 看内存 go tool pprof http://127.0.0.1:6060/debug/pprof/heap?seconds30 看cpu go tool pprof http://127.0.0.1:6060/debug/pprof/profile?seconds30 看协程 go tool pprof http://localhost:6060/debug/pprof/goroutine 端口是自定义的&#xff0c;看看…

PAT 1013 Battle Over Cities

个人学习记录&#xff0c;代码难免不尽人意。 It is vitally important to have all the cities connected by highways in a war. If a city is occupied by the enemy, all the highways from/toward that city are closed. We must know immediately if we need to repair a…