Подготовка к миграции данных
Вы можете получить доступ RDS Экземпляры DB через EIP или через ECS.
- Подготовьте ECS для доступа к экземплярам DB в том же VPC или подготовьте устройство для доступа RDS через EIP.
- Чтобы подключиться к экземпляру DB через ECS, вам необходимо создать ECS сначала.
Для получения подробностей о том, как создать и подключиться к ECS, см Как создать и подключиться к ECS?
- Чтобы подключиться к экземпляру DB через EIP, вы должны:
- Привяжите EIP к экземпляру DB. Для получения подробностей см Привязка EIP.
- Убедитесь, что локальное устройство может получить доступ к EIP.
- Чтобы подключиться к экземпляру DB через ECS, вам необходимо создать ECS сначала.
- Установите клиент MySQL на подготовленном ECS или устройство.
Для получения подробностей см Как установить клиент MySQL?
NoteВерсия клиента MySQL должна совпадать с версией DB‑движка вашего экземпляра RDS for MySQL. База данных MySQL или клиент предоставят mysqldump и mysql.
После миграции данных в RDS вам может потребоваться изменить IP‑адрес. Для получения подробностей см Просмотр и изменение плавающего IP‑адреса.
Системные базы данных RDS mysql и sys cannot be imported from one RDS for MySQL instance to another.
Exporting Data
Before migrating a database to RDS, its data needs to be exported.
- The export tool must match the DB engine version.
- Database migration is performed offline. Before the migration, you have to stop all applications using the source database.
- Log in to the source database.
- Use the mysqldump tool to export the table structure to an SQL file.Notice
The mysql database is required for RDS management. When exporting the table structure, do not specify --all-database. Otherwise, a database fault will occur.
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>
- DB_NAME указывает имя базы данных, которую необходимо мигрировать.
- DB_USER указывает имя пользователя базы данных.
- DB_ADDRESS указывает адрес базы данных.
- DB_PORT указывает порт базы данных.
- 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
Введите пароль:
NoteЕсли вы используете 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 - Используйте инструмент mysqldump для экспорта данных в файл SQL.Notice
Эта 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 8635 -r dump-data.sql
NoteЕсли вы используете 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 на целевой базе данных перед импортом данных.
- Войдите в ECS или устройство, которое может получить доступ к RDS Экземпляр DB.
- Подключиться к RDS Экземпляр DB через клиент.
- Импортировать структуру таблицы в RDS.
# mysql -f -h<RDS_ADDRESS>-P<DB_PORT>-uroot-p < <BACKUP_DIR>/dump-defs.sql
- RDS_ADDRESS указывает IP‑адрес RDS Экземпляр DB.
- DB_PORT указывает порт экземпляра RDS DB.
- BACKUP_DIR указывает каталог, где dump-defs.sql хранится.
Пример:
# mysql -f -h 172.16.66.198 -P 3306 -u root -p < dump-defs.sql
Введите пароль:
NoteЕсли вы собираетесь импортировать SQL‑операторы таблицы в RDS, укажите базу данных в команде. В противном случае может быть отображено сообщение об ошибке "No database selected". Например, если вы собираетесь импортировать SQL‑операторы таблицы в базу данных mydb, выполните следующую команду:
# mysql -f -h 172.16.66.198 -P 3306 -u root -p mydb < dump-defs.sql
Введите пароль:
- Импортировать данные в RDS.
# mysql -f -h<RDS_ADDRESS>-P<DB_PORT>-uroot-p< <BACKUP_DIR>/dump-data.sql
- RDS_ADDRESS указывает IP-адрес RDS экземпляр БД.
- DB_PORT указывает порт экземпляра RDS DB.
- BACKUP_DIR указывает каталог, где dump-data.sql хранится.
Пример:
# mysql -f -h 172.16.66.198 -P 3306 -u root -p < dump-data.sql
Введите пароль:
NoteЕсли вы планируете импортировать SQL‑операторы таблицы в RDS, укажите базу данных в команде. В противном случае может появиться сообщение об ошибке "No database selected". Например, если вы планируете импортировать SQL‑операторы таблицы в базу данных mydb, выполните следующую команду:
# 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)