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;

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

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

相关文章

数据结构笔记 线性表的查找 顺序,折半,分块查找

顺序查找&#xff1a;从头找到尾&#xff0c;或者从尾找到头 顺序查找的性能&#xff1a; 其中&#xff0c;辅助空间的O&#xff08;1&#xff09;用于存放哨兵的 折半查找&#xff1a;向下取整&#xff1a;指当计算的结果不为整数时取小于计算结果的整数。 折半查找的性能&am…

Magnet pro for mac v2.14.0中文激活版:高效窗口管理工具

Magnet for Mac是一款专为Mac用户设计的窗口管理工具&#xff0c;旨在帮助用户更高效地管理和布局多个应用程序窗口&#xff0c;提升工作效率。 Magnet pro for mac v2.14.0中文激活版下载 这款软件拥有直观易用的界面和丰富的功能&#xff0c;支持用户将屏幕分割成多个区域&a…

textattack报错:不能导入自定义search_methods (cannot import name ‘xxx‘ from ‘xxx‘)

1. 报错信息 ImportError: cannot import name AAA from textattack.search_methods (/home/666/anaconda3/envs/textattack37_env/lib/python3.7/site-packages/textattack/search_methods/__init__.py)2. 出错简述 贴一段test1.py的模块导入 #建议使用&#xff01; import…

CPython源码学习5:字节对象

字节的结构体 PyBytesObject 浮点数的结构体 PyBytesObject &#xff0c;定义在头文件 Include/bytesobject.h 中&#xff0c;包含PyObject_VAR_HEAD 说明字节是可变大小的对象。 // Include/bytesobject.h typedef struct {PyObject_VAR_HEAD // 可变大小的对象Py_hash_t ob…

深度解析地铁票务系统的技术架构与创新应用

在城市交通体系中&#xff0c;地铁作为一种快速、便捷的公共交通方式&#xff0c;已经成为现代都市生活的重要组成部分。而地铁票务系统的技术架构&#xff0c;则是支撑地铁运营的核心之一。本文将深度解析地铁票务系统的技术架构与创新应用&#xff0c;从系统设计、数据管理、…

高德地图官网文档

高德地图官网文档&#xff08;快速上手-入门-教程-地图 JS API 1.4 | 高德地图API&#xff09;

【PL理论】(16) 形式化语义:语义树 | <Φ, S> ⇒ M | 形式化语义 | 为什么需要形式化语义 | 事实:部分编程语言的设计者并不会形式化语义

&#x1f4ad; 写在前面&#xff1a;本章我们将继续探讨形式化语义&#xff0c;讲解语义树&#xff0c;然后我们将讨论“为什么需要形式化语义”&#xff0c;以及讲述一个比较有趣的事实&#xff08;大部分编程语言设计者其实并不会形式化语义的定义&#xff09;。 目录 0x00…

adb shell进入设备后的命令

目录 一、查看删除手机 /data/local/tmp/下的文件 二、设置权限 三、查看手机设备正在运行的服务 四、可能需要的adb 命令 一、查看删除手机 /data/local/tmp/下的文件 可以通过以下命令&#xff1a; adb shell # 进入设备 ls /data/local/tmp/ # 查看文件夹下的内容…

DDMA信号处理以及数据处理的流程---原始数据生成

Hello&#xff0c;大家好&#xff0c;我是Xiaojie&#xff0c;好久不见&#xff0c;欢迎大家能够和Xiaojie一起学习毫米波雷达知识&#xff0c;Xiaojie准备连载一个系列的文章—DDMA信号处理以及数据处理的流程&#xff0c;本系列文章将从目标生成、信号仿真、测距、测速、cfar…

服务部署:Linux系统部署C# .NET项目

1. 安装 .NET SDK 首先&#xff0c;你需要在你的 Linux 系统上安装 .NET SDK。 Ubuntu系统&#xff1a; 下载 Microsoft 包配置文件 wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb 这个命令使用 wge…

