​​Миграция базы данных PostgreSQL



Мы будем использовать две логические процедуры, а именно: репликацию и дампу.



Для начала необходимо подготовить исходный кластер, выполнив команды в данной последовательности:



ALTER ROLE <name> WITH REPLICATION, в скобках вместо name необходимо указать имя пользователя;



• Затем откройте postgresql.conf и укажите следующую информацию: wal_level = logical



• На этом этапе должна настроиться аутентификация в pg_hba.conf. Где <host>, укажите IP или DNS приемника:



host all all <host> md5



host replication all <host> md5




• Перезапустите систему управления базами данных с использованием инструкции: systemctl restart postgresql.



После подготовки кластера можно перенести схему базы данных. При этом должно соблюдаться требование, что схема базы данных в источнике должна быть идентична схеме базы данных в приемники.



Чтобы перенести базу данных, используйте следующие утилиты: pg_dump и pg_restore.



В завершении необходимо создать публикацию в источнике при помощи инструкции CREATE PUBLICATION <name> FOR ALL TABLES, указав название публикации. Для создания публикации нужно обладать правами superuser.



После этого нужно создать подписки в приёмнике, применив инструкцию CREATE SUBSCRIPTION <name> CONNECTION, указав название подписки. Для этого действия нужно иметь доступ администратора dbaas_admin.



В связи с невозможностью репликации последовательностей необходимо произвести восстановление дампа с последовательностями при помощи утилиты psql. Для этого сбросьте подписку в приемнике, выполнив команду:



DROP SUBSCRIPTION.




Создать дамп можно при помощи вышеупомянутых утилит: pg_dump и pg_restore. Дамп базы данных можно создать в кастомном формате (для восстановления отдельных элементов) или в SQL формате.