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

MySQL bin-log日志恢复数据

目录

一、开启二进制日志

二、检查二进制日志是否开启

三、使用二进制日志备份和恢复

使用二进制日志备份恢复前先创建备份:

应用二进制日志:

扩展用法:

四、常见命令和操作

五. 使用 mysqlbinlog 工具查看二进制日志

1. 查看二进制日志的内容

2. 解码二进制日志并将内容保存到文件

3. 查看特定时间范围内的日志

4. 查看特定位置范围内的日志

5. 查看所有二进制日志文件的内容

6. 只查看头部信息

7. 使用过滤条件查看特定表的日志


在 MySQL 中,二进制日志(Binary Log, bin-log)是用于记录所有更改数据库数据的 SQL 语句的日志文件。开启和管理二进制日志可以用于数据恢复、主从复制等场景。默认是关闭的。

一、开启二进制日志

编辑MySQL配置文件(/etc/my.cnf):
在 [mysqld] 部分添加以下行:

log-bin=mysql-bin
binlog-format=ROW
server-id=1
  • log-bin:指定二进制日志文件的名称(这里是 mysql-bin)。
  • binlog-format:设置二进制日志记录的格式(ROW 是推荐的格式)。
  • server-id:服务器唯一标识符(用于主从复制)。

重启MySQL服务
使更改生效,重启MySQL服务:

systemctl restart mysqld

二、检查二进制日志是否开启

登录MySQL

   mysql -u root -p[密码]

检查二进制日志状态

SHOW VARIABLES LIKE 'log_bin';
SHOW BINARY LOGS;
  • 通过 SHOW VARIABLES LIKE 'log_bin'; 验证 log_bin 是否为 ON
  • 通过 SHOW BINARY LOGS; 检查现有的二进制日志文件。

三、使用二进制日志备份和恢复

使用二进制日志备份恢复前先创建备份


在定期备份数据时,创建物理导出(如 mysqldump)并记录此时的二进制日志位置。

mysqldump -u root -p[密码] --all-databases --single-transaction --flush-logs --master-data=2 > backup.sql
  • --single-transaction:在一个事务中执行,确保一致性。
  • --flush-logs:刷新日志文件,开始新的二进制日志。
  • --master-data=2:在导出文件中注释的形式记录二进制日志的文件名和位置。

应用二进制日志


假设从基于时间点(时间戳)恢复,不限定于某个特定的库或表:

mysqlbinlog --start-datetime="2024-06-10 10:00:00" --stop-datetime="2024-06-10 12:00:00" mysql-bin.000001 | mysql -u root -p

或者基于位置点恢复,不限定于某个特定的库或表:

mysqlbinlog --start-position=107 --stop-position=2345 mysql-bin.000001 | mysql -u root -p

注:也可以在上面命令末尾加上一个库名,表示这些数据要在指定的库中执行

扩展用法:

指定库的操作

直接指定库在 MySQL 中解析和应用二进制日志时,可以使用 --database 选项:

mysqlbinlog --start-datetime="2024-06-10 10:00:00" --stop-datetime="2024-06-10 12:00:00" --database=your_database mysql-bin.000001 | mysql -u root -p
 

在这条命令中,--database=your_database 确保只有与 your_database 数据库相关的 SQL 语句被解析和执行。

针对特定库或表解析日志

例如,假设只关心 test_db 数据库中的操作,将想要的生成sql语句文件

mysqlbinlog --start-position=107 --stop-position=2345 mysql-bin.000001 | grep 'use `test_db`\|table_name' > filtered-log.sql

然后应用筛选后的 SQL 日志 

mysql -u root -p[密码] < filtered-log.sql

四、常见命令和操作

列出所有二进制日志文件

SHOW BINARY LOGS;

查看当前二进制日志文件和位置

SHOW MASTER STATUS;

清理旧的二进制日志

假设想删除前30天的二进制日志:

PURGE BINARY LOGS BEFORE DATE_SUB( NOW(), INTERVAL 30 DAY);

或者删除所有:

PURGE BINARY LOGS TO 'mysql-bin.010';

