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

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

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

Получите базу данных. Чтобы получить копию базы из облака отправьте запрос на [email protected], указав название домена. В ответ вы получите строку подключения к базе данных вашей компании. С помощью неё вы сможете скопировать базу данных.

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

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

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

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

После клонирования, других сотрудников нужно удалить и создать по новой. Есть 2 варианта как восстановить им доступ:

  • Можно создать в каталоге Система/Аккаунты записи с соответствующими адресами электронной почты сотрудников. И далее назначить сотрудникам пароли в каталоге Управление/Сотрудники.

  • Можно в каталоге Сотрудники переименовать почту сотрудника на какую-либо другую (система создаст Аккаунт), и после этого вновь заменить на нужную почту (система создаст Аккаунт с нужной почтой).

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

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

CREATE DATABASE "ИМЯ_БД";

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

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

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

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

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

Сделайте бекап базы данных из облака. Важно, чтобы версии БД в облаке и на вашем сервере совпадали. На текущий момент в облаке используется 11 версия PostgreSQL.

Бекап базы данных можно сделать командой pg_dump, которая входит в пакет PostgreSQL.

pg_dump -h db.cloud.bpium.ru -d "ИМЯ_БД" -U ЛОГИН -W -Ft -b -E UTF8 -v -f "ИМЯ_ФАЙЛА"
  • pg_dump— утилита для создания бекап-файла данных

  • -h — адрес хоста

  • -d — имя базы данных

  • -U— задает имя пользователя для подключения к базе данных

  • -W— запрашивать ввод пароля

  • — кодировку (необходимо использовать UTF8)

  • -f — задает путь и имя бекап-файла

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

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

pg_restore -h ВАШ_СЕРВЕР -d "ИМЯ_БД" -U ЛОГИН -W -v "ИМЯ_ФАЙЛА"
  • pg_restorep— утилита для разворачивания бекап-файла

  • -h — адрес хоста

  • -d — имя базы данных

  • -U— задает имя пользователя для подключения к базе данных

  • -W— запрашивать ввод пароля

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

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

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

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

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

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

  • После этого вновь переименуйте почту на прежнюю. При этом Бипиум в каталоге Ядро/Аккаунты подменит почту в учетной записи на нужную.

  • Задайте пароль Сотруднику. Он сможет его поменять при первом входе.

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

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

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

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

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

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

UPDATE files
SET url = concat('https://bpium-userdata.s3-eu-west-1.amazonaws.com/',url),
"typeStorage"=’url’;
UPDATE files
SET metadata = jsonb_build_object(
'thumbnail',
concat('https://bpium-userdata.s3-eu-west-1.amazonaws.com/',metadata::json->>'thumbnail'),
'preview',
concat('https://bpium-userdata.s3-eu-west-1.amazonaws.com/',metadata::json->>'preview')
)
WHERE metadata is not NULL;

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

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

При переносе файлов в локальное хранилище подменять пути к файлам НЕ нужно.