我有一个大型 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;
最佳答案
来 self 的评论......
mysqldump
和 PHPMyAdmin 导出之间的选项可能不匹配。例如包含DROP TABLE
、扩展INSERT
等
我建议比较这两个文件。我确定有一些明显的东西。然后调整 mysqldump
或 PHPMyAdmin 的选项。两者都应该工作,因为后者在下面使用 mysqldump
。
关于cron - 与 phpmyadmin 文件相比,mysqldump 文件导入速度较慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11857827/