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标签,后续再统一清理,因此还有时间差。
6.执行truncate误清整表。如果没使用共享表空间模式的话,基本别想了,走备份恢复+binlog吧。
7.执行不带where条件的update,或者update错数据。也别费劲了,走备份恢复+binlog吧。
【编辑推荐】
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0
mysql删除员工_MySQL误删数据救命指南:开发人员必收藏相关推荐
- MySQL误删数据救命指南:必收藏
首先看下mysql误删数据排名最前的几种是: 1.误删文件 2.误删库.表 3.错误全表删除 / 更新 4.升级操作失误 都来看看你命中过几个,hoho. 简单说下我亲手造的一个大事故吧. 那大概是一 ...
- MySql删除表中重复数据
有一表中存在大量重复数据 在此记录下我删除表内重复数据的方法 -- 新增测试表 create table basic_farmer ( id INT(11), user_name VARCHAR(25 ...
- MySQL删除表中的数据
Mysql删除表中的数据有三种方法,分别是delete ,drop,truncate. 一.delete删除表中的数据 delete好from结合使用,格式一般为:delete from 表名 whe ...
- mysql误删了数据_MySQL误删数据
首先看下mysql误删数据排名最前的几种是: 1.误删文件 2.误删库.表 3.错误全表删除 / 更新 4.升级操作失误 都来看看你命中过几个,hoho. 简单说下我亲手造的一个大事故吧. 那大概是一 ...
- mysql删除指令_mysql怎么用命令删除数据?
在mysql中,可以使用"DELETE FROM [WHERE 子句] [ORDER BY 子句] [LIMIT 子句]"命令删除单个表中的数据:也可以使用"TRUNCA ...
- mysql删除表中所有数据_MySQL删除或清空表中数据的方法
原标题:MySQL删除或清空表中数据的方法 要想把MySQL中的数据删除或清空,可以通过两种方法来实现:DELETE语句和TRUNCATE TABLE语句. DELETE语句可以将表中所有记录都删除, ...
- mysql删除员工的信息_php+mysql删除指定编号员工信息的方法
本文实例讲述了php+mysql删除指定编号员工信息的方法..具体分析如下: 利用php提交员工编号给mysql,然后由mysql把数据接受并利用delete进行数据删除操作了,这里就来给大家分享几个 ...
- go语言mysql删除记录_MySQL数据库删除操作-Go语言中文社区
删除数据库 DROP DATABASE [IF EXISTS] 数据库名; 例如:删除school数据库 IF EXISTS 为可选,判断是否存在,如果不存在则会抛出异常 删除数据表 DROP TAB ...
- mysql删除员工_数据库删除职工信息
<数据库技术原理与应用教程第2版>--1.4数据管理 本节书摘来自华章出版社<数据库技术原理与应用教程第2版>一书中的第1章,第1.4节,作者 徐洁磐 操凤萍 ,更多章节内容可 ...
最新文章
- Win10 Microsoft Store 微软商店 Error 0x00000193 解决方法
- wow,My God,当当终于销售《走出软件作坊》了
- 半夜三点,去医院看病。。。
- [PAT乙级]1029 旧键盘
- sign check fail: check Sign and Data Fail解决方案
- 【转】刨根究底字符编码之十一——UTF-8编码方式与字节序标记BOM
- Linux运行脚手架vue,Linux Nodejs与vue脚手架详解
- Python编程实现对拉格朗日和KKT条件求极值
- android实现控件的手势缩放、移动以及双击还原
- python 根据父子信息 还原成json树
- You don’t have permission to access / on this server
- 学习使用大数据数据采集工具(python)
- Axure8.0使用教程
- 广袤之中:沿着克拉克三大定律,读懂华为的最深期待
- 找出水王 java_寻找水王1
- 用HTML加css做成的新年特效,使用css3和html给网站添加上春节灯笼特效的源码分享...
- 支持DDR5,超频更简单,小雕够给力,技嘉B760M小雕WIFI主板上手
- python微信远程控制摄像头_python实现微信远程控制电脑
- excel怎么把竖排变成横排_PS虚线字怎么制作-PS虚线字绘制教程详解
- 二级学科 计算机科学技术,一级学科、二级学科,考研专业哪个包含了计算机考研方向...