大模型日报2024-06-10

大模型日报 2024-06-10 大模型资讯 无需矩阵乘法的语言模型在亿参数规模上表现优异 摘要: 研究表明&#xff0c;无需矩阵乘法的语言模型在亿参数规模上仍能保持顶级性能。这一发现挑战了传统神经网络依赖矩阵乘法的观点&#xff0c;展示了在GPU优化之外的新可能性。 博弈论助力…

MySQL基础---库的操作和表的操作(配着自己的实操图,简单易上手)

绪论​ 勿问成功的秘诀为何&#xff0c;且尽全力做您应该做的事吧。–美华纳&#xff1b;本章是MySQL的第二章&#xff0c;本章主要写道MySQL中库和表的增删查改以及对库和表的备份处理&#xff0c;本章是基于上一章所写若没安装mysql可以查看Linux下搭建mysql软件及登录和基本…

编曲市场行情

编曲市场行情 现在的编曲市场是分层级&#xff0c;金字塔模式的市场&#xff0c;对能力要求很高&#xff0c;也非常卷&#xff0c;也确实能赚钱。 底层编曲人&#xff1a;数量最多&#xff0c;以初学者编曲人居多&#xff0c;大部分是那种自学了一个多月就出来标榜自己 是音…

LabVIEW汽车电机测试系统

1. 背景 随着电动汽车的快速发展&#xff0c;汽车电机作为电动汽车的核心部件&#xff0c;其性能评估变得尤为重要。电机的功率、效率、转速等参数直接影响着电动汽车的性能和续航里程。因此&#xff0c;设计一套全面、准确的汽车电机测试系统对于提高电动汽车的性能和安全性具…

离散数学-万字课堂笔记-期末考试-考研复习-北航离散数学1

第一章 逻辑语言1.1 逻辑运算1.2 命题逻辑合式公式1.3 谓词逻辑合式公式1.4 自然语言命题第二章 命题逻辑语义2.1 命题合式公式语义2.2 推论式与等价式的语义2.3 变换合式公式的语义2.4 命题公式范式2.5 等式演算2.6 完全集第三章 谓词逻辑语义3.1谓词合式公式语义3.2推论关系和…

从渲染管线到着色器Shader实践

浏览器渲染管线原理 浏览器渲染管线是浏览器将HTML、CSS和JavaScript转换为用户可见的网页的过程。这一过程涉及多个步骤,包括解析、布局、绘制和合成等。下面是浏览器渲染管线的详细原理: 解析(Parsing): HTML解析:浏览器下载HTML内容后,首先进行HTML解析,将HTML文本…

GO语言 环境搭建

1. ide GoLand 下载地址 感谢您下载GoLand&#xff01;

如何提升自己的管理思维?

贯彻组织的核心价值观和文化理念&#xff0c;营造积极正向的工作氛围。通过身体力行&#xff0c;管理者可以影响和带动团队成员&#xff0c;共同营造一个充满活力和凝聚力的工作环境&#xff0c;确保组织文化能够深入人心&#xff0c;成为推动组织前进的强大动力。 总之&#x…

“程序员职业素养全解析:技能、态度与价值观的融合“

文章目录 每日一句正能量前言专业精神专业精神的重要性技术执着追求的故事结论 沟通能力沟通能力的重要性团队合作意识实际工作中的沟通案例结论 持续学习持续学习的重要性学习方法进步经验结论 后记 每日一句正能量 梦不是为想象&#xff0c;而是让我们继续前往。 前言 在数字…

【PowerDesigner】创建和管理CDM之新建实体

目录 &#x1f30a;1. PowerDesigner简介 &#x1f30d;1.1 常用模型文件 &#x1f30d;1.2 PowerDesigner使用环境 &#x1f30a;2. 创建和管理CDM &#x1f30d;​​​​​​2.1 新建CDM &#x1f30d;2.2 新建实体 &#x1f30a;1. PowerDesigner简介 &#x1f30d;1…