当前位置: 首页 > news >正文

mysql全量与增量备份

binlog日志: 从上一次全量备份到下一次全量备份直接产生的数据。

一、全备和增量备份介绍

1、全量备份:

备份所有数据库或只备份一个数据库,全量备份之后,全量备份之前的binlog日志就没用了,一般生产环境会保留3-7天的binlog日志

2、增量备份:

从上一次全量备份之后,再次产生的新的数据。对于mysql来说,binlog日志就是mysql的增量备份数据
增量备份条件:
(1) 开启 log-bin=mysql-bin
(2) 先执行mysql全备,全量备份的时候刷新binlog日志,保证生成新的binlog日志,这个新的binlog日志就是增量备份。 -F   [--flush-logs]

在这里插入图片描述
二、增量备份恢复必备条件

1、开启mysql log-bin 日志功能

[root@Oldboy ~]# grep log-bin /etc/my.cnf 
log-bin=mysql-bin

2、存在一份全量备份,加上全备之后的binlog增量备份

三、生产环境下模拟数据库增量备份与恢复
顺序:
开启binlog——全量备份——刷新binlog日志(增量备份)——恢复增量备份

1、数据库开启bin-log功能并重启mysql

[root@Oldboy ~]# cat /etc/my.cnf |grep log-bin
log-bin=mysql-bin
[root@Oldboy ~]# vi /etc/init.d/mysqld restart

2、创建数据库和表

[root@Oldboy ~]# mysql -uroot -p123456mysql> create database oldboy;mysql> use oldboy;mysql> CREATE TABLE `student` (   `id` int(4) NOT NULL AUTO_INCREMENT,   `name` char(20) NOT NULL,   PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;mysql> insert into student(id,name) values(1,'oldboy');mysql> select * from student;
+----+--------+
| id | name      |
+----+--------+
|  1 | oldboy    |
+----+--------+

3、mysqldump全量备份并刷新binlog日志

#某男孩(如果不做主从的话 --master-data可以不用加)
[root@Oldboy ~]# mysqldump  -uroot  -p'123456' --default-character-set=utf8  -A -B  -F  -x  --events --master-data=2   |gzip >/server/backup/$(date +%F)_all.sql.gz#网上查的
[root@Oldboy ~]# mysqldump -uroot -p'rocenmysql!niubi' --quick --events --all-databases  -B --flush-logs --delete-master-logs --single-transaction |gzip >/Data/mysql/$(date +%F)_all.sql.gz-A : --all-databases 备份所有数据库
-B :  还原的时候不用创建数据库了
-F  :  --flush-logs

4、在数据库oldboy中增加两条数据

[root@Oldboy ~]# mysql -uroot -p123456mysql> use oldboy;mysql> insert into student(id,name) values(100,'oldboy100');
Query OK, 1 row affected (0.01 sec)mysql> insert into student(id,name) values(101,'oldboy101');
Query OK, 1 row affected (0.01 sec)mysql> select * from student;
+-----+-----------+
| id  | name      |
+-----+-----------+
|   1 | oldboy    |
| 100 | oldboy100 |
| 101 | oldboy101 |
+-----+-----------+

5、由于某领导脑残,执行了drop database oldboy

[root@Oldboy ~]# mysql -uroot -p123456
mysql> drop database oldboy;
Query OK, 1 row affected (0.06 sec)

6、恢复之前删除的数据(最好让数据库停止写入)

