Mysql通过binlog二进制日志文件恢复数据

mysqlbinlog报错unknown variable ‘default-character-set=utf8mb4‘ 目录一、问题描述二、解决方法1.修改配置文件2.带上参数 --no-defaults 一、问题描述 mysqlbinlog 执行以下命令生成 SQL 时报错 unknown variable ‘default-character-set=utf8mb4’: mysqlbinlog --base64-output=decode-rows -v /var/lib/mysql/binlog.000003 --result-file=mysql0003.sql 二、解决方法 1.修改配置文件 修改配置文件 /e 阅读详情

1,登陆Mysql控制台查看Mysql日志文件位置

show variables like 'log_%'; // 查看日志文件开启状态和文件位置
show binary logs; // 查看所有的日志文件
show master status\G; // 查看当前写入的日志文件

mysql> show variables like 'log_%';
+----------------------------------------+---------------------------------------------------------+
| Variable_name                          | Value                                                   |
+----------------------------------------+---------------------------------------------------------+
| log_bin                                | ON                                                      |
| log_bin_basename                       | /usr/local/mysql/data/mysql/mysql-bin                   |
| log_bin_index                          | /usr/local/mysql/data/mysql/mysql-bin.index             |
| log_bin_trust_function_creators        | OFF                                                     |
| log_bin_use_v1_row_events              | OFF                                                     |
| log_error                              | /usr/local/mysql/data/mysql/izbp11gsqdkmgt6b1r4kajz.err |
| log_output                             | FILE                                                    |
| log_queries_not_using_indexes          | OFF                                                     |
| log_slave_updates                      | OFF                                                     |
| log_slow_admin_statements              | OFF                                                     |
| log_slow_slave_statements              | OFF                                                     |
| log_throttle_queries_not_using_indexes | 0                                                       |
| log_warnings                           | 1                                                       |
+----------------------------------------+---------------------------------------------------------+
13 rows in set (0.00 sec)

mysql> show binary logs;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000001 |     19739 |
+------------------+-----------+
1 row in set (0.00 sec)

mysql> show master status\G;
*************************** 1. row ***************************
             File: mysql-bin.000001
         Position: 20911
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

如果log_bin 显示为 off 表示数据库没有开启日志文件,需要修改配置开启,修改Mysql的my.cnf文件(一般在/etc目录下),在[mysqld]行下面添加 log-bin=mysql-bin 行

[mysqld]
log-bin=mysql-bin

2,恢复数据

恢复有几种方式

1,binlog文件全量恢复

mysqlbinlog /usr/local/mysql/data/mysql/mysql-bin.000001 > a.sql

此操作会把mysql-bin.000001记录的操作日志全部转换为sql

2,按时间恢复--start-datetime

如果确定了时间点,那么按时间恢复是一个再好不过的事,一般是通过日常的定期备份+差异备份(日志)

如果日常备份在4点,出错的时间在12:00点,12:30发现的,首先我们要确认12点出了什么错,12点以后的数据还能不能继续使用,如果不影响,那么我们只需跳过12:00执行的数据即可

首先,恢复4点的备份

然后,通过binlog获取4点到11:59的数据,获取的数据可以直接作用到数据库中,避免二次污染,最好先生成sql文件

mysqlbinlog --start-datetime="2018-09-27 04:01:00"  --stop-datetime="2018-09-27 11:59:00" /usr/local/mysql/data/mysql/mysql-bin.000001 >a.sql

在获取12:01-12:30的数据

 mysqlbinlog --start-datetime="2018-09-27 12:01:00"  --stop-datetime="2018-09-27 12:30:00" /usr/local/mysql/data/mysql/mysql-bin.000001 >>a.sql

3,通过--start-position节点

思路和上面的一样,首先要确定节点的id,在恢复

3,异常处理

[root@izbp11gsqdkmgt6b1r4kajz mysql]# mysqlbinlog mysql-bin.000001 > a.sql
mysqlbinlog: unknown variable 'default-character-set=utf8mb4'

原因是mysqlbinlog这个工具无法识别binlog中的配置中的default-character-set=utf8mb4这个指令。

两个方法可以解决这个问题

