MySQL:增量备份和恢复(5)

news2025/2/23 10:08:55

介绍

增量备份的特点
MySQL数据库二进制日志对备份的意义

增量备份的优点是没有重复数据,备份量不大,时间短。缺点也很明显,需要上次完全备份及完全备份之后所有的增量备份才能恢复,反推恢复,操作较为繁琐。

Mysql没有提供增量备份的方法,但是可以通过二进制日志间接实现增量备份。

二进制日志对备份的意义如下:
1)二进制日志保存了所有更新或者可能更新数据库的日志文件

2)二进制日志在启动Mysql服务器后开始记录,并在文件达到max_binlog_size 所设置的大小或者接收到的flush logs命令后重新创建新的日志文件。

3)只需要定时执行flush logs 方法重新创建新的日志,生成二进制文件序列,并及时把这些日志保存到安全的地方就完成了一个时间段的增量备份。

增量恢复的场景:
1)人为的SQL语句破坏了数据库

2)在进行下一次全备份之前发生系统故障导致数据库的数据丢失

3)在主从架构中,主库数据发生了故障。
根据数据丢失的情况可以分为两类:
1)只丢失了完全备份之后更改的数据
2)完全备份之后丢失所有数据


开始实现增量备份 

创建环境 

我们先去MySQL主文件中开启二进制日志功能

vim my.cnf

加一句这个

log_bin=/usr/local/mysql/mysql-bin

然后重启mysql

systemctl restart mysqld

就发现多出两个文件夹上面那个000001结尾的就是二进制文件

 

 我们再去数据库里

aaa库下创建了一个tarro的表内容为姓名和年龄

 

在这我做一下完全备份

然后去aaa库里tarro原有基础上再插入内容

我们在原有的基础上又插入了6用户

这时我们直接刷新一下二进制日志

flush logs;

 

现在我们就可以去模拟数据库被摧毁了

 

我们在aaa库里什么都没了


恢复

这时我们先去使用一下完全备份

 mysql -uroot -p aaa< /backup/aaa-tarro.sql 

 

 现在我们的的tarro数据库又回来了

增量备份的完全恢复 

但是内容是我么当时完全备份的时候内容,这时我就需要使用二进制日志去恢复备份了

我刚刚刷新了一下权限所以我刚刚上一次所有的操作都在000001中了,如果我做完操作再以刷新,我的这次所有操作就会全保存在000002中了 ,同时就会生成一个000003依次类推

mysqlbinlog mysql-bin.000001

弹出的内容就是上一次的操作所记录下来的

现在我将上一次的全部恢复

mysql]# mysqlbinlog --no-defaults mysql-bin.000001 | mysql -uroot -p

现在就全部恢复上来了


 基于位置恢复

基于数据编号

 现在我们再把tarro库删除,再次进行恢复

这次我不打算 恢复到aaa只恢复到王五结束

我们去使用       mysqlbinlog mysql-bin.000001

 

可以看到aaa上面的at为851

我们使用 

mysqlbinlog --no-defaults --stop-position='851' mysql-bin.000001 | mysql -uroot -p

 意思是我到851编号停止,我的851编号正好是aaa,所一就是到aaa停下,不再恢复

 

我们再次恢复到上一次完全备份

 

这次我不想恢复张三,李四,王五了想跳过他们,我可以使用

mysqlbinlog --no-defaults --start-position='851' mysql-bin.000001 | mysql -uroot -p

 意思为我从851编号开始恢复,这次恢复出的只有851以后信息

直接跳过了张三,李四,王五


基于日期恢复

其实和编号的差不多 

 我们执行了这条命令

mysqlbinlog mysql-bin.000001

可以看到要恢复的位置上有一个日期

我么再次恢复到上次完全备份

我还要到aaa结束 

可以看到2023-10-07  2:41:00 时间

mysqlbinlog --no-defaults --stop-datetime='2023-10-07 2:41:00' mysql-bin.000001 | mysql -uroot -p

同样想在aaa开始可以直接使用 

