今天在一台新机器上,要把一个4个多G的sql脚本,导入到新库中。
方法一:windows系统下,使用数据库工具导入
我把这个脚本文件下载到本地,使用mysql工具提供的脚本导入方式。
导入到一小半,发生以下问题。
Task 'MySQL restore' finished at Tue May 23 09:54:19 CST 2023
2023-05-23 09:54:19.627 - IO error: Process failed (exit code = 1). See error log.
2023-05-23 09:54:19.628 - java.io.IOException: Process failed (exit code = 1). See error log.
at org.jkiss.dbeaver.tasks.nativetool.AbstractNativeToolHandler.validateErrorCode(AbstractNativeToolHandler.java:208)
at org.jkiss.dbeaver.tasks.nativetool.AbstractNativeToolHandler.executeProcess(AbstractNativeToolHandler.java:188)
at org.jkiss.dbeaver.tasks.nativetool.AbstractNativeToolHandler.doExecute(AbstractNativeToolHandler.java:248)
at org.jkiss.dbeaver.ext.mysql.tasks.MySQLNativeToolHandler.doExecute(MySQLNativeToolHandler.java:47)
at org.jkiss.dbeaver.tasks.nativetool.AbstractNativeToolHandler.lambda$0(AbstractNativeToolHandler.java:54)
at org.jkiss.dbeaver.runtime.RunnableContextDelegate.lambda$0(RunnableContextDelegate.java:39)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:122)
显然,我也不太懂这个错误怎么处理,方法一宣告失败。
方法二:在linux系统下,使用mysqldump命令
命令格式:mysqldump -uroot -proot --database vas < /tmp/vas.sql
发生错误信息:
mysqldump: Got error: 2002: "Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)" when trying to connect
这个错误信息,是因为,我们mysql使用docker安装启动的。没有配置localhost信息,那么命令找到配置文件中的数据库文件地址不正确。
对上面命令,需要指定服务器地址。修改如下:
mysqldump -uroot -proot -h10.215.209.230 --database vas < /tmp/vas.sql
执行结果如下:
-- MySQL dump 10.14 Distrib 5.5.68-MariaDB, for Linux (x86_64)
--
-- Host: 10.215.209.230 Database: vas
-- ------------------------------------------------------
-- Server version 5.5.62
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Current Database: `vas`
--
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `vas` /*!40100 DEFAULT CHARACTER SET latin1 */;
USE `vas`;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2023-05-23 14:41:40
也没导入成功。
网上还有一些说这个去除 /* 等,一样不成功。
还有的是原来没有--database 这个选项的,等等。
尝试后都没有成功。
方式三:mysql命令导入
我们使用mysql命令导入
mysql -h10.215.209.230 -uroot -P3306 -proot vas < /tmp/vas.sql
这个执行成功了,不过文件很大,中间一直卡这,没任何信息,直到执行成功。
如果大家执行时,发现mysql没找到,那就到mysql目录下
我用的服务器上是在/usr/bestv/mysql/data/mysql 下
到这里,我的导入尝试就成功了。4多G的文件,导入大概也就2分钟样子,还是很快的