一是在MySQL的配置/etc/my.cnf中将default-character-set=utf8mb4 修改为 character-set-server = utf8mb4,但是这需要重启MySQL服务,如果你的MySQL服务正在忙,那这样的代价会比较大。

二是用mysqlbinlog --no-defaults mysql-bin.000001 命令执行

FastAPI + LLM 实战:5分钟搞定本地模型API服务部署(含避坑指南) 本文详细介绍了如何使用FastAPI和LLM(大语言模型)快速部署本地API服务,涵盖环境准备、模型集成、性能优化及避坑指南。通过实战示例,帮助开发者在5分钟内完成从零到生产的部署过程,提升AI应用开发效率。 阅读详情

相关推荐

ArcGIS新手必看:用Landsat 8数据计算植被覆盖度的完整流程(附DEM裁剪技巧)

本文为ArcGIS新手提供了使用Landsat 8数据计算植被覆盖度的完整流程指南。详细讲解了从数据预处理、NDVI计算到基于像元二分模型反演植被覆盖度的核心步骤,并重点分享了利用DEM进行精确裁剪的实用技巧,帮助用户高效完成地表信息提取与分析。

weixin_29279047的博客 238

MySQL——通过binlog恢复数据

二进制日志(binnary log)以事件形式记录了对MySQL数据库执行更改的所有操作。binlog是记录所有数据库表结构变更(例如CREATE、ALTER TABLE、DROP等)以及表数据修改(INSERT、UPDATE、DELETE、TRUNCATE等)的二进制日志。不会记录SELECT和SHOW这类操作,因为这类操作对数据本身并没有修改,但可以通过查询通用日志来查看MySQL执行过的所有语句。

醉酒的戈多的专栏 4万+

第20期-英伟达笔试题型解析

英伟达作为AI领域的缔造者及硬件基石,是这几年最为炙手可热的公司。英伟达以其高性能GPU设计闻名,硬件工程师岗位的招聘通常包括笔试和技术面试,考察领域涵盖数字电路设计、处理器架构、嵌入式系统和信号处理等。通过搜索公开平台,收集了候选人的面试经历和相关技术问题,,通过分析公开平台收集的笔试面试经验,结合英伟达的GPU架构特点,整理出可能涉及的典型题目,并提供详细解析。 以下是基于英伟达(Nvidia)硬件工程师笔试题型的解析与总结,涵盖核心知识点、解题思路及案例分析。

启芯硬件的博客 745

mysqlbinlog命令使用时报错 unknown variable 'default-character-set=utf8mb4' 的解决办法

为了支持emoji, mysql数据库的编码都改成了 utf8mb4, 由此也引发了mysqlbinlog命令行的错误. 比如执行 mysqlbinlog --hel...

aben_sky的专栏 1万+

vue2 - 实现移动端H5网页调用手机相册选取图片或打开摄像头相机拍照上传,如何在h5网站浏览器中打开本机相册或相机选择相片,H5调用本地相册/相机上传图片详细教程(附图片压缩功能及上传服务器示例)

vue2手机H5网页,调起安卓苹果ios手机相册和相机,H5实现调用手机摄像头相册实现图片压缩预览删除,vue项目调用摄像头和相册,H5调用手机摄像头,实时拍照上传,VUE2 H5页面如何唤起手机摄像头拍照上传,H5调起手机端的摄像头,html5调用手机摄像头,实现H5调起手机相机和相册,vue H5拍照上传,手机网站浏览器移动端调取相机或相册,实现拍照上传功能,解决苹果ios手机无法打开相册相机问题,无法唤起摄像头怎么办,调取本机系统的相册,vue h5网页调用相机拍照和相册,实现多张图片上传功能,图片压

✅ 精选推荐文章 1万+

随机优化 (Stochastic Optimization) 算法详解及案例分析

随机优化是一种用于处理包含随机变量的优化问题的方法。其目标是通过考虑随机变量的概率分布,找到一个在期望意义下最优的解。

闲人编程的博客 4178

MySQL使用binlog日志恢复数据

MySQL使用binlog日志恢复数据

Felix的博客 1万+

