【问题标题】:mysqldump file imports slowly compared to phpmyadmin file与 phpmyadmin 文件相比,mysqldump 文件的导入速度较慢
【发布时间】:2012-08-05 04:02:06
【问题描述】:

我有一个大型 mySQL 数据库,每晚通过 cron 作业备份它:

/usr/bin/mysqldump --opt USERNAME -e -h SERVERNAME -uUSER -pPASSWORD > /home/DIRECTORY/backup.sql

它运行良好 - 除非我去“恢复”另一台服务器上的 sql 文件 - 这需要很长时间(大约 3 分钟)

这与使用 phpMyAdmin 形成对比——如果我“导出”并导出相同的 MySQL 数据库,然后将该 sql 文件导入另一台服务器,只需 10 秒。

问题:如何让“mysqldump”创建与“phpMyAdmin”相同类型的sql文件?

一些 FAST 版本的 sql 示例(不是全部):

CREATE TABLE IF NOT EXISTS `absence_type` (
  `absence_type_ID` int(16) NOT NULL AUTO_INCREMENT,
  `name` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`absence_type_ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=14 ;

--
-- Dumping data for table `absence_type`
--

INSERT INTO `absence_type` (`absence_type_ID`, `name`) VALUES
(1, 'Sick Leave'),
(2, 'Personal Carers'),
(3, 'Other');

一些 SLOW 版本的 sql 示例(不是全部):

        --
    -- Table structure for table `absence_type`
    --

    DROP TABLE IF EXISTS `absence_type`;
    /*!40101 SET @saved_cs_client     = @@character_set_client */;
    /*!40101 SET character_set_client = utf8 */;
    CREATE TABLE `absence_type` (
      `absence_type_ID` int(16) NOT NULL AUTO_INCREMENT,
      `name` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
      PRIMARY KEY (`absence_type_ID`)
    ) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
    /*!40101 SET character_set_client = @saved_cs_client */;

    --
    -- Dumping data for table `absence_type`
    --

    LOCK TABLES `absence_type` WRITE;
    /*!40000 ALTER TABLE `absence_type` DISABLE KEYS */;
    INSERT INTO `absence_type` VALUES
 (1,'Sick Leave'),
 (2,'Personal Carers'),
 (3,'Other');
    /*!40000 ALTER TABLE `absence_type` ENABLE KEYS */;
    UNLOCK TABLES;

【问题讨论】:

  • 您在 PHPMyAdmin 中选择了哪些选项 - 删除表、扩展插入?让它们匹配,看看你是否仍然得到导入时间的差异。
  • 感谢@JasonMcCreary - 我只是从 PHPMyAdmin 中选择“快速导出” - 没有选项?
  • 这意味着您正在使用默认选项。为什么不比较两个文件。我确定有一些明显的东西 - 文件大小、INSERT 语句等。
  • 谢谢@JasonMcCreary - 我看过了 - 有一些不同。我用一些例子编辑了我原来的问题。唯一的问题是我不知道我应该使用什么命令来使它们相同?
  • 从慢速查询开始并删除快速查询中没有的行,您可以从启用/禁用键对开始,然后是锁定/解锁对、删除表和 3 个字符集客户端,最后加上IF NOT EXISTS,之后他们应该是相等的,女巫改变使速度跳跃?

标签: mysql cron phpmyadmin backup mysqldump


【解决方案1】:

来自我的 cmets……

mysqldump 和 PHPMyAdmin 导出之间的选项可能不匹配。例如包含DROP TABLE、扩展INSERT等。

我建议比较这两个文件。我敢肯定有一些明显的东西。然后调整 mysqldump 或 PHPMyAdmin 的选项。两者都应该工作,因为后者在下面使用mysqldump

【讨论】:

    猜你喜欢
    • 2013-07-07
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多