如何使用mysqldump备份
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,这篇文章将为大家详细讲解有关如何使用mysqldump备份,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。问题描述在一次使用mysqldump备份单表部分数据时,发现
千家信息网最后更新 2025年01月21日如何使用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 -p123456select * 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安全错误
数据库的锁怎样保障安全
简述网络安全法的目的是什么
永宁企业网站服务器
软件开发中心天津待遇
数据库阻止保存要求重新
学习软件开发如何才能学好
java 数据库项目实例
情感主播的网络技术发展
成都市高新区软件开发比赛
菏泽idc服务器运维管理系统
邮箱 数据库
网络安全动漫图
数据库uml语言
网站服务器卡爆了怎么办
企业网络安全工作会议
技术软件开发公司是干嘛的
方舟如何租服务器
数据库id加密
上海东旦软件开发有
服务器机房管理书籍
软件开发与测试薪资
阿里云是独立服务器吗
十堰网络安全答题
数据存储服务器配套
简易的零信任网络安全
几几年开展了国家网络安全宣传周
网络安全系统有哪几个
网络安全服务机构的网址
阿里巴巴成立首席网络安全官
转行面试软件开发工学
常规软件开发平台