五. 使用 mysqlbinlog 工具查看二进制日志

1. 查看二进制日志的内容
mysqlbinlog mysql-bin.000001

这个命令会将 mysql-bin.000001 文件的内容输出到控制台,内容为可读的 SQL 语句。

2. 解码二进制日志并将内容保存到文件
mysqlbinlog mysql-bin.000001 > decoded-binlog.sql

这个命令会将 mysql-bin.000001 文件的内容解码,并将结果保存到 decoded-binlog.sql 文件中。

3. 查看特定时间范围内的日志
mysqlbinlog --start-datetime="2024-06-10 10:00:00" --stop-datetime="2024-06-10 12:00:00" mysql-bin.000001

这个命令会输出指定时间范围内的二进制日志内容。

4. 查看特定位置范围内的日志
mysqlbinlog --start-position=107 --stop-position=2345 mysql-bin.000001

这个命令会输出指定位置范围内的二进制日志内容。

5. 查看所有二进制日志文件的内容

如果有多个二进制日志文件,可以使用以下命令查看所有二进制日志文件的内容:

mysqlbinlog mysql-bin.000001 mysql-bin.000002 mysql-bin.000003

或者更方便的方法:

mysqlbinlog mysql-bin.0000*

6. 只查看头部信息

有时您可能只需要查看二进制日志文件的头部信息,可以使用 --base64-output=DECODE-ROWS -vv 选项。

mysqlbinlog --base64-output=DECODE-ROWS -vv mysql-bin.000001

7. 使用过滤条件查看特定表的日志

使用 mysqlbinlog 结合 grep 来筛选特定表的日志内容:

mysqlbinlog mysql-bin.000001 | grep -i "table_name"
8.查看当前二进制文件
SHOW MASTER STATUS\G;
mysql> show master status\G
*************************** 1. row ***************************File: mysql-bin.000002Position: 154Binlog_Do_DB: Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)输出结果说明:
File: 当前正在写入的二进制日志文件名。
Position: 二进制日志中的当前写入位置。复制从服务器将从这个位置开始读取日志。
Binlog_Do_DB: 配置中要求记录到日志的数据库名。
Binlog_Ignore_DB: 配置中要求忽略的数据库名。
Executed_Gtid_Set: 已执行的 GTID(全局事务 ID)集,如果开启了 GTID 基于二进制日志。

 

9. 会创建新的日志文件 
FLUSH LOGS;

 执行成功后,MySQL 会创建新的日志文件,每个启用了日志的类别(例如二进制日志、错误日志、慢查询日志)都将使用新的文件名来记录后续的日志信息。

具体用途

  • 二进制日志:生成一个新的二进制日志文件,现有的二进制日志文件会保留,可以用于恢复和备份操作。
  • 错误日志:重新启动 MySQL 错误日志文件。
  • 慢查询日志:重新启动慢查询日志文件。
  • 常规日志:重新启动常规查询日志文件。

 

扩展:刷新特定类型的日志 
  • 刷新二进制日志
FLUSH BINARY LOGS;
  • 刷新错误日志
FLUSH ERROR LOGS;
  • 刷新慢查询日志
FLUSH SLOW LOGS;
  • 刷新常规查询日志
FLUSH GENERAL LOGS;

相关文章:

MySQL bin-log日志恢复数据

目录 一、开启二进制日志 二、检查二进制日志是否开启 三、使用二进制日志备份和恢复 使用二进制日志备份恢复前先创建备份&#xff1a; 应用二进制日志&#xff1a; 扩展用法&#xff1a; 四、常见命令和操作 五. 使用 mysqlbinlog 工具查看二进制日志 1. 查看二进制…...

Linux网络命令——netstat

netstat是Linux系统中非常有用的网络工具&#xff0c;被称为是网络监控中的军工刀&#xff0c;足见其地位。 传统上&#xff0c;它用于问题确定而不是性能测量&#xff0c;但是也可用于查看网络上的流量&#xff0c;以确定性能问题是否由于网络阻塞引起。 netstat用于显示与I…...

手机怎么压缩图片?通过三种压缩操作

