mysql误删了数据_MySQL误删数据
首先看下mysql误删数据排名最前的几种是:
1.误删文件
2.误删库、表
3.错误全表删除 / 更新
4.升级操作失误
都来看看你命中过几个,hoho。
简单说下我亲手造的一个大事故吧。
那大概是一个春暖花开的季节,我的内心是激动澎湃的,因为已经安排了休假计划。在这前几天,已经把一个新项目的数据库环境都部署好了,包括自动化备份。
等我美美的出去玩的时候,悲剧发生了,业务要求进行数据回滚,但发现备份文件不可用,原因是 备份时指定的字符集和表字符集不一致。我勒个擦,原来该项目采用新的字符集,但是我没有认真检查确认并修改备份脚本,结果导致备份失效。最后,因为这个事,当季度绩效结果被降档,boss也为此背锅~
好吧,回到正题,先说几点我平时预防误操作导致文件/数据丢失不成熟的建议:
1.欲删除文件时,将rm命令改成mv,可在系统层面将rm命令做个alias(或参考 Windows / Mac OSX做法,删除文件时先进回收站)。
删除数据库、表时,不要用drop命令,而是rename到一个专用归档库里;
2.删除表中数据时,不要直接用delete或truncate命令,尤其是truncate命令,目前不支持事务,无法回滚。
3.用delete命令删除数据时,应当先显式开启事务,这样误操作时,还有机会进行回滚。
4.要大批量删除数据时,可以将这些数据insert...select到一个新表,确认无误后再删除。或者反其道行之,把要保留的数据写到新表,然后将表重命名对掉。
5.执行重要命令之前,先准备好相关命令,再三确认无误才之行,对于新鸟而言,最好请你的boss坐你旁边镇场几次,否则极有可能会连累大家~
以上几条,也是我自己奉行的原则。总之,要时刻保持对线上生产环境的敬畏之心。虽说现在大部分操作可以靠平台来完成了,但平台也不是万能的,不也发生过平台本身的缺陷造成数据丢失、代码回滚、部署失误等事故嘛,我就不点名了。
做好备份,不管是物理备份还是逻辑备份!
做好备份,不管是物理备份还是逻辑备份!
做好备份,不管是物理备份还是逻辑备份!
重要的事情说三遍都不嫌多。
说完预防措施,我们再说万一发生误操作时,怎么以最快速度进行补救。 我们分别列举几种常见的情况:
1.执行DROP DATABASE / DROP TABLE命令误删库表,如果碰巧采用共享表空间模式的话,还有恢复的机会。如果没有,请直接从备份文件恢复吧。神马,你连备份文件都没有?那麻烦退出DBA届吧,一个连备份都懒得做的人,不配成为DBA的。
2.接上,采用共享表空间模式下,误删后立刻杀掉(kill -9)mysql相关进程(mysqld_safe、mysqld),然后尝试从ibdataX文件中恢复数据。
3.误删除正在运行中的MySQL表ibd或ibdataX文件。请立即申请对该实例进行维护,当然,不是指把实例关闭,而是把业务暂停,或者把该实例从线上环境摘除,不再写入新数据,然后利用linux系统的proc文件特点,把该ibd文件从内存中拷出来,再进行恢复,因为此时mysqld实例在内存中是保持打开该文件的,切记这时不要把mysqld实例关闭了。
4.接上,把复制出来的ibdataX或ibd文件拷贝回datadir后,重启mysqld进入recovery模式,innodb_force_recovery 选项从 0 - 6 逐级测试,直至能备份出(整个实例或单表的)所有数据后,再重建实例(或单表),恢复数据。
5.未开启事务模式下,执行delete误删数据。意识到后立即将mysqld(以及mysqld_safe)进程杀掉(kill -9),不要任何犹豫,然后再用工具将表空间数据读取出来。因为执行delete删除后,实际数据并没被物理清除,只是先打上deleted-mark标签,后续再统一清理,因此还有时间差。
5.执行truncate误清整表。如果没使用共享表空间模式的话,基本别想了,走备份恢复+binlog吧。
6.执行不带where条件的update,或者update错数据。也别费劲了,走备份恢复+binlog吧。
mysql误删了数据_MySQL误删数据相关推荐
- mysql insert id菜鸟_MySQL 插入数据
MySQL 插入数据 MySQL 表中使用INSERT INTOSQL语句来插入数据. 你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据. 语法 以下为向 ...
- mysql创建数据表示例_Mysql创建数据表的方法介绍(附示例)
本篇文章给大家带来的内容是关于Mysql创建数据表的方法介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 数据表是数据库最重要的组成部分之一,是其他对象的基础.如果我们的 ...
- linux mysql 误删系统文件恢复_MySQL误删物理文件的恢复(Linux)
以前拜读过一位Oracle大大的文章,结果自己在测试环境也遇到了,顺手记下来 Oracle大大的文章链接http://blog.itpub.net/17203031/viewspace-1077770 ...
- mysql防止从节点可写数据_mysql 主从数据不一致 Slave_SQL_Running: No 解决方法
在slave服务器上通过如下命令 MysqL> show slave status\G; 显示如下情况: Slave_IO_Running: Yes Slave_sql_Running: No ...
- mysql c 更新 数据_Mysql:如果数据存在则更新,不存在则插入
本篇文章转载自:https://www.cnblogs.com/Eric-zhao/p/6655994.html mysql语法支持如果数据存在则更新,不存在则插入,首先判断数据存在还是不存在的那个字 ...
- mysql 恢复root用户_mysql误删root用户恢复方案
linux下误删mysql的root用户,解决方法 开始对liunx界面不熟悉,可能由于不小心,把root误删了,怎么办? 1. # killall mysqld 干掉所有mysql进程 2. ...
- mysql scrapy 重复数据_MySQL大数据量表中删除重复记录
MySQL大数据量表中删除重复记录 最近工作中需要抓取大量新闻,抓取的数据中由于一些原因存在一些重复数据,而整个数据表的记录数接近10万条,大小接近1个G,又在我自己的渣渣本本上,查询速度十分不理想, ...
- mysql数据库根目录恢复_MySQL中数据导入恢复的简单教程
有两个简单的方法MySQL中的数据加载到MySQL数据库从先前备份的文件. LOAD DATA导入数据: MySQL提供了LOAD DATA语句,作为一个大容量数据加载.下面是一个例子声明中,读取一个 ...
- mysql利用内存表导入数据_Mysql 大量数据导入
今天试图用heidisql 导入一个150M的数据文件(.sql), 结果报out of memory 错误.在网上搜了很多案例,都没能解决问题.我甚至怀疑是mysql 的default的内存设置的太 ...
最新文章
- strstrsubstr、AfxGetApp
- 哭!有人偷了我的漏洞报告,还冒领了奖金!
- PAT甲级1007 最大连续子序列
- 亚吉铁路 + 蒙内铁路
- list排序成员函数对string对象与char*对象排序的差别
- 几种方法帮你更有效率的记笔记
- linux命令行关机 密码,[ Linux 基本命令 001 ] 登陆,登出,重启,关机
- 耳机电声测试仪软件,杭州爱华 AWA6128D双耳机测试仪
- 【学习笔记】matlab进行数字信号处理(三)数字滤波技术
- netbeans卸载
- 传统计算机硬盘和固态硬盘有哪些区别,工业级固态硬盘与传统硬盘有什么区别...
- Hystrix熔断器
- 页面优化之懒加载与预加载
- java 余弦定理_Java實現余弦定理計算文本相似度
- WPF DataGridTextColumn Visibility
- HDU5984 Pocky(期望)
- 传奇版本中云客户端状态在哪里去掉?
- 珍惜身边所有,因为来日不方长。
- 菜鸟教程python正则表达式_Python 正则表达式
- JDK8下载(64位)
热门文章
- maven打包jar包到本地仓库
- 计算机表格用计算公式百分百,excel表格怎么算数据的阳性比率-计算机一级用excel表格计算增长比例该怎么算?...
- Windows7,8,10 启用网络发现却无法保存设置-----解决办法
- 电视html转vga没有声音,手把手教你排除HDMI转VGA常见故障
- 使用windows为Android手机进行瘦身
- 怎样给黑白照片上色?手把手教你上色
- (狼人杀)游戏研究-Android
- Ubuntu 22.04 LTS (Jammy Jellyfish) Daily Build安装镜像PC ARM Raspberry Pi
- 阅读笔记 - 20220401
- win10安装graph_tool,在jupyter notebook运行代码