mysqlbinlog --no-defaults --start-datetime='2023-10-07 2:41:00' mysql-bin.000001 | mysql -uroot -p

 

这样就恢复成功了 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1064155.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

buildroot添加package包

本文通过一个简单的例子介绍如何在 RK3568的buildroot/package 目录下添加一个自己的 package&#xff08;软件包&#xff09; 一、开发源码工程 首先进入/app 目录下&#xff0c;在该目录下创建一个名为“mypackage”的文件夹&#xff0c;如下所示&#xff1a;   在 mypac…

LVGL_基础控件进度条bar

LVGL_基础控件进度条bar 1、创建进度条控件 // 创建一个 bar 组件(对象)&#xff0c;他的父对象是活动屏幕对象lv_obj_t *bar lv_bar_create(lv_scr_act()); LV_LOG_USER("lv_bar_get_value(bar) %d", lv_bar_get_value(bar));/* 设置位置 */ lv_obj_center(bar);…

Linux 安装字体

1.进入/usr/share/fonts路径&#xff0c;为了方便区分新安装的字体&#xff0c;最好单独创建文件夹 2.把需要安装的字体解压到自己创建的文件夹里面&#xff0c;这里要安装Hack 字体 3.输入以下三条命令如下图所示 ####三条命令要在字体路径下执行 sudo mkfontscale sudo mkfo…

【产品设计】如何开展你的B端产品需求调研

对于B端产品来说&#xff0c;需求调研是经常做而且很重要的一件事&#xff0c;只有对需求足够了解&#xff0c;才能设计出大众所喜欢的、市场所需要的好的产品。那么&#xff0c;应该如何开始你的需求调研呢&#xff1f;需求调研的执行过程又是怎样的&#xff1f;如何对结果进行…

快排(三种单趟排序法,递归非递归算法)

快排发明者:霍尔 (Sir Charles Antony Richard Hoare) 是一位英国计算机科学家。 计算机领域的爵士——托尼霍尔(Tony Hoare)(1934年1月11日出生),英文全称Sir Charles Antony Richard Hoare,常被称为Tony Hoare或者C. A. R. Hoare,1959年博士毕业于

Java方法:重复使用的操作可以写成方法哦

&#x1f451;专栏内容&#xff1a;Java⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;前路未远&#xff0c;步履不停 目录 一、方法的概念1、什么是方法&#xff1f;2、方法的定义3、方法调用的过程 二、方法重载1、重载的概念2、方法签名 在日常生活中…

elementui修改message消息提示颜色

/* el弹出框样式 */ .el-message {top: 80px !important;border: 0; }.el-message * {color: var(--white) !important;font-weight: 600; }.el-message--success {background: var(--themeBackground); }.el-message--warning {background: var(--gradientBG); }.el-message--…

按键精灵调用大漠插件源码例子

源码名称&#xff1a;按键精灵调用大漠插件例子源码完整备注 源码名称&#xff1a;按键精灵调用大漠插件例子源码完整备注 蓝奏下载&#xff1a;https://wwi.lanzoup.com/iuffr0riiowf 飞书网盘&#xff1a;Docs

国庆作业 day 2

select实现服务器并发 #include<myhead.h> #define ERR_MSG(msg) do{\fprintf(stderr, "__%d__:", __LINE__); \perror(msg);\ }while(0)#define PORT 8888 //端口号&#xff0c;范围1024~49151 #define IP "192.168.0.103" //本…

VUE3照本宣科——package.json与vite.config.js

VUE3照本宣科——package.json与vite.config.js VUE3照本宣科系列导航 前言一、package.json1.name2.version3.private4.scripts5.dependencies6.devDependencies 二、vite.config.js1.plugins2.resolve.alias3.base4.mode 三、VUE3照本宣科系列总结 VUE3照本宣科系列导航 1.VU…

ZRTP交叉编译与移植

