使用mysqldump迁移数据库导致表结构变化的原因

使用mysqldump迁移数据库导致表结构变化的原因

问题描述

  • 使用下面命令导出SQL时,发现表结构发生了变化
mysqldump -u ocean_monitor_w -h 10.46.7.143 -P 6245 -p***** bce_ocean_monitor --skip-opt >./machine.sql
  • 原有建表语句是这样的:
CREATE TABLE `yunti_expansion_task` (
  `task_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `host_list` text NOT NULL COMMENT 'host_list'
  PRIMARY KEY (`task_id`)
) ENGINE=InnoDB AUTO_INCREMENT=692 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8 COMMENT='yunti_expansion_task';
  • 使用mysqldump导出之后的建表语句是这样的:
CREATE TABLE `yunti_expansion_task` (
  `task_id` bigint(20) NOT NULL COMMENT 'id',
  `host_list` text NOT NULL COMMENT 'host_list',
  PRIMARY KEY (`task_id`),
);
  • 对比可知,建表语句的区别在于‘id’字段由自增类型变为非自增类型。

原因

请教了公司的DBA,然后自己又进行了实验,终于找到了问题所在。

  • mysqldump使用时,我加了‘–skip-opt’选项,改选项的官方解释如下:

–skip-opt:
Disable --opt. Disables --add-drop-table, --add-locks, --create-options, --quick, --extended-insert

  • 这个选项直接导致了‘ --create-options’的关闭,该选项的官方解释如下:

-a, --create-options:
Include all MySQL specific create options. (Defaults to on; use --skip-create-options to disable.)

  • 我又使用‘–skip-create-options’选项验证了一下,果然是这里的问题,SQL如下:
mysqldump -u ocean_monitor_w -h *.*.*.* -P 6245 -p***** --skip-lock-tables  --quick --skip-create-options bce_ocean_monitor --tables yunti_expansion_task >./machine.sql

写在后面

虽然踩了一个坑,但是也算是自己的收获,赶紧记下来,方便后来人更快解决问题,然后自己静待明天背锅。。

发布了30 篇原创文章 · 获赞 13 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qiaominghe/article/details/103132866
今日推荐