# Перенос базы из облака

При первом запуске Бипиум создает в базе служебные данные: раздел «Система» и служебные каталоги. Если вместо пустой базы использовать базу с данными из облачной версии Бипиума, то Бипиум при первом запуске создаст служебные данные в ней. В ней будут и служебные данные для работы коробочной версии и пользовательские данные, созданные в облаке.

{% hint style="warning" %}
**Нужна пустая база.** Перенести данные из облачной базы можно только в пустую базу данных. Перенос в уже созданную Бипиумом базу данных невозможен.
{% endhint %}

{% hint style="info" %}
**Получите базу данных.** Чтобы получить копию базы из облака отправьте запрос на [support@bpium.ru](mailto:support@bpium.ru), указав название домена. В ответ вы получите файл с бэкапом данных вашей компании. С помощью него вы сможете скопировать базу данных.

Предоставление копии базы данных возможно только после прохождения процесса **верификации**, необходимого для подтверждения прав на владение доменом. Действия для прохождения верификации:

* Для юридических лиц в отправляемом письме необходимо приложить скан письма от имени руководителя организации с запросом на предоставление копии.
* Для индивидуальных предпринимателей в отправляемом письме необходимо приложить скан письма от имени руководителя с запросом на предоставление копии. Если такой возможности нет, то запрос на предоставление копии нужно отправить с адреса электронной почты аккаунта создателя домена.
* Для физических лиц запрос на предоставление копии должен быть отправлен с адреса электронной почты аккаунта с доступом "Администрировать" отдел "Управление" в запрашиваемом домене.

Если процесс верификации не пройден, то наш отдел поддержки не сможет предоставить вам копию базы данных запрашиваемой системы.
{% endhint %}

## **Перенос база данных**

### **1. Подготовка будущего доступа**

Перед копированием базы данных из облака необходимо добавить в облачную базу служебного сотрудника, указав в качестве электронной почты «`admin`». Только этот сотрудник будет иметь доступ в серверную версию после клонирования. Другие сотрудники облачной базы потеряют доступ. Процесс восстановление доступа остальных сотрудников облачной базы описан ниже в этой статье.



### 2. Создание новой базы данных

Перед копирование базы данных, ее нужно создать. Это можно сделать через командную строку, инструменты работы с базой данных или SQL-скрипт:

```sql
CREATE DATABASE "ИМЯ_БД";
```

###

### 3. Создание пользователя для доступа в базу данных

Таблицы в дампе базы данных будут принадлежать пользователю облачного Бипиум. Чтобы развернуть базу локально, проще всего создать одноименного пользователя на локальном сервере базы данных. Пример SQL-скрипта:

```sql
CREATE USER "ЛОГИН" WITH PASSWORD 'ПАРОЛЬ';
REVOKE ALL ON DATABASE "ИМЯ_БД" FROM PUBLIC;
GRANT CONNECT ON DATABASE "ИМЯ_БД" TO "ЛОГИН";
GRANT ALL ON DATABASE "ИМЯ_БД" TO "ЛОГИН";
```

Имя пользователя вашей базы данных мы предоставим.



### 4. Бекап базы данных из облака

Для получения бэкапа вашей системы отправьте запрос на электронную почту нашей технической поддержки [support@bpium.ru](mailto:support@bpium.ru). После прохождения верификации сотрудник технической поддержки направит вам файл со слепком базы данных вашего домена.

Полученный файл загрузите любым доступным способом на ПК, на котором располагается база данных вашего серверного Бипиума.



### 5. Разворачивание базы данных локально

Развернуть базу данных можно командой `pg_restore`, которая входит в пакет PostgreSQL.

```
pg_restore -h ВАШ_СЕРВЕР -d "ИМЯ_БД" -U ЛОГИН -W -v "ИМЯ_ФАЙЛА"
```

* `pg_restore`— утилита для разворачивания бекап-файла
* `-h` — адрес хоста
* `-p` — порт хоста (по умолчанию: 5432)
* `-d` — имя базы данных
* `-U`— задает имя пользователя для подключения к базе данных
* `-W`— запрашивать ввод пароля

После завершения разворачивания базы данных как правило необходимо сбросить закешированные в ней данные. Для сброса закешированных данных подключитесь к локальной базе данных Бипиума через командную строку PostgreSQL и выполните следующий скрипт:

```sql
UPDATE cache SET time = now();
```



### 6. Создание служебных каталогов для работы сервера Бипиум

Чтобы серверная версия Бипиума использовала скопированную из облака базу данных, в ней нужно развернуть служебные данные для работы серверной версии. Для этого нужно в конфигурационном файле указать строку подключения к вашей локальной базе данных и запустить  `bpium-setup.exe`

## **Восстановление доступа сотрудников**

После клонирования базы данных, сотрудники потеряют в неё доступ. Это связано с безопасностью и ключами шифрования паролей. Потребуется удалить и создать по сотрудников по новой в каталоге Сотрудники.&#x20;

Существует упрощенный способ восстановить доступ сотрудников. Для этого для **каждого** сотрудника в каталоге Сотрудники проделайте следующее:

* Переименуйте почту на какую-либо другую. В качестве почты можно указать любой логин. При этом Бипиум в каталоге Ядро/Аккаунты создаст для отрудника учетную запись для входа (на временно указанную почту).
* После этого вновь переименуйте почту на прежнюю. При этом Бипиум в каталоге Ядро/Аккаунты подменит почту в учетной записи на нужную.
* Задайте пароль Сотруднику. Он сможет его поменять при первом входе.

## Перенос файлов из облака

Файлы, загруженные в облако не будут доступны. Можно восстановить к ним доступ или перенести их в свое хранилище.

### Доступ к файлам, ранее загруженным в облаке

Файлы, которые ранее были загружены в облаке будут недоступны, так как в базе хранятся относительные пути. Чтобы они стали доступны, нужно подменить пути в базе с относительных URL на абсолютные (с адресом сервера облачного файлового хранилища). Ранее загруженные файлы станут доступны, а файлы, которые будут добавляться позже, будут загружаться уже в локальное файловое хранилище с относительными путями.

Необходимо выполнить SQL-скрипт на созданной базе. Можно использовать любую утилиту для работы с _Postgre SQL: TablePlus, DBForge, EMS Postgre SQL manager, pgAdmin._

Скрипт для обновления URL файлов на абсолютные в облаке (требует _Postgres SQL 9.6+_):

```sql
UPDATE files
SET "url" = concat('https://storage.yandexcloud.net/bpium-userdata/',url),
"typeStorage"='url'
WHERE "typeStorage"='s3';
UPDATE files
SET metadata = jsonb_build_object(
     'thumbnail', 
concat('https://storage.yandexcloud.net/bpium-userdata/',metadata::json->>'thumbnail'),
        'preview', 
concat('https://storage.yandexcloud.net/bpium-userdata/',metadata::json->>'preview')
    )
WHERE metadata is not NULL;
```



### Перенос файлов в локальное файловое хранилище

Это возможно. Но сделать может только техническая поддержка Бипиума, так как нужны ключи для доступа в облачное файловое хранилище. Для копирования используется сервис CyberDuck.

{% hint style="warning" %}
При переносе файлов в локальное хранилище подменять пути к файлам **НЕ** нужно.
{% endhint %}
