mysql不小心把表清空_mysql 清空表 delete后怎么恢复
展开全部
|
delete 忘加where条件误删除恢复(binglog格式必须是ROW)
1.模拟误删除数据mysql> select * from t1;
+----+-------+-----+-----------+
|62616964757a686964616fe59b9ee7ad9431333363383961 id | name | sex | address |
+----+-------+-----+-----------+
| 1 | daiiy | m | guangzhou |
| 2 | tom | f | shanghai |
| 3 | liany | m | beijing |
| 4 | lilu | m | zhuhai |
+----+-------+-----+-----------+
rows in set (0.00 sec)
mysql> delete from t1;
Query OK, 4 rows affected (0.03 sec)
mysql> select * from t1;
Empty set (0.00 sec)
mysql>
2、在binglog中去查找相关记录[root@localhost mysql]# mysqlbinlog --no-defaults --base64-output=decode-rows -v -v mysql-bin.000024 | sed -n '/### DELETE FROM db01.t1/,/COMMIT/p' > delete.txt
[root@localhost mysql]# cat delete.txt
### DELETE FROM db01.t1
### WHERE
### @1=1 /* INT meta=0 nullable=0 is_null=0 */
### @2='daiiy' /* STRING(60) meta=65084 nullable=0 is_null=0 */
### @3=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
### @4='guangzhou' /* VARSTRING(90) meta=90 nullable=0 is_null=0 */
### DELETE FROM db01.t1
### WHERE
### @1=2 /* INT meta=0 nullable=0 is_null=0 */
### @2='tom' /* STRING(60) meta=65084 nullable=0 is_null=0 */
### @3=1 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
### @4='shanghai' /* VARSTRING(90) meta=90 nullable=0 is_null=0 */
### DELETE FROM db01.t1
### WHERE
### @1=3 /* INT meta=0 nullable=0 is_null=0 */
### @2='liany' /* STRING(60) meta=65084 nullable=0 is_null=0 */
### @3=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
### @4='beijing' /* VARSTRING(90) meta=90 nullable=0 is_null=0 */
### DELETE FROM db01.t1
### WHERE
### @1=4 /* INT meta=0 nullable=0 is_null=0 */
### @2='lilu' /* STRING(60) meta=65084 nullable=0 is_null=0 */
### @3=2 /* ENUM(1 byte) meta=63233 nullable=0 is_null=0 */
### @4='zhuhai' /* VARSTRING(90) meta=90 nullable=0 is_null=0 */
# at 2719
#140305 11:41:00 server id 1 end_log_pos 2746 Xid = 78
COMMIT/*!*/;
[root@localhost mysql]#
3、将记录转换成sql语句[root@localhost mysql]# cat delete.txt | sed -n '/###/p' | sed 's/### //g;s/\/\*.*/,/g;s/DELETE FROM/INSERT INTO/g;s/WHERE/SELECT/g;' | sed -r 's/(@4.*),/\1;/g' | sed 's/@[1-9]=//g' > t1.sql
[root@localhost mysql]# cat t1.sql
INSERT INTO db01.t1
SELECT
,
'daiiy' ,
,
'guangzhou' ;
INSERT INTO db01.t1
SELECT
,
'tom' ,
,
'shanghai' ;
INSERT INTO db01.t1
SELECT
,
'liany' ,
,
'beijing' ;
INSERT INTO db01.t1
SELECT
,
'lilu' ,
,
'zhuhai' ;
[root@localhost mysql]#
4、导入数据,验证数据完整性。mysql> source t1.sql;
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
Query OK, 1 row affected (0.02 sec)
Records: 1 Duplicates: 0 Warnings: 0
Query OK, 1 row affected (0.02 sec)
Records: 1 Duplicates: 0 Warnings: 0
Query OK, 1 row affected (0.01 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> select * from t1;
ERROR 1046 (3D000): No database selected
mysql> select * from db01.t1;
+----+-------+-----+-----------+
| id | name | sex | address |
+----+-------+-----+-----------+
| 1 | daiiy | m | guangzhou |
| 2 | tom | f | shanghai |
| 3 | liany | m | beijing |
| 4 | lilu | m | zhuhai |
+----+-------+-----+-----------+
rows in set (0.00 sec)
mysql>
到这里数据就完整回来了。
将binglog格式设置为row有利有弊,好处是记录了每一行的实际变化,在主从复制时也不容易出问题。但是由于记录每行的变化,会占用大量磁盘,主从复制时带宽占用会有所消耗。到底是使用row还是mixed,需要在实际工作中自己去衡量,但从整体上来说,binglog的格式设置为row,都是不二的选择
mysql不小心把表清空_mysql 清空表 delete后怎么恢复相关推荐
- mysql 共享表空间_MySQL共享表空间概念
该参数在mysql5.6.6及其后续版本默认开启,开启该参数的时候,Innodb将每个新创建的表的数据及索引存储在一个独立的.ibd文件里,而不是系统的表空间.当这些innodb表被删除或清空的时候, ...
- mysql 重置表索引_MySQL管理表和索引
MySQL管理表和索引 SQL语句: 数据库 表 索引 视图 DML创建数据库: CREATE DATABASE|SCHEMA [IF NOT EXISTS] db_name [CHARACTER S ...
- mysql数据表操作_MySQL数据表基本操作实例详解
本文实例讲述了MySQL数据表基本操作.分享给大家供大家参考,具体如下: 数据表的基本操作 1.主键约束要求主键列的数据唯一,并且不允许为空.主键能够唯一地识别表中的一条记录,可以结合外键来定义不同数 ...
- mysql字符集和表字符集_Mysql数据库表引擎与字符集
Mysql数据库表引擎与字符集 1.服务器处理客户端请求 其实不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是:客户端进程向服务器进程发送一段文本(MySQL语句),服务器进程处理 ...
- mysql分表存储_MySQL 分表存储的使用示例
分表存储是把记录保存在不同的表表会一个关联了在这里我们来看一篇关于MySQL 分表存储的使用示例,具体的例子如下文介绍. 一般我们项目中如果数据量特别大的话通常会考虑将某一表数据进行分表处理,例如:我 ...
- mysql 分表原理_MYSQL 分表原理(转)
简介: 引用MySQL官方文档中的一段话:MERGE存储引擎,也被认识为MRG_MyISAM引擎,是一个相同的可以被当作一个来用的MyISAM表的集合."相同"意味着所有表同样的列 ...
- mysql如何根据业务分表设计_mysql分表分库的应用场景和设计方式
很多朋友在论坛和留言区域问mysql在什么情况下才需要进行分库分表,以及采用何种设计方式才是最优的选择,根据这些问题,小编为大家整理了关于MySQL分库分表的应用场景和最优的设计方式举例. 一. 分表 ...
- desc mysql 连表查询_Mysql连表查询
mysql的连接 语法: select 查询列表 rom 表1 别名 连接类型 join 表2 别名 on连接条件 where 筛选条件 group by 分组 having 筛选条件 order b ...
- golang mysql多表查询_MySQL多表查询
一 多表连接查询 #重点:外链接语法 SELECT 字段列表 FROM 表1 INNER|LEFT|RIGHT JOIN 表2 ON 表1.字段= 表2.字段; #建表 create table de ...
- mysql表分区和表空间_mysql分表和分区的区别浅析
一.什么是mysql分表和分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表 什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上 二.my ...
最新文章
- Web性能优化之雅虎军规
- python vars()的用法
- Linux_RAID
- 074_JSON.stringify()
- 图形基础 GPU架构(2)软件调用栈
- 2通过程序获得环境变量,getenv(),setenv()函数和unsetenv()函数,env查看环境变量,echo输出指定的环境变量
- 西北工业大学计算机毕业论文,光纤通信发射机本科毕业论文 西北工业大学.docx...
- 系统性能衡量维度、指标
- Maven:repositories、distributionManagement、pluginRepositories中repository的区别
- Cocos2d-x3.0游戏实例《不要救我》第一章——前言
- sdut 2493 Constructing Roads (图论)
- 使用OBS做无延时/低延迟直播(实测)
- 第十届蓝桥杯单片机组(省赛代码)
- Xilinx HLS 学习笔记1
- 模拟信号隔离转换模块0-10V0-5V转4-20mA0-20mA直流转换
- 通过jad/mc/redefine命令,在docker容器中实现动态更新代码的功能:
- Oracle学习(七)——————————————查询进阶
- 简单理解目标检测的IOU究竟是什么
- Chamfer Distance (CD)
- 清默网络——我的CCIE考试经验与心得(2)