前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >爱情36技之记忆重生

爱情36技之记忆重生

作者头像
一猿小讲
发布于 2019-12-03 07:55:38
发布于 2019-12-03 07:55:38
36800
代码可运行
举报
文章被收录于专栏:一猿小讲一猿小讲
运行总次数:0
代码可运行

【这是一猿小讲的第 72 篇原创分享】

今天一位跨界老码农不知咋回事,兴奋过了头,一不小心把数据库给删掉啦,然后问我咋恢复,然后我告诉他基于 binlog 可以恢复,谁成想没有开启 binlog,最后只能躲在角落里伤心。

爱情 36 技系列,好久没更新啦,真是苦了追逐爱情系列的那些朋友们。

好了,请忘记上面的一切,因为我们的爱情故事系列又要更新啦。

自从 Java 那小子喜获 Python 菇凉的芳心之后,两人就迈入了柴米油盐酱醋茶的生活,但是锅碗瓢盆难免磕磕碰碰,生活中吵吵闹闹甚是正常。

不过每次小吵小闹,Python 菇凉都会忍不住想删除存储在 MySQL 上的旅途记忆(不是想删库,就是想跑路)。但是老话说的好:天上月亮圆圆的,小两口吵架总是闹着玩的,况且小两口没有隔夜的仇,所以每次花好月圆之时,Java 那小子总会凭自己精湛的技艺把 Python 菇凉放在 MySQL 上的记忆给恢复如初。

另外 Java 那小子为了帮助其他家庭能够快速重建美好记忆,考虑到家庭稳固,特意把秘诀分享给大家,希望大家拿去使用,估计会屡试不爽。

秘诀一:记录日志,让你有迹可查


第一步:确认 binlog 日志是否处于开启状态 ?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
show variables like 'log_%';

第二步:开启 MySQL binlog 日志

首先找到 my.cnf 文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql --help | grep 'Default options' -A 1

可能会有一堆的 my.cnf,加载的优先级顺序如下,别傻傻分不清。

不过也有可能 my.cnf 文件都是空空如也,别以为是见鬼啦,空空如也,就根据需要添加自己的配置就行。

vim /etc/my.cnf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#添加 
[mysqld]
#设置日志格式
binlog_format=mixed
#日志文件的名字及存储路径(咱们这次配置的路径为默认)
log-bin=mysql-bin
#表示单个节点的id,用来在集群中区别服务器
server-id=1

第三步:重启 MySQL

不同的系统,重启指令也不同,我是 Mac 系统,操作如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo /usr/local/mysql/support-files/mysql.server restart

第四步:确认 binlog 日志是否真开启啦?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
show variables like 'log_%';

第五步: 熟练使用命令。

查看 binlog 所有日志列表:show master logs;

查看最新一个 binlog 日志的信息:show master status;

秘诀二:望闻问切,辨证施药


病理一:Python 菇凉一怒之下,删除了去东京的旅途记忆。

望闻问切:查看 mysql-bin.000003 日志文件中记录的 Python 菇凉的操作,找到上一步的状态位置。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
show binlog events in 'mysql-bin.000003';

确诊:从 binlog 的事件中可以看断出执行 Python 菇凉执行 delete from memories 语句前的 position 节点为 1240,所以恢复开始的 pos 节点为 962,停止的 pos 节点为 1240 。

施药:采用 mysqlbinlog 完成恢复,治疗效果杠杠滴,去东京的旅途记忆又回来啦。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysqlbinlog /usr/local/mysql/data/mysql-bin.000003 --start-position 962 --stop-position 1240 | mysql -u root -p travel

病理二:Python 菇凉一怒之下,删除了所有的旅途记忆。

望闻问切:查看 mysql-bin.000003 日志文件中记录的 Python 菇凉的操作,找到上一步的状态位置。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
show binlog events in 'mysql-bin.000003';

