mysqldump的disable-keys引发的灾难

mysqldump 有一个默认的参数disable-keys ,默认是开启的。
这在绝大部分情况下是没问题的,但是特殊情况下,可能会带来灾难性的后果。

回想几年前,某知名手机论坛白天莫名奇妙的刷不开网页,最后没办法停机维护小半天的情况,据小道消息,就是这个问题造成的。

整个过程猜测如下:

1、他们的环境还是比较规范的,有测试跟线上环境,开发人员在测试环境里用工具导出了一部分数据出来,需要导入到线上环境。
        另外由于论坛,目前绝大补发论坛都是myisam表引擎,此论恰好是myisam(后面说明为啥是myisam),奠定了灾难的基础。

2、普通的数据库,这种操作方法完全是没有问题,但是这个是知名论坛,访问量是比较大的, 论坛的一个主表被执行了disable-keys,悲剧就发生了。

另外:
    这个情况只针对于myisam 表,对于大家用的最多的innodb是没有问题的。
    对于discuz 论坛这样的老系统,涉及不同环境导入数据使用dump导出部分数据,然后导入到另一个环境的时候,一定要注意了。

符合上面的情况情况下,可以使用 --disable-keys=FAlSE 避免发生。

时间: 2024-12-30 02:53:01

mysqldump的disable-keys引发的灾难的相关文章

php代码审计之弱类型引发的灾难

有人说php是世界上最好的语言,这可能是对开发人员来说,确实有这方面的特点,因为它开发起来不像其他语言那样麻烦,就比如:弱类型,它不需要像java等语言那样明确定义数据类型.这给开发带来了很大的便利,所有的数据类型都可以用$xx来定义,而不需要int i,string a,fload b等等这样去定义它.这样确实很方便,因为php帮助你判断了数据类型,比如整形int ,你只要$a=1;那这个1就是整形,$a='abc'那这个abc就会被php判断为字符串类型.但是弱类型方便是方便,但是带来的安全

一个TouchableOpacity引发的灾难

今天碰见一个从来没见过的bug,很古怪也很有意思,特意记录下来. 代码如下 <View style={{width:280,flexWrap:'wrap',flexDirection:'row',marginRight:50,}}> { rowData.picurl1!=''&&rowData.picurl1.indexOf('/')==0? <TouchableOpacity onPress={this.openModal.bind(this, true,1,rowDa

一个数组引发的“灾难”

国庆后上班,领导要求给一个模块写一个PC测试软件,功能要求很简单,读取配置文件,然后根据文件中的数据对模块进行依次定时查询/设置,加上测试用了三天时间(注:用本人电脑做的测试),最后是发给同事,但在他的电脑都无法运行,双击软件没有任何反应. 需要说明一下:我的电脑是32位的win8系统,64位win7系统   软件我使用32位的VS2010编写的,.net framework是4.0的 看到这个情况,我首先想到的是同事的电脑没有 .net framework 4.0,但是根据以往的经验,如果.n

Linux 服务器 node 节点满了引发的灾难,请定期清理node节点

1.一台Linux服务器 node节点满了后最直接的表现就是 服务器无法创建临时文件,创建文件 比如 mysql报错提示无法创建tmp文件 apache 无法启动 截图如下 如何查看node节点的使用率? 使用 df -i 原文地址:https://www.cnblogs.com/pxjbk/p/12178180.html

【摘】Mysql备份还原数据库之mysqldump实例及参数详细说明

原文http://www.cnblogs.com/xuejie/archive/2013/01/11/2856911.html   我们在运营项目的过程中肯定会遇到备份数据库,还原数据库的情况,我们一般用一下两种方式来处理: 1.使用into outfile 和 load data infile导入导出备份数据 这种方法的好处是,导出的数据可以自己规定格式,并且导出的是纯数据,不存在建表信息,你可以直接导入另外一个同数据库的不同表中,相对于mysqldump比较灵活机动. 我们来看下面的例子:

mysqldump原理1

http://blog.csdn.net/linwaterbin/article/category/1299332 mysqldump -S /tmp/mysql.sock --single-transaction --force --databases test > v1.sql [[email protected] data]# cat v1.sql -- MySQL dump 10.13 Distrib 5.6.28, for Linux (x86_64) -- -- Host: loca

MySQL操作mysqldump命令详解

--all-databases , -A导出全部数据库. --all-tablespaces , -Y导出全部表空间. --no-tablespaces , -y不导出任何表空间信息. --add-drop-database每个数据库创建之前添加drop数据库语句. --add-drop-table每个数据表创建之前添加drop数据表语句.(默认为打开状态,使用--skip-add-drop-table取消选项) --add-locks在每个表导出之前增加LOCK TABLES并且之后UNLOC

mysqldump 的用法

--add-drop--database 在每个CREATE DATABASE语句前添加DROP DATABASE语句. --add-drop-tables 在每个CREATE TABLE语句前添加DROP TABLE语句. --add-locking 用LOCK TABLES和UNLOCK TABLES语句引用每个表转储.重载转储文件时插入得更快. --all--database,-A 转储所有数据库中的所有表.与使用---database选项相同,在命令行中命名所有数据库. --allow-

MySQL Database Backup Methods Season 1 - mysqldump

mysqldump工具是MySQL数据库备份时, 经常用到的一个工具. 可以指定数据表, 某些数据库, 所有数据库级别的备份, 在命令行上敲入mysqldump回车, 可看到该三种方式的示例. [email protected]:~$ mysqldump Usage: mysqldump[OPTIONS] database [tables] OR     mysqldump [OPTIONS] --databases [OPTIONS]DB1 [DB2 DB3...] OR     mysqld