我们在用mysqldump备份数据时,有个选项是 –where / -w,可以指定备份条件,这个选项的解释是:
~~~
-w, --where=name Dump only selected records. Quotes are mandatory
~~~
我们可以做个测试,例如:
~~~
mysqldump --single-transaction -w ' id mydump.sql
~~~
这时候就可以备份出mytable表中 id< 10000 的所有记录了。假设我们还想加一个时间范围条件,例如:
~~~
mysqldump --single-transaction -w " id mydump.sql
~~~
在这里,一定注意单引号和双引号问题,避免出现这种情况:
~~~
mysqldump --single-transaction -w ' id mydump.sql
~~~
这样的话,结果条件会被解析成:
~~~
WHERE id < 10000 and logintime < unix_timestamp(2014-06-01)
~~~
眼尖的同学会发现,时间条件变成了:
~~~
WHERE id < 10000 and logintime < unix_timestamp(2014-06-01)
~~~
也就是变成了:
~~~
unix_timestamp(2007) -- 2014-6-1 = 2007
~~~
这和我们原先的设想大相径庭,因此一定要谨慎。
- 前言
- 为什么InnoDB表要建议用自增列做主键
- 线上环境到底要不要开启query cache
- MySQL复制中slave延迟监控
- 如何安全地关闭MySQL实例
- 如何查看当前最新事务ID
- 从MyISAM转到InnoDB需要注意什么
- 5.6版本GTID复制异常处理一例
- 不同的binlog_format会导致哪些SQL不会被记录
- Spring框架中调用存储过程失败
- 如何将两个表名对调
- mysqldump加-w参数备份
- 使用mysqldump备份时为什么要加上 -q 参数
- 修改my.cnf配置不生效
- 什么情况下会用到临时表
- profiling中要关注哪些信息
- EXPLAIN结果中哪些信息要引起关注
- processlist中哪些状态要引起关注
- MySQL无法启动例一
- pt-table-checksum工具使用报错一例
- 为什么要关闭query cache,如何关闭
- MySQL联合索引是否支持不同排序规则
- SAVEPOINT语法错误一例
- 你所不知的table is full那些事
- 大数据量时如何部署MySQL Replication从库
- 内存溢出案例