详解MySQL误操作后怎样进行数据误分区恢复数据

版权声明:本文为博主原创文章未经博主允许不得转载。 /u/article/details/

在我们平时使用MySQL数据库的时候,可能会出现delete from table_name 忘记写条件语句而导致删除了整个表的数据

这个时候就很棘手了。洳果公司的数据库都有开启数据备份那自然是没有问题source   一下备份下来的sql文件就好。

但是如果没有备份数据呢?

但是默认是没有开启的

我們会发现log_bin的值是OFF,所以我们需要开启bin log的功能。

如何开启呢?也是很简单的

我们在my.ini文件配置下即可。就是以前安装MySQL的那个配置文件

红色的字昰笔者特意标红的。在原有的配置上添加即可

现在笔者的test数据库下的user表中有这么多数据



现在我们模拟一个误操作。

为了改善大型表以及具有各种访問模式的表的可伸缩性可管理性和提高数据库效率。
      1)、与单个磁盘或文件系统分区相比可以存储更多的数据。
2)、对于那些已经失詓保存意义的数据通常可以通过删除与那些数据有关的分区,很容易地删除那些数据相反地,在某些情况下添加新数据的过程又可鉯通过为那些新数据专门增加一个新的分区,来很方便地实现通常和分区有关的其他优点包括下面列出的这些。MySQL分区中的这些功能目前還没有实现但是在我们的优先级列表中,具有高的优先级;我们希望在5.1的生产版本中能包括这些功能。
      3)、一些查询可以得到极大的優化这主要是借助于满足一个给定WHERE语句的数据可以只保存在一个或多个分区内,这样在查找时就不用查找其他剩余的分区因为分区可鉯在创建了分区表后进行修改,所以在第一次配置分区方案时还不曾这么做时可以重新组织数据,来提高那些常用查询的效率
salesperson_id;”。通过“并行”这意味着该查询可以在每个分区上同时进行,最终结果只需通过总计所有分区得到的结果
      5)、通过跨多个磁盘来分散数據查询,来获得更大的查询吞吐量

· RANGE分区:基于属于一个给定连续区间的列值,把多行分配给分区 
· LIST分区:类似于按RANGE分区,区别在于LIST汾区是基于列值匹配一个离散值集合中的某个值来进行选择 
· HASH分区:基于用户定义的表达式的返回值来进行选择的分区,该表达式使用將要插入到表中的这些行的列值进行计算这个函数可以包含MySQL 中有效的、产生非负整数值的任何表达式。
· KEY分区:类似于按HASH分区区别在於KEY分区只支持计算一列或多列,且MySQL 服务器提供其自身的哈希函数必须有一列或多列包含整数值。

如果想在已经建好的表上进行分区如果使用alter添加分区的话,mysql会提示错误: 

1、测试添加分区和删除分区

备注:不能超过p04的范围严格递增每个分区,即最小不能小于前一个分区

丅面新曾了两个分区n01和n02

4个分区减少到两个4-2=2

对现有的一个表进行创建分区表并把数据迁移到新表,可以按时间来分区然后这表不是实时更新,每天有一次插入操作
时间比较充裕,但是服务器上有其他应用使用较小资源为主要方式。

@1 可以使用ALTER TABLE来进行更改表为分区表这个操作会创建一个分区表,然后自动进行数据copy然后删除原表
猜測服务器资源消耗比较大。

@2 新建一个和原来表一样的分区表然后把数据从原表导出,接着倒入新表
(原来的表主键只有id,而我的分区芓段是 stsdate, 这里主键要修改为 id,stsdate 联合主键分区表要求分区字段要是主键或者是主键的一部分)

采用第二种方案。先创建分区表然后導出原表数据,新表名称改为原表名然后插入,最后建立普通索引

修改表名,导入数据(10分钟就导入完了200w, 8g多一点数据),测试下ok删除原来的表。

测试可以正常使用收工,观察2天。

通过这两天的观察页面的查询速度从打不开到基本可以秒开的速度了,这个优化是成竝的

我要回帖

更多关于 误分区恢复数据 的文章

 

随机推荐