Облачная платформаВсе платформы

Миграция данных в RDS for MySQL с использованием mysqldump

Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

Подготовка к миграции данных

Вы можете получить доступ к RDS экземплярам через EIP или из ECS через частную сеть.

  1. Подготовьте ECS для доступа к RDS экземпляру или подготовьте устройство для доступа к DB экземпляру через EIP.
    • Чтобы подключиться к DB экземпляру через ECS, вам необходимо создать ECS сначала.

      Подробную информацию о том, как создать и подключиться к ECS, смотрите Как создать и подключиться к ECS?

    • Чтобы подключиться к DB экземпляру через EIP, необходимо:
      1. Привяжите EIP к DB экземпляру. Для подробностей смотрите Привязка EIP.
      2. Убедитесь, что локальное устройство может получить доступ к EIP.
  2. Установите клиент MySQL на подготовленный ECS или устройство, которое может получить доступ к RDS. Для подробностей смотрите 6.
    Note

    Убедитесь, что версия клиента MySQL совпадает с версией движка БД вашего экземпляра RDS for MySQL. Как MySQL, так и его клиент включают встроенные утилиты mysqldump и mysql.

    После миграции данных в RDS конфигурации IP‑адресов приложений часто требуют обновления. RDS упрощает этот процесс. Он позволяет изменять плавающие IP‑адреса экземпляров, снижая сложность миграции и затраты. Для подробностей см. Изменение плавающего IP-адреса.

    Системные базы данных RDS mysql и sys не могут быть импортированы из одного экземпляра RDS for MySQL в другой.

Экспорт данных

Перед миграцией базы данных в RDS, её данные необходимо экспортировать.

Notice
  • Инструмент экспорта должен соответствовать версии движка БД.
  • Миграция базы данных выполняется в автономном режиме. Перед миграцией нужно остановить все приложения, использующие исходную базу данных.
  1. Войдите в исходную базу данных.
  2. Используйте утилиту mysqldump для экспорта структуры таблиц в файл SQL.

    Notice

    С 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>

    • 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

  3. Используйте утилиту 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 3306 -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.

Notice

Если исходная база данных содержит триггеры, хранимые процедуры, функции или события, необходимо установить log_bin_trust_function_creators на ON на целевой базе данных перед импортом данных.

  1. Войдите в ECS или устройство, которое может получить доступ к RDS DB экземпляр.
  2. Подключитесь к RDS экземпляру DB через клиент.
  3. Импортируйте структуру таблиц в RDS.

    # mysql -f -h<RDS_ADDRESS> -P<DB_PORT>-u root -p < <BACKUP_DIR>/dump-defs.sql

    • RDS_ADDRESS указывает IP‑адрес RDS экземпляра.
    • DB_PORT указывает порт экземпляра.
    • BACKUP_DIR указывает каталог, где dump-defs.sql хранится.

    Пример:

    # mysql -f -h 172.16.66.198 -P 3306 -u root -p < dump-defs.sql

    Введите пароль:

    Note

    Если вы планируете импортировать SQL‑операторы таблицы в RDS, укажите базу данных (mydb)

    в команде. В противном случае может появиться сообщение об ошибке "No database selected". Пример:

    # mysql -f -h 172.16.66.198 -P 3306 -u root -p mydb < dump-defs.sql

  4. Введите пароль:Импортировать данные в RDS

    .# mysql -f -h<RDS_ADDRESS> -P<DB_PORT> -u root -p < <BACKUP_DIR>

    • /dump-data.sqlRDS_ADDRESS указывает IP‑адрес RDS
    • экземпляра.DB_PORT
    • указывает порт экземпляра.BACKUP_DIR указывает каталог, где dump-data.sql

    хранится.

    Пример:

    # mysql -f -h 172.16.66.198 -P 3306 -u root -p < dump-data.sql

    Note

    Если вы хотите импортировать SQL‑операторы таблицы в RDS, укажите базу данных (mydb)

    в команде. В противном случае может появиться сообщение об ошибке "No database selected". Пример:

    Введите пароль:

  5. Посмотрите результат импорта.

    mysql> show databases;

    Следующий результат указывает, что база данных rdsdb была импортирована.

    mysql> show databases;
    +--------------------+
    | Database |
    +--------------------+
    | information_schema |
    | rdsdb |
    | mysql |
    | performance_schema |
    +--------------------+
    4 rows in set (0.00 sec)