Перенос существующей базы данных на Amazon RDS

Как импортировать существующую базу данных MySQL в Amazon RDS?

Ответ 1

Существует два способа импорта данных:

  • mysqldump: Если размер данных меньше 1 ГБ, вы можете напрямую использовать команду mysqldump и импортировать свои данные в RDS.
  • mysqlimport: Если размер ваших данных превышает 1 ГБ или в любом другом формате, вы можете сжать данные в плоские файлы и загрузить данные с помощью команды sqlimport.

Ответ 2

Я нашел эту страницу в документах AWS, в которой объясняется, как использовать mysqldump и транслировать его в экземпляр RDS.

Вот их примерный код (используйте в командной строке /shell/ssh ): mysqldump acme | mysql --host=hostname --user=username --password acme

где acme - это база данных, которую вы переносите, а hostname/username - это те из вашего экземпляра RDS.

Вы можете подключиться к RDS, как если бы это был обычный сервер mysql, просто добавьте свои IP-адреса EC2 в свои группы безопасности за этот форум, проводящий.

Мне нужно было указать пароль для локального mysqldump, поэтому моя команда больше выглядела следующим образом: mysqldump --password=local_mysql_pass acme | mysql --host=hostname --user=username --password acme

FWIW, я только закончил перемещение своих баз данных. Я использовал эту ссылку для команд mysql, как создание пользователей и предоставление разрешений.

Надеюсь, это поможет!

Ответ 3

Я большой поклонник инструмента SqlYog. Он позволяет подключаться к исходным и целевым базам данных, а также к схеме синхронизации и/или данным. Я также использовал SQLWave, но переключился на SqlYog. Был так давно, что я сделал переключатель, который я точно не помню, почему я переключился. Во всяком случае, это мои два цента. Я знаю, что некоторые возражают против моего предложения инструментов графического интерфейса Windows для MySQL. Мне действительно нравится продукт SqlYog настолько, что я запускаю его из Wine (безупречно работает с Wine on Ubuntu для меня). Этот blog может быть полезен.

enter image description here

Ответ 4

Краткое резюме публикации GoSquared Engineering:

Конфигурация + Загрузка

  • Выберите окно обслуживания и окно резервного копирования, когда экземпляр будет иметь самую низкую нагрузку.
  • Выберите Multi-AZ или нет (рекомендуется для автоматического переключения и обслуживания)
  • Загрузите свой экземпляр RDS
  • Настройте группы безопасности, чтобы ваши приложения и т.д. могли получить доступ к новому экземпляру

Перенос данных + подготовка

  • Включить binlogging, если вы еще не
  • Запустите mysqldump --single-transaction --master-data=2 -C -q dbname -u username -p > backup.sql в старом экземпляре, чтобы взять дамп текущих данных.
  • Запустите mysql -u username -p -h RDS_endpoint DB_name < backup.sql, чтобы импортировать данные в ваш экземпляр RDS (это может занять некоторое время в зависимости от вашего размера БД)
  • Тем временем ваш текущий экземпляр экземпляра по-прежнему обслуживает запросы - вот где master-data=2 и binlogging входят
  • В файле backup.sql у вас будет строка вверху, которая выглядит как CHANGE MASTER TO MASTER_LOG_FILE=’mysql-bin.000003′, MASTER_LOG_POS=350789121;
  • Получить diff с backup.sql как файл SQL mysqlbinlog /var/log/mysql/mysql-bin.000003 --start-position=350789121 --base64-output=NEVER > output.sql
  • Запустите эти запросы в вашем экземпляре RDS, чтобы обновить его cat output.sql | mysql -h RDS_endpoint -u username -p DB_name
  • Получить новую позицию журнала, найдя end_log_pos в конце последнего файла output.sql.
  • Получите diff с последнего output.sql (например, шаг 6) и повторите шаги 7 + 8.

Фактическая миграция

  • У вас все приложения готовы быстро развертываться с новым экземпляром RDS
  • Получить последние end_log_pos из output.sql
  • Запустите FLUSH TABLES WITH READ LOCK; в старом экземпляре, чтобы остановить все записи
  • Запустите развертывание приложений с помощью нового экземпляра RDS
  • Выполните шаги 6-8 сверху, чтобы обновить экземпляр RDS с последними запросами на старый сервер.

