Импорт базы данных MySQL в RDS - PullRequest
0 голосов
/ 16 мая 2018

Прошло уже 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,

1 Ответ

0 голосов
/ 21 мая 2018

Я думаю, что вы делаете что-то в корне неправильно в вашей команде, или вы вообще не можете подключиться к RDS, поэтому ваш импорт не работает.Я здесь, излагая шаги, которые также помогут вам в отладке проблемы, связанной с connection failure или no connection at all.

  1. Попробуйте импортировать простой файл, который я предоставляю ниже.Это необязательный шаг, но я бы порекомендовал вам сделать это.

Сохранить ниже 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.

Если вышеупомянутые два шага выполнены успешно, то нет никаких проблем с вашим соединением / разрешением с RDS, вы можете продолжитьдалее.

mysql -u <username> -p<password> -h <rds-name.aws-region.rds.amazonaws.com> < filename.sql

Все вышеперечисленные шаги полностью проверены на моем RDS, кроме шага 3, и это работает.Следовательно, если у вас ничего не получится, то следующий шаг - заглянуть в файлы «filename.sql», чтобы увидеть, что в них не так.Я мог бы попытаться повторить попытку ответа.

РЕДАКТИРОВАТЬ 24/05/2018 На основании комментария @Doms, что шаг 3 по-прежнему не выполняется, я вижу проблему с одной или несколькими таблицами илииз-за сбоя соединения, так как размер данных может быть огромным.

Сохраните следующее в одном из файлов sh и выполните его.Он выполнит экспорт таблицы по одной из исходной базы данных и импортирует ее в целевую базу данных.

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
...