(0) 拒绝任何人访问mysql
[root@Oldboy backup]# iptables -A INPUT -p tcp  --dport 3306 -j DROP (1) 查看全量备份之后产生的新的binlog日志
[root@Oldboy ~]# cd /server/backup/
[root@Oldboy backup]#  gzip -d 2016-05-24_all.sql.gz
通过vim,找到这一行 "CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000005', MASTER_LOG_POS=107;"
mysql-bin.000005:是全量备份之后产生的增量备份日志(2) 查看当前binlog
[root@Oldboy data]# ll mysql-bin.*
-rw-rw---- 1 mysql mysql     150 5月  24 03:38 mysql-bin.000001
-rw-rw---- 1 mysql mysql     663 5月  24 04:11 mysql-bin.000002
-rw-rw---- 1 mysql mysql     150 5月  24 04:13 mysql-bin.000003
-rw-rw---- 1 mysql mysql     599 5月  24 05:11 mysql-bin.000004
-rw-rw---- 1 mysql mysql     578 5月  24 05:14 mysql-bin.000005
-rw-rw---- 1 mysql mysql     114 5月  24 05:14 mysql-bin.index(3) 刷新当前binlog
[root@Oldboy ~]# mysql -uroot -p123456 -e "flush logs;"(4) 再次查看,确定恢复的目标范围是mysql-bin.000005
[root@Oldboy data]# ll mysql-bin.*
-rw-rw---- 1 mysql mysql     150 5月  24 03:38 mysql-bin.000001
-rw-rw---- 1 mysql mysql     663 5月  24 04:11 mysql-bin.000002
-rw-rw---- 1 mysql mysql     150 5月  24 04:13 mysql-bin.000003
-rw-rw---- 1 mysql mysql     599 5月  24 05:11 mysql-bin.000004
-rw-rw---- 1 mysql mysql     578 5月  24 05:14 mysql-bin.000005
-rw-rw---- 1 mysql mysql     324 5月  24 05:24 mysql-bin.000006
-rw-rw---- 1 mysql mysql     133 5月  24 05:24 mysql-bin.index(5) 将mysql-bin.000005   复制到 /server/backup
[root@Oldboy data]# cp -a mysql-bin.000005    /server/backup/(6) 利用 mysqlbinlog  将 mysql-bin.000005   导出为  .sql文件
[root@Oldboy backup]# mysqlbinlog mysql-bin.000005 > mysql-bin_000005.sql(7) 进入 binlog中删除  drop database  oldboy
[root@Oldboy backup]# cat mysql-bin_000005.sql 
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
drop database oldboy
/*!*/;
# at 192
#160524  5:15:19 server id 1  end_log_pos 281   Query   thread_id=11exec_time=0      error_code=0
SET TIMESTAMP=1464038119/*!*/;
create database oldgirl              删除这行,并保存
/*!*/;
# at 281
#160524  5:24:30 server id 1  end_log_pos 324   Rotate to mysql-bin.000007  pos: 4
DELIMITER ;(8) 恢复最近一次的全量备份
[root@Oldboy ~]# cd /server/backup/
[root@Oldboy backup]# mysql -uroot -p123456 < 2016-05-24_all.sql(9) 恢复增量备份(将全备之后的增量备份到出问题之间的binlog全部恢复,有几个恢复几个)
[root@Oldboy backup]# mysql -uroot -p123456 < mysql-bin_000005.sql (10) 也可以按时间恢复,vim进入binlog.sql中,只保留某个时间段的数据即可
主从情况下,只恢复主就可以了,从会自动同步主的binlog的

相关文章:

mysql全量与增量备份

binlog日志&#xff1a; 从上一次全量备份到下一次全量备份直接产生的数据。 一、全备和增量备份介绍 1、全量备份&#xff1a; 备份所有数据库或只备份一个数据库&#xff0c;全量备份之后&#xff0c;全量备份之前的binlog日志就没用了&#xff0c;一般生产环境会保留3-7天…...

“非法”操控lambda(python)

能过python解释器关卡即是合法脚本代码&#xff0c;偶尔的“违规”操控也是一种唯美。 (笔记模板由python脚本于2024年11月13日 11:18:21创建&#xff0c;本篇笔记适合熟悉python的lambda操控的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.pyth…...

UDP协议和TCP协议之间有什么具体区别?