确诊:从 binlog 的事件中可以看断出执行 Python 菇凉执行 drop table memories 语句前的 position 节点为 1873,所以恢复开始的 pos 节点为 154,停止的 pos 节点为 1873 。

施药:采用 mysqlbinlog 完成恢复,治疗效果杠杠滴,神奇的是所有的旅途记忆都回来啦。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysqlbinlog /usr/local/mysql/data/mysql-bin.000003 --start-position 154 --stop-position 1873 | mysql -u root -p travel

病理三:Python 菇凉一怒之下,把数据库都删掉了。

望闻问切:查看 mysql-bin.000003 日志文件中记录的 Python 菇凉的操作,找到上一步的状态位置。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
show binlog events in 'mysql-bin.000003';

确诊:从 binlog 的事件中可以看断出执行 Python 菇凉执行 drop database t_t 语句前的 position 节点为 3938,所以恢复开始的 pos 节点为 3847,停止的 pos 节点为 3938 。

施药:采用 mysqlbinlog 完成恢复,治疗效果杠杠滴,神奇的是数据库也回来啦。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysqlbinlog /usr/local/mysql/data/mysql-bin.000003 --start-position 3847 --stop-position 3938 | mysql -u root -p

秘诀三:应试技巧


又到年底了,有人已经按奈不住想试试机会啦!

灵魂一问:MySQL 主从复制怎么实现的?不多说,就放一图,自行感悟!