Заключение

Используя этот метод, у вас будет небольшое количество времени (в зависимости от того, сколько времени потребуется для развертывания ваших приложений +, сколько записей, которые выполняет ваш экземпляр MySQL, возможно, всего лишь минуту или две), когда записи отклонены от старого сервер, но вы будете иметь постоянную миграцию без простоя чтения.

Полное и подробное сообщение о том, как мы (GoSquared) перешли на RDS с минимальным временем простоя (включая отладку ошибок), доступно здесь: https://engineering.gosquared.com/migrating-mysql-to-amazon-rds.

Ответ 5

Я полностью согласен с @SanketDangi.

Существует два способа сделать это одним из способов, как предлагается с помощью mysqldump или mysqlimport.

Я видел случаи, когда он создает проблему при восстановлении данных в облаке.

Однако импорт приложений в облачный режим стал намного проще в течение нескольких дней. Вы пытаетесь загрузить сервер БД в общедоступное облако через ravello.

Вы можете импортировать свой сервер базы данных на Amazon, используя ravello.

Раскрытие информации: я работаю на равелло.

Ответ 6

Данные клиентов AWS RDS Руководство по импорту для Mysql доступно здесь: http://aws.amazon.com/articles/2933

  • Создание плоских файлов, содержащих загружаемые данные
  • Остановить любые приложения, обращающиеся к целевому экземпляру БД
  • Создание моментального снимка базы данных
  • Отключить автоматическое резервное копирование Amazon RDS
  • Загрузите данные с помощью mysqlimport
  • Включить автоматическое резервное копирование снова

Ответ 7

Если вы используете терминал, это то, что сработало для меня:

mysqldump -u local_username -plocal_password local_db_name | mysql -h myRDS-at-amazon.rds.amazonaws.com -u rds-username -prds_password_xxxxx remote_db_name

а затем я использовал MYSQL WorkBench (бесплатную загрузку), чтобы проверить, что он работает, потому что командная строка была статической после нажатия submit, я мог бы, вероятно, поместить -v в конец, чтобы увидеть его вывод

Примечание: после -p

нет пробела,

Ответ 8

Простейший пример:

# export local db to sql file:
mysqldump -uroot -p —-databases qwe_db > qwe_db.sql

# Now you can edit qwe_db.sql file and change db name at top if you want

# import sql file to AWS RDS:
mysql --host=proddb.cfrnxxxxxxx.eu-central-1.rds.amazonaws.com --port=3306 --user=someuser -p qwe_db < qwe_db.sql

Ответ 9

Вот шаги, которые я сделал и добился успеха.

Возьмите MySQLdump необходимой базы данных.

mysqldump -u имя пользователя -p имя базы данных - одиночная транзакция --quick --lock-tables = false> резервная копия имени базы данных - $ (дата +% F).sql

(Не забудьте заменить имя пользователя как root - чаще всего, и имя базы данных → имя базы данных DB, которую вы собираетесь перенести в RDS)

После запроса введите свой пароль.

После этого войдите в RDS Instance со своего сервера MySQL (убедитесь, что группы безопасности настроены так, чтобы разрешить подключение от Ec2 к RDS)

mysql -h хостадресс -p 3306 -u имя_пользователя -p

(Не забудьте заменить хост-адрес адресом вашего инстанса RDS, а rdsusernmae - именем пользователя для вашего инстанса RDS, когда будет предложено ввести пароль)

Вы найдете этот хост-адрес под - Связь и усиление. безопасность → Конечная точка & порт в базе данных RDS из консоли AWS.

После входа в систему создайте базу данных с помощью команд MySQL:

создать базу данных базы данных; \ Д

После создания базы данных в RDS импортируйте файл SQL, созданный на шаге 1:

mysql -h hosttaddress -u имя_пользователя -p имя базы данных & lt; backupfile.sql

Это должно импортировать файл SQL в RDS и восстановить содержимое в новую базу данных.

Ссылка от: https://k9webops.com/blog/migrate-an-existing-database-on-mysql-mariadb-to-an-already-running-rds-instance-on-the-aws/