使用 MATLAB/Simulink 搭建一个步进电机细分控制系统的仿真模型

步进电机(Stepper Motor)是一种将电脉冲信号转换为角位移或线位移的执行元件,广泛应用于数控机床、3D打印、机器人、精密仪器等领域。其特点是开环控制、定位精度高、响应快、无累积误差。然而,传统步进电机在整步或半步运行时存在振动大、噪音高、转矩波动明显等问题。为了解决这些问题,细分控制技术被广泛采用。细分控制通过对绕组电流进行精确控制,使转子在两个整步之间实现平滑移动,从而提升电机的运行平稳性和位置精度。本教程将带你使用搭建一个步进电机细分控制系统的仿真模型,并通过仿真分析其。

amy_mhd的博客 426

mysql误删数据后,从binlog中进行恢复删除数据(拯救手残,不跑路)

通过mysql的binlog日志,对误删数据进行恢复

mu_yu_xi的博客 1万+

Android 13 wificond讲解

Android 13 wificond讲解

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 2932

YOLOv12改进策略【Neck】| 使用CARAFE轻量级通用上采样算子

CARAFE内容感知的特征重新组合。

Limiiiing的博客 664

如何通过Mysql的二进制日志恢复数据库数据

系统环境: 操作系统:CentOS 6.5 X64  (虚拟机); WEB服务:PHP+Mysql+apache; 网站:为方便,直接在本地用蝉知系统搭建一个DEMO站点; 操作步骤: 1.开启binlog功能及基本操作; 2.往站点添加数据; 3.刷新binlog日志; 4.删除数据; 5.binlog日志内容解析; 6.恢复指

into0505的博客 559

基于STM32、HAL库的WF162A 11BA T&R气压传感器 驱动程序设计

/ 转换为7位地址。* @param temperature: 存储读取到的温度值(°C)* @param temperature: 存储读取到的温度值(°C)* @param pressure: 存储读取到的压力值(bar)* @param pressure: 存储读取到的压力值(bar)* @param range: 压力范围(bar)

corlin6688的博客 361

S120参数手册2634功能图错误解析与转矩限幅调试避坑指南

在工业自动化领域,驱动系统参数手册是调试的基础,但功能图错误常导致配置失效。以西门子SINAMICS S120为例,其功能图通过可视化信号流帮助工程师理解参数连接,然而绘图遗漏或标注错误会引发使能信号缺失、单位混淆等问题。这些错误直接影响转矩限幅等关键功能的正确性,尤其在包装、起重等场景中,可能导致设备异常或安全隐患。本文聚焦2634功能图,拆解其使能信号来源缺失、限幅值选择逻辑不符等典型错误,结合参数列表交叉验证方法,提供实操排查步骤与读图检查清单,帮助工程师高效避坑,提升调试效率。

weixin_34008933的博客 438

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

如何通过 MySQL 恢复数据库数据?

          经常有网站管理员因为各种原因和操作,导致网站数据误删,而且又没有做网站备份,结果不知所措,甚至给网站运营和盈利带来负面影响。所以本文我们将和大家一起分...

Linux云计算数据自学 921

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

使用binlog恢复被删除的数据

上一篇文章关于MySQL binlog二进制日志中,对binlog是什么,日志结构,如何查看等进行了介绍,本文介绍如何将使用binlog进行数据恢复。 清空binlog 清空binlog,便于后续测试: reset master 数据写入 对数据库进行更新操作: mysql > create database test; mysql > use test; mysql > create table test001(id int,name varchar(10)); mysql &gt

翔云 1226

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Mysql 的binlog 日志

1.binlog 基本知识 binlog 表示二进制日志文件,可以说是mysql最重要的日志文件了。 它记录了所有的ddl和dml语句,以事件的形式记录(后面会详细介绍),还包括语句所执行的消耗事件。 binlog的二进制文件是事务安全型的,具体的可以参考:MySQL redo log 与 binlog 的区别 2.binlog 使用场景 一般来说,开启二进制日志binlog,会有1%的...

时光钟摆 251

mysql binlog更新记录缺失_mysql的binlog进行数据恢复

