Вы можете получить доступ к RDS инстансам через EIP или с ECS по частной сети.
Подробности о том, как создать и подключиться к ECS, см. How Can I Create and Connect to an ECS?
Убедитесь, что версия клиента MySQL совпадает с версией движка БД вашего RDS for MySQL инстанса. И MySQL, и его клиент включают встроенные утилиты mysqldump и mysql.
После миграции данных в RDS часто требуется обновление конфигураций IP‑адресов приложений. RDS упрощает этот процесс. Он позволяет изменять плавающие IP‑адреса инстансов, снижая как сложность миграции, так и затраты. Подробности см. в Changing a Floating IP Address.
Системные базы данных RDS mysql и sys нельзя импортировать из одного RDS for MySQL инстанса в другой.
Перед миграцией базы данных в RDS её данные необходимо экспортировать.
База данных mysql требуется для управления RDS. При экспорте структуры таблицы не указывайте --all-database. В противном случае произойдёт ошибка базы данных.
mysqldump --databases <DB_NAME> --single-transaction --order-by-primary --hex-blob --no-data --routines --events --set-gtid-purged=OFF -u <DB_USER> -p -h<DB_ADDRESS> -P <DB_PORT>|sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' -e 's/DEFINER[ ]*=.*FUNCTION/FUNCTION/' -e 's/DEFINER[ ]*=.*PROCEDURE/PROCEDURE/' -e 's/DEFINER[ ]*=.*TRIGGER/TRIGGER/' -e 's/DEFINER[ ]*=.*EVENT/EVENT/' ><BACKUP_FILE>
Введите пароль базы данных, когда будет запрошено.
Пример:
mysqldump --databases rdsdb --single-transaction --order-by-primary --hex-blob --no-data --routines --events --set-gtid-purged=OFF -u root -p -h 192.168.151.18 -P 3306 |sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' -e 's/DEFINER[ ]*=.*FUNCTION/FUNCTION/' -e 's/DEFINER[ ]*=.*PROCEDURE/PROCEDURE/' -e 's/DEFINER[ ]*=.*TRIGGER/TRIGGER/' -e 's/DEFINER[ ]*=.*EVENT/EVENT/' > dump-defs.sql
Введите пароль:
Если вы используете mysqldump версии ранее 5.6, удалите --set-gtid-purged=OFF перед выполнением этой команды.
После выполнения этой команды будет создан файл dump-defs.sql со следующим содержимым:
[rds@localhost ~]$ ll dump-defs.sql-rw-r-----. 1 rds rds 2714 Sep 21 08:23 dump-defs.sql
База данных mysql необходима для управления RDS. При экспорте данных не указывайте --all-database. В противном случае произойдёт ошибка базы данных.
mysqldump --databases <DB_NAME> --single-transaction --hex-blob --set-gtid-purged=OFF --no-create-info --skip-triggers -u <DB_USER> -p -h<DB_ADDRESS> -P<DB_PORT> -r<BACKUP_FILE>
Подробную информацию о параметрах в предыдущей команде см. в 2.
Введите пароль к базе данных, когда будет запрошено.
Пример:
mysqldump --databases rdsdb --single-transaction --hex-blob --set-gtid-purged=OFF --no-create-info --skip-triggers -u root -p -h 192.168.151.18 -P 3306 -r dump-data.sql
Если вы используете mysqldump версии ранее 5.6, удалите --set-gtid-purged=OFF перед выполнением этой команды.
После выполнения этой команды будет создан файл dump-data.sql со следующим содержимым:
[rds@localhost ~]$ ll dump-data.sql-rw-r-----. 1 rds rds 2714 Sep 21 08:23 dump-data.sql
Вы можете подключить клиент к RDS и импортировать экспортированные файлы SQL в RDS.
Если исходная база данных содержит триггеры, хранимые процедуры, функции или события, необходимо установить log_bin_trust_function_creators в ON на целевой базе данных перед импортом данных.
# mysql -f -h<RDS_ADDRESS> -P<DB_PORT> -u root -p < <BACKUP_DIR>/dump-defs.sql
Пример:
# mysql -f -h 172.16.66.198 -P 3306 -u root -p < dump-defs.sql
Введите пароль:
Если вы планируете импортировать SQL‑операторы таблицы в RDS, укажите базу данных (mydb) в команде. В противном случае может появиться сообщение об ошибке "No database selected". Пример:
# mysql -f -h 172.16.66.198 -P 3306 -u root -p mydb < dump-defs.sql
Введите пароль:
# mysql -f -h<RDS_ADDRESS> -P<DB_PORT> -u root -p < <BACKUP_DIR>/dump-data.sql
Пример:
# mysql -f -h 172.16.66.198 -P 3306 -u root -p < dump-data.sql
Введите пароль:
Если вы планируете импортировать SQL‑операторы таблицы в RDS, укажите базу данных (mydb) в команде. В противном случае может появиться сообщение об ошибке "No database selected". Пример:
# mysql -f -h 172.16.66.198 -P 3306 -u root -p mydb < dump-defs.sql
Введите пароль:
mysql> show databases;
Следующий результат указывает, что база данных rdsdb была импортирована.
mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || rdsdb || mysql || performance_schema |+--------------------+4 rows in set (0.00 sec)