Вопрос

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

Это было полезно?

Решение

Есть два способа импорта данных:

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

Другие советы

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

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

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

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

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

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

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

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

enter image description here

Быстрое резюме пост инженерного поста:

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

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

Миграция данных + подготовка

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

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

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

Вывод

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

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

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

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

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

Однако импорт приложений в облаке стала намного проще в настоящее время. Вы пробуете загрузить свой DB -сервер в Public Cloud через Ravello.

Вы можете импортировать свой сервер базы данных на Amazon с помощью Ravello.

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

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

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

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

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 (бесплатно скачать), чтобы проверить, что она работала, потому что командная строка была статичной после нажатия отправки, я мог бы положить -V в конце, чтобы увидеть его вывод

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

Самый простой пример:

# 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

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

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

mysqldump -u username -p DatabaseName-Single-Transaction-quick-lock tobles = false> databaseName-backup-$ (дата +%f) .sql

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

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

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

mysql -h hostaddress -p 3306 -u rdsusername -p

(Не забудьте заменить hostaddress с адресом вашего экземпляра RDS и Rdsusernmae с помощью имени пользователя для вашего экземпляра RDS, при запросе дайте пароль)

Вы обнаружите, что hostaddress out -подключение и безопасность -> Endpoint & Port в рамках базы данных RDS из консоли AWS.

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

Создание базы данных базы данных; Q.

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

mysql -h hostaddress -u rdsusername -p DatabaseName <backupfile.sql

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

Ссылка из: https://k9webops.com/blog/migrate-an-ueciiisting-database-on-mysql-mariadb-to-an-already-running-nstance-on-the-aws/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top