Перенос БД mi на другой серевер postgres

Самый простой способ: через утилиту pg_dump, сделав дамп всей базы.

Создаю дамп базы:

su - postgres -c 'pg_dump -v -F c --encoding=UTF-8 --blobs -f /tmp/mi.cdump mi'


На целевом сервере отсутствует БД mi:

На целевом сервере создаю пустую базу mi и выдаю права для пользователя bi (команды выполняются от имени postgres):

create database mi;
alter database mi owner to bi;

Выполняю заливку данных с созданную базу:

su - postgres -c 'pg_restore -v -F c -d mi ./mi.cdump' 2>&1 | tee ./mi.log

после завершения переноса потребуется инициализировать lpe (выполняется так же от имени postgres):

alter database mi set plv8.start_proc = '"lpe"."init"';




На целевом сервере присутствует БД mi:

На целевом сервере переименовываю базу mi (команды выполняются от имени postgres):

SELECT pg_terminate_backend(pgsa.pid) FROM pg_stat_activity as pgsa WHERE pgsa.datname = 'mi' AND pid <> pg_backend_pid(); alter database mi rename to mi_old;

На целевом сервере создаю пустую базу mi и выдаю права для пользователя bi (команды выполняются от имени postgres):

create database mi;
alter database mi owner to bi;

Выполняю заливку данных с созданную базу:

su - postgres -c 'pg_restore -v -F c -d mi ./mi.cdump' 2>&1 | tee ./mi.log

после завершения переноса потребуется инициализировать lpe (выполняется так же от имени postgres):

alter database mi set plv8.start_proc = '"lpe"."init"';