什么是binlog?binlog,也称为二进制日志,记录对数据发生或潜在发生更改的SQL语句,并以二进制的形式保存在磁盘中,可以用来查看数据库的变更历史(具体的时间点所有的SQL操作)、数据库增量备份和恢复(增量备份和基于时间点的恢复)、Mysql的复制(主主数据库的复制、主从数据库的复制)。如何开启binlog?首先我们可以进入mysql输入命令show variables like '%bin...

weixin_31572175的博客 926

mysql8配置binlog日志skip-log-bin,开启、关闭binlog,清理binlog日志文件

mysql8关闭、开启binlog日志,配置skip-log-bin

【小石头的茅坑】 72万+

【删库跑路? 不用慌,通过binlog恢复】

根据mysql binlog日志 基于起止位置 和 指定时间端来做数据恢复

weixin_44585177的博客 1891

MySql通过binlog恢复数据

MySQL数据误删除使用binlog恢复 1.首先检查binlog是否已经开启,命令如下: mysql> show variables like '%log_bin%'; 结果如下: log_bin:是否开启 log_bin_basename:bin文件路径及名前缀 log_bin_index:bin文件inde...

鹿晓鹏的博客 256

使用SHOW binlog events查看binlog内容

使用SHOWbinlogevents查看binlog内容 用mysqlbinlog命令行查看binlog,觉得比较麻烦,突然发现原来mysql有个命令可以直接查看。 SHOW BINLOG EVENTS [IN 'log_name'] [FROMpos] [LIMIT [offset,]row_count] 用于在二进制日志中显示事件...

weixin_33719619的博客 1万+

学习mysql的binlog配置

1、基础知识 日志是把数据库的每一个变化都记载到一个专用的文件里,这种文件就叫做日志文件。mysql默认只开启错误日志,因为过多的日志将会影响系统的处理性能。 在mysql5.0以前版本支持文本格式和二进制格式的日志,但是在mysql5.0后版本就只支持二进制格式的日志。因为二进制日志在性能、信息处理等方面有更多的优点。 2、启用mysql二进制日志 m...

weixin_34174105的博客 106

MySQL binlog日志详解 查询和数据恢复 细节 ops范围数据恢复 时间节点范围 MySQL数据恢复 数据库备份 主从复制 增量恢复

MySQL binlog日志详解 查询和数据恢复 细节 按时间点 按操作id顺序范围 数据恢复 数据库备份 主从复制 增量恢复 MySQL Binlog是二进制格式的日志文件,二进制日志记录对数据发生或潜在发生更改的SQL语句,并以二进制的形式保存在磁盘中。用来记录Mysql内部对数据库的改动(只记录对数据的修改操作)。可以用来查看数据库的变更历史(具体的时间点所有的SQL操作)、数据库增量备份和恢复(增量备份和基于时间点的恢复)、Mysql的复制(主主数据库的复制、主从数据库的复制)。

Benjamin 优快云博客 3243

binlog

一、什么是binlog binlog是一个二进制格式的文件,用于记录用户对数据库更新的SQL语句信息,例如更改数据库表和更改内容的SQL语句都会记录到binlog里,但是对库表等内容的查询不会记录。 binlog的作用 当有数据写入到数据库时,还会同时把更新的SQL语句写入到对应的binlog文件里,这个文件就是上文说的binlog文件。使用mysqldump备份时,只是对一段时间的...

strugglejiaxin的博客 301

mysql binlog 使用指南

MySQL binlog详解1.前言 日志是把数据库的每一个变化都记载到一个专用的文件里,这种文件就叫做日志文件。Mysql默认只打开出错日志,因为过多的日志将会影响系统的处理性能。 在5.0前支持文本格式和二进制格式,5.0后只支持二进制格式,因为二进制日志在性能、信息处理方面有更多的优点。2.基础知识 2.1、二进制日志的启用 二进制日志由配置文件的l...

weixin_33693070的博客 151
上一篇: 修改CentOS ll命令显示时间格式为yyyy-MM-dd HH:mm:ss
下一篇: Mysql操作binlog时报错mysqlbinlog: unknown variable 'default-character-set=utf8mb4'
hwmhehe
博客等级 码龄13年 86粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值