UDP&#xff08;User Datagram Protocol&#xff09;和TCP&#xff08;Transmission Control Protocol&#xff09;是两种常见的网络传输协议&#xff0c;它们在数据传输中有着显著的区别和适用场景。理解它们的区别对于网络工程师、软件开发人员以及网络安全专家都是至关重要的…...

论文5—《基于改进YOLOv5s的轻量化金银花识别方法》文献阅读分析报告

论文报告&#xff1a;基于改进YOLOv5s的轻量化金银花识别方法 论文报告文档 基于改进YOLOv5s的轻量化金银花识别方法 论文报告文档摘要国内外研究现状国内研究现状国外研究现状 研究目的研究问题使用的研究方法试验研究结果文献结论创新点和对现有研究的贡献1. 目标检测技术2. …...

快手直播间采集教程,快手引流,快手截流,截流工具,直播间截流,快手直播间采集,获客系统,获客软件

功能&#xff1a; 1.输入快手直播间链接可一键监控直播间 2.可采集新进直播间的人 3.可采集直播间所有动作&#xff0c;包含&#xff1a;发弹幕的人和内容、送礼物的人和送的礼物、点亮爱心的人 4.可一键导出新进直播间的快手ID 5.可一键导出直播间动作列表&#xff0c;也可以筛…...

探索MoviePy:Python视频编辑的瑞士军刀

文章目录 &#x1f3ac; 探索MoviePy&#xff1a;Python视频编辑的瑞士军刀第一部分&#xff1a;背景介绍第二部分&#xff1a;MoviePy是什么&#xff1f;第三部分&#xff1a;如何安装MoviePy&#xff1f;第四部分&#xff1a;MoviePy的基本函数使用方法1. 视频剪辑2. 视频拼接…...

mysql 实现分库分表之 --- 基于 MyCAT 的分片策略详解

引言 在我们日常工作的项目中&#xff0c;特别是面向 C 端用户的产品&#xff0c;随着业务量的逐步扩大&#xff0c;数据量也呈指数级增长。为了应对日益增长的数据库压力&#xff0c;数据库优化已成为项目中不可或缺的一环&#xff0c;而分库分表则是海量数据优化方案中的重要…...

Opencascade基础教程(14): 一个模型显示问题

如果显示模型时出现如图情况&#xff0c;正对屏幕的平面特别亮&#xff0c;只需要设置材质为非金属就行。 //创建box并显示TopoDS_Shape aShape BRepPrimAPI_MakeBox(100, 100, 100);Handle(AIS_Shape) aisShpae new AIS_Shape(aShape);aisShpae->SetDisplayMode(AIS_Shad…...

ISP——你可以从这里起步(二)

接上一篇&#xff0c;上一篇是原理篇&#xff0c;这一篇是实战篇&#xff0c;为了实现下面框图中的不完美ISP。 第一章 做一张RAW图自己用 不是所有的人都能获得raw图&#xff0c;即使获得了raw图也需要对应的sensor参数才能把它用起来&#xff0c;所以我找了一条野路子可以把…...

Qt / Qt Quick程序打包的一些坑 (四)

【写在前面】 打包方法见 Qt / Qt Quick程序打包的方法。 这里是再次记录一些坑。 【正文开始】 直接进入正题&#xff1a; 在 Qt5 中&#xff0c;如果我们的 Qml 中使用了【Qt Shapes】模块&#xff0c;那么在打包的时候&#xff0c;会缺少Qt5QuickShapes.dll。 然后&#xff…...

《传统视觉算法在视觉算法中的地位及应用场景

一、引言 在计算机视觉领域的发展历程中&#xff0c;传统视觉算法扮演了至关重要的角色。尽管近年来深度学习算法在视觉任务中取得了巨大的成功&#xff0c;但传统视觉算法依然具有不可替代的地位。传统视觉算法通常基于数学模型和手工设计的特征&#xff0c;具有计算效率高、…...

