千家信息网

如何解决线上数据库删了的问题

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本篇内容主要讲解"如何解决线上数据库删了的问题",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何解决线上数据库删了的问题"吧!事件背景MySQL数据库每日
千家信息网最后更新 2025年11月07日如何解决线上数据库删了的问题

本篇内容主要讲解"如何解决线上数据库删了的问题",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何解决线上数据库删了的问题"吧!

事件背景

  • MySQL数据库每日零点自动全备

  • 某天上午9点,二狗子不小心drop了一个数据库

  • 我们需要通过全备的数据文件,以及增量的binlog文件进行数据恢复

主要思想与原理

  • 利用全备的sql文件中记录的CHANGE MASTER语句,binlog文件及其位置点信息,找出binlog文件增量的部分

  • 用mysqlbinlog命令将上述的binlog文件导出为sql文件,并剔除其中的drop语句

  • 通过全备文件和增量binlog文件的导出sql文件,就可以恢复到完整的数据

过程示意图

操作过程

模拟数据

CREATE TABLE `student` (   `id` int(11) NOT NULL AUTO_INCREMENT,   `name` char(20) NOT NULL,   `age` tinyint(2) NOT NULL DEFAULT '0',   PRIMARY KEY (`id`),   KEY `index_name` (`name`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8    mysql> insert student values(1,'zhangsan',20);  mysql> insert student values(2,'lisi',21);  mysql> insert student values(3,'wangwu',22);

全备命令

# mysqldump -uroot -p -B -F -R -x --master-data=2 test|gzip >/server/backup/test_$(date +%F).sql.gz

参数说明:

  • -B 指定数据库

  • -F 刷新日志

  • -R 备份存储过程等

  • -x 锁表

  • --master-data 在备份语句里添加CHANGE MASTER语句以及binlog文件及位置点信息

继续插入数据并删库

mysql> insert student values(4,'xiaoming',20); mysql> insert student values(5,'xiaohong',20);

在插入数据的时候我们模拟误操作,删除test数据库。

mysql> drop database test;

此时,全备之后到误操作时刻之间,用户写入的数据在binlog中,需要恢复出来。

查看全备之后新增的binlog文件

# cd /server/backup/ # ls test_2020-08-19.sql.gz # gzip -d test_2020-08-19.sql.gz  # grep CHANGE test_2020-08-19.sql  -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=107;

这是全备时刻的binlog文件位置,即mysql-bin.000003的107行,因此在该文件之前的binlog文件中的数据都已经包含在这个全备的sql文件中了

移动binlog文件,并读取sql,剔除其中的drop语句

# cp /data/3306/mysql-bin.000003 /server/backup/ # mysqlbinlog -d test mysql-bin.000003 >mysql-bin.000003.sql

接下来,使用vim编辑mysql-bin.000003.sql文件,剔除drop语句

注意:在恢复全备数据之前必须将该binlog文件移出,否则恢复过程中,会继续写入语句到binlog,最终导致增量恢复数据部分变得比较混乱

恢复数据

# mysql -uroot -p < test_2020-08-19.sql  # mysql -uroot -p -e "select * from test.student;" +----+----------+-----+ | id | name     | age | +----+----------+-----+ |  1 | zhangsan |  20 | |  2 | lisi     |  21 | |  3 | wangwu   |  22 | +----+----------+-----+

此时恢复了全备时刻的数据,然后使用mysql-bin.000003.sql文件恢复全备时刻到删除数据库之间,新增的数据。

# mysql -uroot -p test < mysql-bin.000003.sql  # mysql -uroot -p -e "select * from test.student;" +----+----------+-----+ | id | name     | age | +----+----------+-----+ |  1 | zhangsan |  20 | |  2 | lisi     |  20 | |  3 | wangwu   |  20 | |  4 | xiaoming |  20 |  |  5 | xiaohong |  20 | +----+----------+-----+

此时,整个恢复过程结束,是不是很简单呢?没错,就是这么简单!!

到此,相信大家对"如何解决线上数据库删了的问题"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

数据 文件 全备 数据库 语句 过程 增量 时刻 问题 位置 之间 信息 内容 命令 备份 部分 学习 实用 更深 混乱 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库表文件扩展名 关于网络安全的话一段话 迅雷网络技术有限公司地址 淮安红心宏善网络技术有限公司 数据库技术及应用基础教程书籍 硅湖职业技术学院计算机网络技术 广东学软件开发 杆铭服务器 方舟服务器怎么使用管理员 jsp页面访问数据库 软件开发岗位自我介绍 t3数据库密码修改 hyipxel服务器地址 大众文摘是哪个数据库啊 服务器有没有安全性 云南工商计算机网络技术成绩 数据库重启怎么操作 相册使用过程中产生的数据库 怎么导出网页全部的数据库 浪潮服务器nf5280m2配置 企友3e服务器找不见怎么办 县网络安全工作自查总结 谁会安数据库 重庆垫江生鲜电商软件开发 管家婆单机版登录显示服务器错误 安徽劲奇网络技术有限公司怎么样 应用软件开发功能图 怎么保证服务器的安全运行 网络安全知识学习笔记 广安排悔网络技术有限公司
0