千家信息网

如何使用mysqldump备份

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章将为大家详细讲解有关如何使用mysqldump备份,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。问题描述在一次使用mysqldump备份单表部分数据时,发现
千家信息网最后更新 2026年11月01日如何使用mysqldump备份

这篇文章将为大家详细讲解有关如何使用mysqldump备份,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

问题描述

在一次使用mysqldump备份单表部分数据时,发现无备份数据。阵针对这一奇怪现象,进行分析。

问题复现与分析
#表结构信息mysql> show create table test.t1;+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| Table | Create Table |+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| t1 | CREATE TABLE `t1` (`id` int(11) NOT NULL AUTO_INCREMENT,`time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`id`),KEY `idx_t` (`time`)) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 |+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)#表数据信息mysql> select * from test.t1;+----+---------------------+| id | time                |+----+---------------------+| 1 | 2018-12-10 22:15:39 || 2 | 2018-12-10 22:15:47 || 3 | 2018-12-10 22:15:50 || 4 | 2018-12-10 22:15:56 || 5 | 2018-12-10 22:15:57 || 6 | 2018-12-10 22:15:58 || 7 | 2018-12-10 22:15:58 || 8 | 2018-12-10 22:16:06 || 9 | 2018-12-10 22:16:06 || 10 | 2018-12-10 22:16:07 || 11 | 2018-12-10 22:16:08 || 12 | 2018-12-10 22:16:13 || 13 | 2018-12-10 22:16:13 || 14 | 2018-12-10 22:16:14 || 15 | 2018-12-10 22:16:15 |+----+---------------------+15 rows in set (0.00 sec)

使用mysqldump --where选项备份t1表部分数据。

#使用mysqldump根据time列条件备份mysqldump -uroot -p123456 --default-character-set=utf8 -q --master-data=2 --single-transaction --databases test --tables t1 --where "time>'2018-12-10 22:16:08'">beifen.sql#通过备份文件可以看出备份结果中并无数据。...LOCK TABLES `t1` WRITE;/*!40000 ALTER TABLE `t1` DISABLE KEYS */;/*!40000 ALTER TABLE `t1` ENABLE KEYS */;UNLOCK TABLES;...

在MySQL中使用相同条件查询,并无异常,可以查到数据。

[root@master ~]# mysql -uroot -p123456 -e "select * from test.t1 where time>'2018-12-10 22:16:08'"mysql: [Warning] Using a password on the command line interface can be insecure.+----+---------------------+| id | time                |+----+---------------------+| 12 | 2018-12-10 22:16:13 || 13 | 2018-12-10 22:16:13 || 14 | 2018-12-10 22:16:14 || 15 | 2018-12-10 22:16:15 |+----+---------------------+

尝试备份t1全表数据