灵魂二问:MySQL binlog 的格式有几种?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
binlog 的格式有三种:STATEMENTROWMIXEDSTATMENT:每一条会修改数据的 SQL 语句会记录在 binlog 中。
ROW:不记录每一条 SQL语句的上下文信息,仅记录哪条记录被修改。
MIXED:以上两种模式的混合使用,一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的 SQL 语句选择日志保存方式。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一猿小讲 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Mysql之binlog日志说明及利用binlog日志恢复数据操作记录
众所周知,binlog日志对于mysql数据库来说是十分重要的。在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 废话不多说,下面是梳理的binlog日志操作解说: 一、初步了解binlog MySQL的二进制日志binlog可以说是MySQL最重要的日志,它记录了所有的DDL和DML语句(除了数据查询语句select),以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。 ---------
洗尽了浮华
2018/01/22
3K0
腾讯云 CDB : 深入解析 MySQL binlog
本文简要介绍 binlog 原理及其在恢复、复制中的使用方法。
腾讯云数据库 TencentDB
2018/01/31
11.8K1
MySQL Server 层四个日志
MySQL日志是在MySQL server上生成的,不管更改哪个存储引擎,这些日志都是需要有的,包括:
终有救赎
2023/11/09
2530
MySQL Server 层四个日志
通过MySQL relaylog + SQL_Thread 增量恢复binlog
原文地址:http://blog.itpub.net/29773961/viewspace-2143726/
保持热爱奔赴山海
2019/09/17
1.5K0
如何删库跑路?教你使用Binlog日志恢复误删的MySQL数据
开个玩笑,今天文章的主题是如何使用Mysql内置的Binlog日志对误删的数据进行恢复,读完本文,你能够了解到:
Rude3Knife的公众号
2020/01/16
2.2K0
如何删库跑路?教你使用Binlog日志恢复误删的MySQL数据
爱情36技之记忆永存
关注“一猿小讲”公众号的伙伴们都清楚,Java 那小子带着心爱的 Python 菇凉,去了一趟浪漫的土耳其,然后一起又去了东京和巴黎,接着 Python 菇凉自己又去了云南的大理。
一猿小讲
2019/08/16
2590
爱情36技之记忆永存
mysql数据库基本操作语句,模拟误删数据恢复
作为小站长,mysql数据库算是比较常用的了。作为运维,肯定遇到过数据被误删的情况。下面模拟数据库为误操作删除后的恢复过程。
IT不难
2022/04/23
1.9K0
mysql数据库基本操作语句,模拟误删数据恢复
对mysql日志进行操作的总结包括 启用,过期自动删除 等
近段时间一直在研究mysql的日志系统,在网上看了N多mysql日志操作的文章,但都过于零乱,为了让自己以后不再搞忘,特作出以下总结:
用户7657330
2020/08/14
1K0
MySQL备份与主备配置
例如:如果使用 Navicat、PHPMyAdmin 之类的可视化工具,可以直接点击转储 SQL 文件,或者导出 SQL 文件之类的功能。
凝神长老
2020/04/17
2.1K0
MySQL备份与主备配置
Mysql备份系列(1)--备份方案总结性梳理
mysql数据库备份有多么重要已不需过多赘述了,废话不多说!以下总结了mysql数据库的几种备份方案: 一、binlog二进制日志通常作为备份的重要资源,所以再说备份方案之前先总结一下binlog日志~~ 1.binlog日志内容 1)引起mysql服务器改变的任何操作。 2)复制功能依赖于此日志。 3)slave服务器通过复制master服务器的二进制日志完成主从复制,在执行之前保存于中继日志(relay log)中。 4)slave服务器通常可以关闭二进制日志以提升性能。 2.binlog日志文件的文
洗尽了浮华
2018/01/23
3.3K0
MySQL二进制日志截取和恢复
在打印出来的信息中可以看到event事件的开始和结束号码,它可以方便我们从日志中截取想要的日志事件
云计算小黑
2022/12/28
1.4K0
删库了,我们一定要跑路吗?
在工作中,我们误删数据或者数据库,我们一定需要跑路吗?我看未必,程序员一定要学会自救,神不知鬼不觉的将数据找回。
平头哥的技术博文
2020/02/27
7240
MySQL Binlog解析方法对比
# 会显示dml语句具体做了什么操作,例如:insert语句,会显示出insert具体插入了什么数据;
Power
2025/02/28
1100
MySQL备份与主备配置
例如:如果使用 Navicat、PHPMyAdmin 之类的可视化工具,可以直接点击转储 SQL 文件,或者导出 SQL 文件之类的功能。
凝神长老
2020/04/15
1.7K0
Mysql通过binlog恢复数据
前提要开启binlog日志 用到的sql脚本 drop database if exists demo; create database demo; use demo; drop table if exists rumenz; create table rumenz(id int,name varchar(30)); insert into rumenz(id,name) values(1,'qaz'); insert into rumenz(id,name) values(2,'qaz'); inser
入门笔记
2022/06/02
7910
Mysql通过binlog恢复数据
mysql备份后缀是什么_mysql备份还原
格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 –database 数据库名 > 文件名.sql
全栈程序员站长
2022/07/02
5.8K0
MySQL基于日志还原数据
Binlog日志,即二进制日志文件,用于记录用户对数据库操作的SQL语句信息,当发生数据误删除的时候我们可以通过binlog日志来还原已经删除的数据,还原数据的方法分为传统二进制文件还原数据和基于GTID的二进制文件还原数据
码农编程进阶笔记
2021/07/20
5730
面试系列-binary log
binlog 二进制日志文件,这个文件记录了MySQL所有的DML操作。通过binlog日志我们可以做数据恢复,增量备份,主主复制和主从复制等等。
用户4283147
2022/10/27
2750
面试系列-binary log
mysql数据恢复 转
binlog 基本认识     MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。
wuweixiang
2018/12/24
3.1K0
MySQL binlog(二进制日志)解析「建议收藏」
binlog 顾名思义就是一种二进制日志,是一种与innodb引擎中redo/undo log完全不同的日志。它主要是用来记录对mysql数据更新或潜在发生更新的SQL语句,并以”事务”的形式保存在磁盘中。
全栈程序员站长
2022/07/11
2.1K0
相关推荐
Mysql之binlog日志说明及利用binlog日志恢复数据操作记录
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验