Перенос атласа между стендами

  1. Создаем дамп переносимой схемы (в качестве примера, используется датасет ds_1):
su - postgres -c 'pg_dump -v -Fc --encoding=UTF-8 -n 'ds_1' -f /tmp/ds_1.sqlc mi'
  1. Переносим файл ds_1.sqlc на сервер с развернутой БД.

  2. Резервное копирование обновляемой БД (в примере дамп БД сохраняется в папку /tmp/):

su - postgres -c 'pg_dump -v -Fc --encoding=UTF-8 --blobs  -f /tmp/mi.cdump mi'
  1. Подготовка БД к переносу:

    4.1. В случае если в БД уже есть датасет ds_1:

    4.1.1 подключение к базе под пользователем postgres:

     su - postgres -c 'psql mi'
    

    4.1.2 удаляем имеющуюся схему:

     drop schema ds_1; 
    

    4.2. В случае если в БД нет датасета ds_1:
    4.1.1 подключение к базе под пользователем postgres:

         su - postgres -c 'psql mi'
    

    4.1.2. создаем запись в таблице adm.datasets:

        insert into adm.datasets (schema_name, title, description, is_visible) values ('ds_1','Название датасета','Описание датасета',1);
    
  2. выполняем заливку в БД:

su - postgres -c 'pg_restore -v -Fc -d mi /путь_к_файлу/ds_1.sqlc' 2>&1 | tee ./mi.log

В случае ошибки создания или клонирования атласа, после переноса, необходимо от имени пользователя postgres подать команду в БД mi:

DO $$
BEGIN
PERFORM adm.dump_dataset_schema(utils.ds_master_schema_name(), ‘master-schema-dump-10.3.3.sql’);
IF EXISTS (select 1 from pg_largeobject where loid = 19450509) THEN
PERFORM lo_unlink(19450509);
END IF;
PERFORM lo_import(‘/tmp/master-schema-dump-10.3.3.sql’, 19450509);
ALTER LARGE OBJECT 19450509 OWNER TO bi;
END
$$;