1 ZRTP源码下载 这里采用的是libzrtp来自于freeswitch&#xff1a;libs/libzrtp。 2 ZRTP交叉编译 zrtp编译比较简单&#xff0c;采用configure进行编译在根目录心中zrtp编译脚本&#xff0c;只需要指定交叉编译工具链和安装地址即可。脚本如下所示&#xff1a; unset CC C…

文心一言 VS 讯飞星火 VS chatgpt (107)-- 算法导论10.1 5题

五、用go语言&#xff0c;栈插入和删除元素只能在同一端进行&#xff0c;队列的插入操作和删除操作分别在两端进行&#xff0c;与它们不同的&#xff0c;有一种双端队列(deque)&#xff0c;其插入和删除操作都可以在两端进行。写出4个时间均为 O(1)的过程&#xff0c;分别实现在…

Python之字符串分割替换移除

Python之字符串分割替换移除 分割 split(sepNone, maxsplit-1) -> list of strings 从左至右sep 指定分割字符串&#xff0c;缺省的情况下空白字符串作为分隔符maxsplit 指定分割的次数&#xff0c;-1 表示遍历整个字符串立即返回列表 rsplit(sepNone, maxsplit-1) -> …

【熬夜爆肝版】JAVA基础入门专栏——1.JAVA开发入门

JAVA开发入门 1、Java概述1&#xff09;起源2&#xff09;特点3&#xff09;应用领域 2、JDK1&#xff09;定义2&#xff09;作用3&#xff09;组成4&#xff09;JDK版本与兼容性5&#xff09;JDK的安装与配置6&#xff09;JDK的发行版 3、系统环境变量1&#xff09;定义2&…

【Java项目推荐之黑马头条】你的登录鉴权业务是怎么实现的?

前言 在学习Java的路上还是遇到了很多不错的好项目的&#xff0c;今天分享给大家&#xff0c;希望能对大家面试有所帮助&#xff01; 后续会继续推荐其他好的项目&#xff0c;这次推荐的是B站开源的视频黑马头条项目&#xff0c;来吧学会它一起去虐面试官&#xff01;&#x…

【C语言初阶】初识C语言

目录 一、什么是C语言 二、第一个C语言程序 三、数据类型 类型的使用&#xff1a; 四、变量、常量 4.1 定义变量的方法 4.2 变量的命名 4.3 变量的分类 4.4 变量的使用 4.5 变量的作用域和生命周期 4.5.1 作用域 4.5.2 生命周期 4.6 常量 五、字符串转义字符注释 …

【计算机组成 课程笔记】7.2 DRAM和SRAM

课程链接&#xff1a; 计算机组成_北京大学_中国大学MOOC(慕课) 7 - 2 - 702-DRAM和SRAM&#xff08;13-22--&#xff09;_哔哩哔哩_bilibili 从【计算机组成 课程笔记】7.1 存储层次结构概况_Elaine_Bao的博客-CSDN博客中&#xff0c;我们了解到&#xff1a;SRAM比较快&#x…

x64内核实验5-API进0环

x64内核实验5-API进0环 今天开始我们来分析系统api进0环的过程 系统调用3环部分的过程分析 先写一个应用程序然后我们调用一个readprocessmemory的系统api #include <Windows.h> #include <stdio.h>DWORD32 testVal 111;int main() {HANDLE h GetCurrentProc…

DatenLord前沿技术分享 No.36

达坦科技专注于打造新一代开源跨云存储平台DatenLord&#xff0c;通过软硬件深度融合的方式打通云云壁垒&#xff0c;致力于解决多云架构、多数据中心场景下异构存储、数据统一管理需求等问题&#xff0c;以满足不同行业客户对海量数据跨云、跨数据中心高性能访问的需求。在本周…

ChatGPT已进化到会看图和说话了,上教程

HI&#xff0c;同学们&#xff0c;我是赤辰&#xff0c;本期是第14篇AI工具类教程&#xff0c;文章底部准备了粉丝福利&#xff0c;看完后可领取&#xff01; ChatGPT又又又升级&#xff01;这次是支持语音聊天和图像问答。 这意味着用户现在除了键盘文本输入外&#xff0c;还可…