mysqldump -uroot -p123456 --default-character-set=utf8 -q --master-data=2 --single-transaction --databases test --tables t1 >beifen.sql#有数据,但是仔细对照,我们可以发现时间回退了八个小时。LOCK TABLES `t1` WRITE;/*!40000 ALTER TABLE `t1` DISABLE KEYS */;INSERT INTO `t1` VALUES (1,'2018-12-10 14:15:39'),(2,'2018-12-10 14:15:47'),(3,'2018-12-10 14:15:50'),(4,'2018-12-10 14:15:56'),(5,'2018-12-10 14:15:57'),(6,'2018-12-10 14:15:58'),(7,'2018-12-10 14:15:58'),(8,'2018-12-10 14:16:06'),(9,'2018-12-10 14:16:06'),(10,'2018-12-10 14:16:07'),(11,'2018-12-10 14:16:08'),(12,'2018-12-10 14:16:13'),(13,'2018-12-10 14:16:13'),(14,'2018-12-10 14:16:14'),(15,'2018-12-10 14:16:15');/*!40000 ALTER TABLE `t1` ENABLE KEYS */;UNLOCK TABLES;#查看mysqldump备份文件头部信息,mysqldump使用的是中时区。.../*!40103 SET TIME_ZONE='+00:00' */;...#查看MySQL和系统时区。mysql> show variables like '%time%';+---------------------------------+-------------------+| Variable_name | Value |+---------------------------------+-------------------+| binlog_max_flush_queue_time | 0 || connect_timeout | 10 || datetime_format | %Y-%m-%d %H:%i:%s || default_password_lifetime | 0 || delayed_insert_timeout | 300 || explicit_defaults_for_timestamp | OFF || flush_time | 0 || have_statement_timeout | YES || innodb_flush_log_at_timeout | 1 || innodb_lock_wait_timeout | 50 || innodb_old_blocks_time | 1000 || innodb_rollback_on_timeout | OFF || interactive_timeout | 28800 || lc_time_names | en_US || lock_wait_timeout | 31536000 || log_timestamps | UTC || long_query_time | 10.000000 || max_execution_time | 0 || net_read_timeout | 30 || net_write_timeout | 60 || rpl_semi_sync_master_timeout | 10000 || rpl_stop_slave_timeout | 31536000 || slave_net_timeout | 60 || slow_launch_time | 2 || system_time_zone | CST || time_format | %H:%i:%s || time_zone | +08:00 || timestamp | 1544775697.554299 || wait_timeout | 28800 |+---------------------------------+-------------------+29 rows in set (0.01 sec)[root@master ~]# date -RWed, 12 Dec 2018 16:00:34 +0800#模拟数据恢复mysql> drop table test.t1;mysql -uroot -p123456 select * from t1;+----+---------------------+| id | time |+----+---------------------+| 1 | 2018-12-10 22:15:39 || 2 | 2018-12-10 22:15:47 || 3 | 2018-12-10 22:15:50 || 4 | 2018-12-10 22:15:56 || 5 | 2018-12-10 22:15:57 || 6 | 2018-12-10 22:15:58 || 7 | 2018-12-10 22:15:58 || 8 | 2018-12-10 22:16:06 || 9 | 2018-12-10 22:16:06 || 10 | 2018-12-10 22:16:07 || 11 | 2018-12-10 22:16:08 || 12 | 2018-12-10 22:16:13 || 13 | 2018-12-10 22:16:13 || 14 | 2018-12-10 22:16:14 || 15 | 2018-12-10 22:16:15 |+----+---------------------+15 rows in set (0.00 sec)#数据恢复正常。但是存在一个问题,因为mysqldump备份时会把数据进行时区转换,导致mysqldump过滤条件与筛选的数据差8个小时,所以可能会使where条件过滤不准确。比如文章开头所碰到的问题。

解决办法

#使用--skip-tz-utc,不使用mysqldump默认的中时区。mysqldump --default-character-set=utf8 -q --master-data=2 --single-transaction --databases test --tables t1 --where "time='2018-12-10 22:16:08'" -uroot -p123456 --skip-tz-utc>beifen.sql#数据完全正确,文件头部无时区转换,所以数据恢复时正常。LOCK TABLES `t1` WRITE;/*!40000 ALTER TABLE `t1` DISABLE KEYS */;INSERT INTO `t1` VALUES (11,'2018-12-10 22:16:08');/*!40000 ALTER TABLE `t1` ENABLE KEYS */;UNLOCK TABLES;

关于"如何使用mysqldump备份"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

数据 备份 时区 条件 问题 信息 数据恢复 文件 篇文章 头部 小时 文章 更多 部分 分析 不错 实用 相同 内容 办法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技保险 互联网和科技创新 互联网品科技 互联网金融 金融科技 互联网金融 科技金融 互联网科技ppt模板 天扬科技互联网广告 互联网科技素材视频竖屏 江苏南京365互联网科技 字节跳动和互联网科技 福建科技产业互联网发展 工业互联网展湾科技股份有限公司 山东子淼互联网科技有限公司 锡山区互联网智能科技产品供应 厦门江牛科技互联网 互联网科技融合创新 2021世界互联网领先科技成果发布 云南互联网科技学费 安徽零酒互联网科技有限公司 广州全民伙伴互联网科技有限公司 互联网科技保险 互联网科技垄断 智能科技公司是互联网公司吗 美国互联网黑科技 阿里巴巴算科技企业还是互联网 互联网企业和科技型企业 金融科技与互联网金融相同和不同 乌苏新华互联网科技做什么的 四川互联网展示科技馆设计 马化腾互联网科技教学
0