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日志恢复数据
目录 一、开启二进制日志 二、检查二进制日志是否开启 三、使用二进制日志备份和恢复 使用二进制日志备份恢复前先创建备份: 应用二进制日志: 扩展用法: 四、常见命令和操作 五. 使用 mysqlbinlog 工具查看二进制日志 1. 查看二进制…...
Linux网络命令——netstat
netstat是Linux系统中非常有用的网络工具,被称为是网络监控中的军工刀,足见其地位。 传统上,它用于问题确定而不是性能测量,但是也可用于查看网络上的流量,以确定性能问题是否由于网络阻塞引起。 netstat用于显示与I…...
手机怎么压缩图片?通过三种压缩操作
手机怎么压缩图片?在智能手机日益普及的今天,拍照分享已成为日常生活的一部分。然而,高质量的照片往往占用较大的存储空间,且在网络上传输时速度较慢。那么,如何在手机上压缩图片呢?本文将介绍三种实用的手…...
分布式CAP、BASE理论务必了解一下
分布式系统理论是计算机科学中的一个重要分支,它关注如何设计和实现能够跨多个物理或逻辑位置运行的系统。在分布式系统中,CAP定理和BASE理论是两个非常著名的理论,它们分别描述了分布式系统设计中的一些基本约束和原则。 CAP定理 CAP定理&…...
spring最常用的注解
核心注解 Component 描述:将类标记为 Spring 组件,以便自动检测。用途:通常用于标注服务类或其他支持类。 Controller 描述:将类标记为 Spring MVC 控制器。用途:用于处理 Web 请求。 Service 描述:将类标记…...
Docker:认识镜像仓库及其命令
文章目录 Docker Registry什么是Docker Registry 镜像仓库工作机制使用流程实际使用方法仓库的拉取机制 常用的镜像仓库---DockerHub什么是DockerHub私有仓库 镜像仓库命令docker logindocker pulldocker pushdocker searchdocker logout Docker Registry 什么是Docker Regist…...
使用 Django 创建 App
文章目录 步骤 1:创建 Django 项目步骤 2:创建 App步骤 3:配置 App步骤 4:编写代码步骤 5:运行服务器 在 Django 中,App 是组织代码的基本单元,它可以包含模型、视图、模板等组件,帮…...
java定时任务 设置开始时间、结束时间;每周一、四、六执行;并且隔n周执行。最后计算所有执行时间
java定时任务 设置开始时间、结束时间;每周一、四、六执行;并且隔n周执行。最后计算所有执行时间) 定时任务需求程序设计依赖引入程序一、计算开始时间那周的周一时间二、根据executeTime和weekList.get(n),计算每个cron表达式。三、根据一和…...
linux的持续性学习
安装php 第一步:配置yum源 第二步:下载php。 yum install php php-gd php-fpm php-mysql -y 第三步:启动php。 systemctl start php-fpm 第四步:检查php是否启动 lsof -i :9000 计划任务 作用&am…...
MyBatis:概念简章
1. hello world 配置文件:mybatis-config.xml(核心配置文件,用于配置连接的数据库信息)(一般一个)XxxMapper.xml 该文件用于操作表(执行sql语句)(一张表一个)…...
有什么接码平台比较好用的
接码平台,也被称作短信接收平台或虚拟号码服务,主要是提供可以接收短信验证码的虚拟手机号码服务。这种服务通常被用于需要在网络平台上注册大量账号的情况,如营销推广、应用测试或是海淘购物时所需的手机号验证。下面将推荐几个较为好用的接…...
微服务之负载均衡器
1、负载均衡介绍 负载均衡就是将负载(工作任务,访问请求)进行分摊到多个操作单元(服务器,组件)上 进行执行。 根据负载均衡发生位置的不同, 一般分为服务端负载均衡和客户端负载均衡。 服务端负载均衡指的是发生在服务提供者一方ÿ…...
《时间管理九段》前四阶段学习笔记
文章目录 0.何谓时间管理九段0.1 第一段--把一件事做好0.2 第二段--把一天过好0.3 第三段--掌控两周内的固定日程0.4 第四段--掌控两周内的弹性时间0.5 第五段--科学管理3个月的项目事件0.6 第六段--实现一年的梦想0.7 第七段--明确一生的愿景0.8 第八段--正确补充和释放自身能…...
LLVM Cpu0 新后端5 静态重定位 动态重定位
想好好熟悉一下llvm开发一个新后端都要干什么,于是参考了老师的系列文章: LLVM 后端实践笔记 代码在这里(还没来得及准备,先用网盘暂存一下): 链接: https://pan.baidu.com/s/1yLAtXs9XwtyEzYSlDCSlqw?…...
旅游卡是项目还是骗局?还是实实在在的旅游项目?
旅游卡是一个实实在在的旅游项目,而非骗局。以下是我对旅游卡项目的几点分析: 项目实质: 旅游卡项目是由国内外多条旅游线路整合而成的卡片,为旅游者提供方便、实惠的旅游方式。持有旅游卡,可以完全抵销跟团游线路中的…...
大模型+RAG,全面介绍!
1 、介绍 大型语言模型(LLMs)在处理特定领域或高度专业化的查询时存在局限性,如生成不正确信息或“幻觉”。缓解这些限制的一种有前途的方法是检索增强生成(RAG),RAG就像是一个外挂,将外部数据…...
智能合约中存储和计算效率漏洞
存储和计算效率 不当的存储结构或计算密集型操作可能导致高Gas费用和性能瓶颈。示例场景:频繁读取和写入大数组 假设你正在构建一个投票系统,其中每个提案都有一个独立的计票器。为了实现这一点,你可能最初会考虑使用一个映射(m…...
软件测试基础知识总结
🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、软件测试概述 1、什么是软件 定义:计算机系统中与硬件相互依存的一部分&#x…...
C语言 | Leetcode C语言题解之第143题重排链表
题目: 题解: 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…...
探寻性能优化:如何衡量?如何决策?
目录 一、衡量指标说明 (一)响应时间(Response Time) 平均响应时间(Average Response Time) 百分位数响应时间(Percentile Response Time) (二)吞吐量&a…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
