Миграция существующей базы данных в Amazon RDS - PullRequest
10 голосов
/ 24 января 2011

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

Ответы [ 8 ]

10 голосов
/ 13 января 2012

Я нашел эту страницу в документации 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 , таких как создание пользователей и предоставление разрешений.

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

6 голосов
/ 06 апреля 2011

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

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

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

enter image description here

3 голосов
/ 13 июня 2013

Краткое описание поста GoSquared Engineering:

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

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

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

  1. Включить ведение блогов, если вы еще не сделали
  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 (это может занять некоторое время в зависимости от размера вашей БД)
  4. Между тем, ваш текущий производственный экземпляр все еще обслуживает запросы - вот где master-data=2 и binlogging приходят
  5. В вашем файле backup.sql вверху будет строка, похожая на CHANGE MASTER TO MASTER_LOG_FILE=’mysql-bin.000003′, MASTER_LOG_POS=350789121;
  6. Получить diff с 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. Получить разность с последнего 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/migrating-mysql-to-amazon-rds.

2 голосов
/ 16 октября 2014

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

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

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

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

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

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

0 голосов
/ 27 октября 2015

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

# 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
0 голосов
/ 04 марта 2014

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

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

нет пробела
0 голосов
/ 04 декабря 2013

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

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