Как импортировать существующую базу данных MySQL в Amazon RDS?
Перенос существующей базы данных на 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 может быть полезен.
Ответ 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
как файл 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/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 и восстановить содержимое в новую базу данных.