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

Обновлена 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.

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

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

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

Проверьте, установлены ли расширения на локальной БД. Установите тот же набор расширений в развернутом инстансе.

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

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

psql -h 224.224.209.224 -p 5432 -U postgres -d PostgreSQL-7313

Переведите БД PostgreSQL-7313 в режим «только чтение»:

alter database "PostgreSQL-7313" set default_transaction_read_only=on;

Отключитесь от БД с помощью команды exit.

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

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

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

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

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;

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

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

psql -h 212.212.12.212 -p 5432 -U postgres -d PostgreSQL-7313

Выполните команду:

CREATE DATABASE "PostgreSQL-7313";

Если БД не была создана ранее, появится сообщение CREATE DATABASE.
Если БД создана, появится сообщение ERROR: database "PostgreSQL-7313" already exists.

Восстановите дамп БД-источника с помощью команды:

pg_restore --host=212.212.12.212 --username=user --dbname=PostgreSQL-7313 --port=5432 --verbose db_dump --single-transaction --no-privileges

В появившейся строке введите пароль AN0r25e0ae4d626p! для пользователя user.

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

psql -h 212.212.12.212 -p 5432 -U user -d PostgreSQL-7313

Выведите список таблиц БД:

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

List of relations Schema |  Name   | Type  | Owner --------+---------+-------+------- public | test-db | table | user(1 row)

Выведите данные таблицы test-db с помощью команды:

SELECT * FROM public."test-db";

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

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

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

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