VK Cloud logo
Обновлена 8 ноября 2023 г. в 17:17

Миграция из локальной PostgreSQL

VK Cloud поддерживает миграцию из внешних СУБД в сервис Cloud Databases с помощью инструментов дампа pg_dump и pg_restore.

Будет рассмотрена миграция данных из источника:

  • база данных: PostgreSQL версии 13;

  • имя БД: PostgreSQL-7313;

  • IP-адрес: 224.224.209.224, порт 5432;

  • таблица БД test-db с данными:

    id | name | number ----+------+--------  1 | a    |  1  2 | b    |  2  3 | c    |  3

Приемником станет инстанс БД с типом конфигурации Single, развернутый в проекте VK Cloud.

Все действия инструкции необходимо выполнить с локальной машины.

Подготовительные шаги

  1. Разверните в VK Cloud инстанс БД PostgreSQL:

    • версия СУБД: 13;
    • название инстанса БД: PostgreSQL-7313;
    • тип конфигурации: Single;
    • внешний IP: добавить, в примере будет использоваться 212.212.12.212;
    • имя пользователя: user;
    • пароль пользователя: AN0r25e0ae4d626p!.
  2. Проверьте, установлены ли расширения на локальной БД. Установите тот же набор расширений в развернутом инстансе.

  3. Убедитесь, что версия pg_restore БД-источника совпадает с версией pg_dump БД-приемника.

1. Создайте дамп БД-источника

  1. Подключитесь к БД-источнику под пользователем postgres:

    psql -h 224.224.209.224 -p 5432 -U postgres -d PostgreSQL-7313
  2. Переведите БД PostgreSQL-7313 в режим «только чтение»:

    alter database "PostgreSQL-7313" set default_transaction_read_only=on;
  3. Отключитесь от БД с помощью команды exit.

  4. Создайте дамп с помощью команды:

    pg_dump --host=224.224.209.224 --port=5432 --username=user --format=c --dbname=PostgreSQL-7313 --file=db_dump

    Дождитесь завершения операции — будет создан файл db_dump.

  5. Повторно подключитесь к БД и выведите ее из режима «только чтение»:

    psql -h 224.224.209.224 -p 5432 -U postgres -d PostgreSQL-7313set default_transaction_read_only=off;alter database "PostgreSQL-7313" set default_transaction_read_only=off;

2. Восстановите данные из дампа в БД-приемник

  1. (Опционально) Убедитесь, что в СУБД-приемнике создана БД PostgreSQL-7313:

    1. Подключитесь к БД PostgreSQL-7313 под пользователем postgres:

      psql -h 212.212.12.212 -p 5432 -U postgres -d PostgreSQL-7313
    2. Выполните команду:

      CREATE DATABASE "PostgreSQL-7313";
      • Если БД не была создана ранее, появится сообщение CREATE DATABASE.
      • Если БД создана, появится сообщение ERROR: database "PostgreSQL-7313" already exists.
  2. Восстановите дамп БД-источника с помощью команды:

    pg_restore --host=212.212.12.212 --username=user --dbname=PostgreSQL-7313 --port=5432 --verbose db_dump --single-transaction --no-privileges
  3. В появившейся строке введите пароль AN0r25e0ae4d626p! для пользователя user.

3. Проверьте загруженные данные в VK Cloud

  1. Подключитесь к БД PostgreSQL-7313 в инстансе-приемнике под пользователем user:

    psql -h 212.212.12.212 -p 5432 -U user -d PostgreSQL-7313
  2. Выведите список таблиц БД:

    \dt

    При успешной миграции данных отобразится таблица test-db:

    List of relations Schema |  Name   | Type  | Owner --------+---------+-------+------- public | test-db | table | user(1 row)
  3. Выведите данные таблицы test-db с помощью команды:

    SELECT * FROM public."test-db";

    Если данные перенесены успешно, будут выведены строки:

    id | name | number ----+------+--------  1 | a    |      1  2 | b    |      2  3 | c    |      3(3 rows)

Удалите неиспользуемые ресурсы

Развернутый инстанс БД тарифицируется и потребляет вычислительные ресурсы. Если он вам больше не нужен:

  • Удалите инстанс БД.
  • При необходимости удалите плавающий IP-адрес, назначенный инстансу БД.