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…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...