老老实实干一辈子程序员是没出息的!这本证书你早该学!

一、程序员有没有必要学软考&#xff1f; 当然有&#xff0c;因为你不可能一辈子都是程序员。 你了解或者接触过30岁、35岁以上的程序员去向吗&#xff1f; 我毕业快十年了&#xff0c;当初正赶上互联网时代的浪潮&#xff0c;好几个学计算机的同学毕业后去了一线城市或者深…...

鸿蒙next版开发:相机开发-录像(ArkTS)

在HarmonyOS 5.0中&#xff0c;ArkTS提供了一套完整的API来管理相机功能&#xff0c;特别是录像功能。本文将详细介绍如何在ArkTS中实现录像功能&#xff0c;并提供代码示例进行详细解读。 录像功能开发步骤 1. 导入相关接口 首先&#xff0c;需要导入相机相关的接口&#x…...

闯关leetcode——3206. Alternating Groups I

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/alternating-groups-i/description/ 内容 There is a circle of red and blue tiles. You are given an array of integers colors. The color of tile i is represented by colors[i]: colors[i…...

多个摄像机画面融合:找到同一个目标在多个画面中的伪三维坐标,找出这几个摄像头间的转换矩阵

搞算法&#xff0c;重要的是解决问题的思想&#xff0c;不要再局限于语言、框架、性能&#xff01;&#xff01;&#xff01; 要解决的问题是&#xff1a;在某一个摄像头画面中&#xff0c;目标会被遮挡或者丢失&#xff0c;但在另外一个摄像机画面中&#xff0c;目标完整&…...

Three.js性能优化和实践建议

Three.js 是一个功能强大的 3D 引擎&#xff0c;当场景足够大的时候&#xff0c;就会出现卡顿的现象&#xff0c;首先要保证电脑的性能够用&#xff0c;然后看看下面方法&#xff0c;帮助你提高应用的运行效率。 1. 使用 stats.js 监视性能 在进行任何优化之前&#xff0c;首…...

C#入门 023 什么是类(Class)

什么是“类” 是一种数据结构 是一种数据类型 代表现实世界中的“种类” 构造器和析构器 析构器 析构器&#xff08;Destructor&#xff09;是一种特殊的成员方法&#xff0c;用于在对象被垃圾回收器&#xff08;Garbage Collector, GC&#xff09;回收之前执行清理操作。…...

一篇Spring Boot 笔记

一、Spring Boot 简介 Spring Boot 是一个用于创建独立的、基于 Spring 的生产级应用程序的框架。它简化了 Spring 应用的初始搭建和开发过程&#xff0c;通过自动配置等功能&#xff0c;让开发者能够快速地构建应用&#xff0c;减少了大量的样板代码和复杂的配置。 二、核心特…...

一生一芯 预学习阶段 NEMU代码学习(2)

接上回&#xff1a;一生一芯 预学习阶段 NEMU代码学习&#xff08;1&#xff09; 上次说到这里 static int cmd_c(char *args) {cpu_exec(-1);return 0; } 当输入c时&#xff0c;会执行&#xff1a;cpu_exec(-1); void cpu_exec(uint64_t n) {g_print_step (n < MAX_IN…...

《手写Spring渐进式源码实践》实践笔记(第二十章 实现简单ORM框架)

文章目录 第二十章 简单ORM框架实现背景技术背景基本概念工作原理优点缺点常见的ORM框架 业务背景 目标设计实现代码结构类图实现步骤 测试事先准备属性配置文件测试用例(selectOne)测试结果测试用例(selectList)测试结果 总结 第二十章 简单ORM框架实现 背景 技术背景 ORM&…...

DALL·E Mini实战指南:轻量级文本生成图像的平民化落地

1. 项目概述&#xff1a;这不是“另一个AI画图工具”&#xff0c;而是一次轻量级生成式AI的平民化实践Dalle Mini Is Amazing — And You Can Use It! 这句话乍看像社交媒体上随手转发的惊叹&#xff0c;但拆开来看&#xff0c;它其实精准锚定了三个关键信息点&#xff1a;Dall…...

谷歌 AI Studio 一下午开发三款应用,游戏体验却差强人意?

谷歌 AI Studio 助力开发应用 昨天&#xff0c;我开发出了自己的第一款 Android 应用程序&#xff0c;紧接着又做了两个&#xff0c;一个下午就完成了三款应用。其中一款应用&#xff0c;我在网页浏览器里输入 148 个单词后&#xff0c;十分钟后手机上就有了新应用。开启手机 U…...

AI Agent智能体技术:从问答到执行的范式革命

标签:AI Agent、大模型、智能体、LangChain、ReAct、Function Calling 📖 前言 2026年5月20日,谷歌I/O 2026大会在美国加州山景城开幕。谷歌CEO桑达尔皮查伊(Sundar Pichai)在大会上宣布:“我们已正式进入’智能体Gemini时代’。”就在同一天,百度Create 2026大会上,…...

IPD咨询洞察:企业前后端为什么总是拧巴?IPD给出了答案

很多企业有一个共同的困境&#xff1a;执行力不差&#xff0c;但结果总差那么一口气。产品做出来了&#xff0c;却没有竞争力&#xff1b;战略定下来了&#xff0c;却落不到产品上&#xff1b;研发埋头苦干&#xff0c;市场却说卖不动——前端和后端始终拧巴&#xff0c;内耗比…...

XUnity Auto Translator:打破语言壁垒的Unity游戏翻译解决方案

XUnity Auto Translator&#xff1a;打破语言壁垒的Unity游戏翻译解决方案 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾经因为语言障碍而错过精彩的Unity游戏&#xff1f;面对日文、韩文或其他…...

远程办公时代,如何防止公司机密被截屏泄露?

远程办公已经成为很多企业的常态&#xff0c;但随之而来的信息安全问题也日益突出。其中&#xff0c;截屏泄露是最常见也最难防范的一种。员工可以轻易地将聊天记录、文件内容截屏保存&#xff0c;然后转发给他人&#xff0c;而企业却很难察觉和追踪。【图片1】 传统的防截屏方…...

植树的人数

include<iostream> using namespace std; int main() {int a ,x,y;cin>>a>>x>>y;for(int i 1;i<(a-(xy))/3;i){int j (a-i*x)/3;if(i*xj*y100){cout<<i<<" "<<j<<endl;}}return 0; }买糕点#include<iostream&…...

【芯片测试】:SmarTest 开发环境入门

SmarTest 开发环境入门&#xff1a;Eclipse IDE 集成与工作区管理系列&#xff1a; Advantest V93000 SmarTest 8 核心概念解析&#xff5c;第 1 篇&#xff08;共 8 篇&#xff09; 适合读者&#xff1a; 初次接触 SmarTest 的测试工程师、ATE 软件开发者前言 很多工程师第一次…...

别再让FFT精度拖后腿了!手把手教你用三点插值法把频率估计误差降到最低

别再让FFT精度拖后腿了&#xff01;手把手教你用三点插值法把频率估计误差降到最低 在音频调谐器里校准乐器音高时&#xff0c;工程师发现440Hz的标准音高在1024点FFT中总是显示为439.2Hz&#xff1b;5G基站接收端解调时&#xff0c;载波频率的微小偏移导致误码率飙升&#xff…...

轮式机器人里程计误差分析与精度提升实战指南

1. 项目概述&#xff1a;从轮子转动到空间定位轮式移动机器人&#xff0c;无论是工厂里的AGV小车、仓库里的分拣机器人&#xff0c;还是家用的扫地机器人&#xff0c;它们要完成自主移动&#xff0c;第一个要回答的哲学问题就是&#xff1a;“我在哪&#xff1f;” 而里程计&am…...