Мигрирование существующей базы данных в Amazon RDS
-
23-10-2019 - |
Вопрос
Как я могу импортировать существующую базу данных MySQL в Amazon RDS?
Решение
Есть два способа импорта данных:
mysqldump
: Если ваш размер данных меньше 1 ГБ, вы можете напрямую использовать команду MySQldump и импортировать ваши данные в RDS.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 для меня). Этот блог может быть полезным.
Быстрое резюме пост инженерного поста:
Конфигурация + загрузка
- Выберите окно обслуживания и окно резервного копирования, когда экземпляр будет на самой низкой нагрузке
- Выберите 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 (это может занять некоторое время в зависимости от размера DB) - В то же время, ваш текущий экземпляр производства все еще обслуживает запросы - вот где
master-data=2
и входит бинлогинг - В вашем файле Backup.sql у вас будет линия вверху, которая выглядит как
CHANGE MASTER TO MASTER_LOG_FILE=’mysql-bin.000003′, MASTER_LOG_POS=350789121;
- Получить разницу, так как
backup.sql
как файл SQLmysqlbinlog /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/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 и восстановить содержимое в новую базу данных.