导入 mysql 数据库到 RDS
Import mysql database to RDS
已经用了 12 个小时,我尝试导入一个 sql 文件到 RDS,我使用这个命令:
mysqldump -u <user> -h <rds_server> -p <database> < filename.sql
但没有任何效果,结果出现了这个错误
-- MySQL dump 10.13 Distrib 5.7.22, for Linux (i686)
--
-- Host: xxxxxxxxxx.us-east-2.rds.amazonaws.com Database: xxxxxxxxxx
-- ------------------------------------------------------
-- Server version 5.6.39-log
/*!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 */;
mysqldump: Couldn't execute 'SELECT DISTINCT TABLESPACE_NAME, FILE_NAME, LOGFILE_GROUP_NAME, EXTENT_SIZE, INITIAL_SIZE, ENGINE FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'DATAFILE' AND TABLESPACE_NAME IN (SELECT DISTINCT TABLESPACE_NAME FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA IN ('informagenie')) ORDER BY TABLESPACE_NAME, LOGFILE_GROUP_NAME': Lost connection to MySQL server during query (2013)
我在等你的帮助!
编辑 19/05/2018
head -n 10 import_file.sql
完成
-- Database Manager 4.2.5 dump
SET NAMES utf8;
SET time_zone = '+00:00';
SET foreign_key_checks = 0;
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
DROP TABLE IF EXISTS `wp_2_wpmm_subscribers`;
CREATE TABLE `wp_2_wpmm_subscribers` (
`id_subscriber` bigint(20) NOT NULL AUTO_INCREMENT,
我认为,您的命令存在根本性的错误,或者您根本无法连接到 RDS,这就是您的导入无法正常工作的原因。我在这里说明的步骤也将帮助您调试与 connection failure
或 no connection at all
.
相关的问题
- 尝试导入我在下面提供的一个简单文件。这是可选步骤,但我建议您这样做。
将以下 sql 个语句保存到文件中,名称为 red_boy.sql
Create database test_red;
use test_red;
CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50)
);
INSERT INTO MyGuests (firstname, lastname, email) VALUES ('Red', 'Boy', 'red@example.com'),('Red1', 'Boy', 'red1@example.com'),('Red2', 'Boy', 'red3@example.com'),('Red4', 'Boy', 'red4@example.com');
执行以下命令。
mysql -u <username> -p<password> -h <rds-name.aws-region.rds.amazonaws.com> < red_boy.sql
/**Replace <username> <password> and <rds-name.aws-region.rds.amazonaws.com> with full RDS URL.
如果以上两个步骤执行成功,那么你的connection/permission与RDS没有问题,你可以继续下一步。
mysql -u <username> -p<password> -h <rds-name.aws-region.rds.amazonaws.com> < filename.sql
除步骤 3 外,上述所有步骤都在我的 RDS 上得到了充分验证,并且有效。因此,如果对您不起作用,那么下一步就是查看您的文件 'filename.sql' 以查看其中有什么问题。我可以尝试重新尝试答案。
2018 年 5 月 24 日编辑
根据@Doms 的评论,第 3 步仍然失败,我看到一个或多个表的问题或连接失败,因为数据量可能很大。
Save following in one of sh files and execute it. It will do one by one table export from source database and import it into target database.
mysql -h source-database -u source_user -pSource_user_Password source_database --skip-column-names --execute='SHOW TABLES;' > tables.tmp
echo "Start!"
while read p; do
echo "Exporting" $p
mysqldump -h source-database -u source_user -pSource_user_Password source_database $p > $p.sql
echo "Importing" $p
mysql -h target-database -u Target_db_user -pTarget_db_password target_db_name < $p.sql
rm $p.sql
done <tables.tmp
rm tables.tmp
已经用了 12 个小时,我尝试导入一个 sql 文件到 RDS,我使用这个命令:
mysqldump -u <user> -h <rds_server> -p <database> < filename.sql
但没有任何效果,结果出现了这个错误
-- MySQL dump 10.13 Distrib 5.7.22, for Linux (i686)
--
-- Host: xxxxxxxxxx.us-east-2.rds.amazonaws.com Database: xxxxxxxxxx
-- ------------------------------------------------------
-- Server version 5.6.39-log
/*!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 */;
mysqldump: Couldn't execute 'SELECT DISTINCT TABLESPACE_NAME, FILE_NAME, LOGFILE_GROUP_NAME, EXTENT_SIZE, INITIAL_SIZE, ENGINE FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'DATAFILE' AND TABLESPACE_NAME IN (SELECT DISTINCT TABLESPACE_NAME FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA IN ('informagenie')) ORDER BY TABLESPACE_NAME, LOGFILE_GROUP_NAME': Lost connection to MySQL server during query (2013)
我在等你的帮助!
编辑 19/05/2018
head -n 10 import_file.sql
完成
-- Database Manager 4.2.5 dump
SET NAMES utf8;
SET time_zone = '+00:00';
SET foreign_key_checks = 0;
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
DROP TABLE IF EXISTS `wp_2_wpmm_subscribers`;
CREATE TABLE `wp_2_wpmm_subscribers` (
`id_subscriber` bigint(20) NOT NULL AUTO_INCREMENT,
我认为,您的命令存在根本性的错误,或者您根本无法连接到 RDS,这就是您的导入无法正常工作的原因。我在这里说明的步骤也将帮助您调试与 connection failure
或 no connection at all
.
- 尝试导入我在下面提供的一个简单文件。这是可选步骤,但我建议您这样做。
将以下 sql 个语句保存到文件中,名称为 red_boy.sql
Create database test_red;
use test_red;
CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50)
);
INSERT INTO MyGuests (firstname, lastname, email) VALUES ('Red', 'Boy', 'red@example.com'),('Red1', 'Boy', 'red1@example.com'),('Red2', 'Boy', 'red3@example.com'),('Red4', 'Boy', 'red4@example.com');
执行以下命令。
mysql -u <username> -p<password> -h <rds-name.aws-region.rds.amazonaws.com> < red_boy.sql /**Replace <username> <password> and <rds-name.aws-region.rds.amazonaws.com> with full RDS URL.
如果以上两个步骤执行成功,那么你的connection/permission与RDS没有问题,你可以继续下一步。
mysql -u <username> -p<password> -h <rds-name.aws-region.rds.amazonaws.com> < filename.sql
除步骤 3 外,上述所有步骤都在我的 RDS 上得到了充分验证,并且有效。因此,如果对您不起作用,那么下一步就是查看您的文件 'filename.sql' 以查看其中有什么问题。我可以尝试重新尝试答案。
2018 年 5 月 24 日编辑 根据@Doms 的评论,第 3 步仍然失败,我看到一个或多个表的问题或连接失败,因为数据量可能很大。
Save following in one of sh files and execute it. It will do one by one table export from source database and import it into target database.
mysql -h source-database -u source_user -pSource_user_Password source_database --skip-column-names --execute='SHOW TABLES;' > tables.tmp
echo "Start!"
while read p; do
echo "Exporting" $p
mysqldump -h source-database -u source_user -pSource_user_Password source_database $p > $p.sql
echo "Importing" $p
mysql -h target-database -u Target_db_user -pTarget_db_password target_db_name < $p.sql
rm $p.sql
done <tables.tmp
rm tables.tmp