手机怎么压缩图片&#xff1f;在智能手机日益普及的今天&#xff0c;拍照分享已成为日常生活的一部分。然而&#xff0c;高质量的照片往往占用较大的存储空间&#xff0c;且在网络上传输时速度较慢。那么&#xff0c;如何在手机上压缩图片呢&#xff1f;本文将介绍三种实用的手…...

分布式CAP、BASE理论务必了解一下

分布式系统理论是计算机科学中的一个重要分支&#xff0c;它关注如何设计和实现能够跨多个物理或逻辑位置运行的系统。在分布式系统中&#xff0c;CAP定理和BASE理论是两个非常著名的理论&#xff0c;它们分别描述了分布式系统设计中的一些基本约束和原则。 CAP定理 CAP定理&…...

spring最常用的注解

核心注解 Component 描述&#xff1a;将类标记为 Spring 组件&#xff0c;以便自动检测。用途&#xff1a;通常用于标注服务类或其他支持类。 Controller 描述&#xff1a;将类标记为 Spring MVC 控制器。用途&#xff1a;用于处理 Web 请求。 Service 描述&#xff1a;将类标记…...

Docker:认识镜像仓库及其命令

文章目录 Docker Registry什么是Docker Registry 镜像仓库工作机制使用流程实际使用方法仓库的拉取机制 常用的镜像仓库---DockerHub什么是DockerHub私有仓库 镜像仓库命令docker logindocker pulldocker pushdocker searchdocker logout Docker Registry 什么是Docker Regist…...

使用 Django 创建 App

文章目录 步骤 1&#xff1a;创建 Django 项目步骤 2&#xff1a;创建 App步骤 3&#xff1a;配置 App步骤 4&#xff1a;编写代码步骤 5&#xff1a;运行服务器 在 Django 中&#xff0c;App 是组织代码的基本单元&#xff0c;它可以包含模型、视图、模板等组件&#xff0c;帮…...

java定时任务 设置开始时间、结束时间;每周一、四、六执行;并且隔n周执行。最后计算所有执行时间

java定时任务 设置开始时间、结束时间&#xff1b;每周一、四、六执行&#xff1b;并且隔n周执行。最后计算所有执行时间&#xff09; 定时任务需求程序设计依赖引入程序一、计算开始时间那周的周一时间二、根据executeTime和weekList.get(n),计算每个cron表达式。三、根据一和…...

linux的持续性学习

安装php 第一步&#xff1a;配置yum源 第二步&#xff1a;下载php。 yum install php php-gd php-fpm php-mysql -y 第三步&#xff1a;启动php。 systemctl start php-fpm 第四步&#xff1a;检查php是否启动 lsof -i :9000 计划任务 作用&am…...

MyBatis:概念简章

1. hello world 配置文件&#xff1a;mybatis-config.xml&#xff08;核心配置文件&#xff0c;用于配置连接的数据库信息&#xff09;&#xff08;一般一个&#xff09;XxxMapper.xml 该文件用于操作表&#xff08;执行sql语句&#xff09;&#xff08;一张表一个&#xff09;…...

有什么接码平台比较好用的

接码平台&#xff0c;也被称作短信接收平台或虚拟号码服务&#xff0c;主要是提供可以接收短信验证码的虚拟手机号码服务。这种服务通常被用于需要在网络平台上注册大量账号的情况&#xff0c;如营销推广、应用测试或是海淘购物时所需的手机号验证。下面将推荐几个较为好用的接…...

微服务之负载均衡器

1、负载均衡介绍 负载均衡就是将负载(工作任务&#xff0c;访问请求)进行分摊到多个操作单元(服务器&#xff0c;组件)上 进行执行。 根据负载均衡发生位置的不同&#xff0c; 一般分为服务端负载均衡和客户端负载均衡。 服务端负载均衡指的是发生在服务提供者一方&#xff…...

《时间管理九段》前四阶段学习笔记

文章目录 0.何谓时间管理九段0.1 第一段--把一件事做好0.2 第二段--把一天过好0.3 第三段--掌控两周内的固定日程0.4 第四段--掌控两周内的弹性时间0.5 第五段--科学管理3个月的项目事件0.6 第六段--实现一年的梦想0.7 第七段--明确一生的愿景0.8 第八段--正确补充和释放自身能…...

LLVM Cpu0 新后端5 静态重定位 动态重定位

想好好熟悉一下llvm开发一个新后端都要干什么&#xff0c;于是参考了老师的系列文章&#xff1a; LLVM 后端实践笔记 代码在这里&#xff08;还没来得及准备&#xff0c;先用网盘暂存一下&#xff09;&#xff1a; 链接: https://pan.baidu.com/s/1yLAtXs9XwtyEzYSlDCSlqw?…...

旅游卡是项目还是骗局?还是实实在在的旅游项目?

旅游卡是一个实实在在的旅游项目&#xff0c;而非骗局。以下是我对旅游卡项目的几点分析&#xff1a; 项目实质&#xff1a; 旅游卡项目是由国内外多条旅游线路整合而成的卡片&#xff0c;为旅游者提供方便、实惠的旅游方式。持有旅游卡&#xff0c;可以完全抵销跟团游线路中的…...

大模型+RAG,全面介绍!

1 、介绍 大型语言模型&#xff08;LLMs&#xff09;在处理特定领域或高度专业化的查询时存在局限性&#xff0c;如生成不正确信息或“幻觉”。缓解这些限制的一种有前途的方法是检索增强生成&#xff08;RAG&#xff09;&#xff0c;RAG就像是一个外挂&#xff0c;将外部数据…...

智能合约中存储和计算效率漏洞

存储和计算效率 不当的存储结构或计算密集型操作可能导致高Gas费用和性能瓶颈。示例场景&#xff1a;频繁读取和写入大数组 假设你正在构建一个投票系统&#xff0c;其中每个提案都有一个独立的计票器。为了实现这一点&#xff0c;你可能最初会考虑使用一个映射&#xff08;m…...

软件测试基础知识总结

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、软件测试概述 1、什么是软件 定义&#xff1a;计算机系统中与硬件相互依存的一部分&#x…...

C语言 | Leetcode C语言题解之第143题重排链表

题目&#xff1a; 题解&#xff1a; struct ListNode* middleNode(struct ListNode* head) {struct ListNode* slow head;struct ListNode* fast head;while (fast->next ! NULL && fast->next->next ! NULL) {slow slow->next;fast fast->next-&g…...

探寻性能优化:如何衡量?如何决策?

目录 一、衡量指标说明 &#xff08;一&#xff09;响应时间&#xff08;Response Time&#xff09; 平均响应时间&#xff08;Average Response Time&#xff09; 百分位数响应时间&#xff08;Percentile Response Time&#xff09; &#xff08;二&#xff09;吞吐量&a…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...

CTF show 数学不及格

拿到题目先查一下壳&#xff0c;看一下信息 发现是一个ELF文件&#xff0c;64位的 ​ 用IDA Pro 64 打开这个文件 ​ 然后点击F5进行伪代码转换 可以看到有五个if判断&#xff0c;第一个argc ! 5这个判断并没有起太大作用&#xff0c;主要是下面四个if判断 ​ 根据题目…...

基于 HTTP 的单向流式通信协议SSE详解

SSE&#xff08;Server-Sent Events&#xff09;详解 &#x1f9e0; 什么是 SSE&#xff1f; SSE&#xff08;Server-Sent Events&#xff09; 是 HTML5 标准中定义的一种通信机制&#xff0c;它允许服务器主动将事件推送给客户端&#xff08;浏览器&#xff09;。与传统的 H…...

MeanFlow:何凯明新作,单步去噪图像生成新SOTA

1.简介 这篇文章介绍了一种名为MeanFlow的新型生成模型框架&#xff0c;旨在通过单步生成过程高效地将先验分布转换为数据分布。文章的核心创新在于引入了平均速度的概念&#xff0c;这一概念的引入使得模型能够通过单次函数评估完成从先验分布到数据分布的转换&#xff0c;显…...