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

Если вы хотите разместить базу данных отдельно от службы iBatyr Monitor и веб-интерфейса, подготовьте сервер БД и подключите к нему сервер iBatyr Monitor.

Работы на сервере БД

Установите ПО

  1. Установите чистый Ubuntu Server версии 20 или 22.

  2. Обновите пакеты в системе:

sudo apt update && sudo apt upgrade
  1. Установите пакеты для установки БД:

sudo apt install dirmngr ca-certificates software-properties-common apt-transport-https lsb-release curl -y
  1. Добавьте ключи к репозиторию PostgreSQL:

curl -fSsL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql.gpg > /dev/null
  1. Добавьте репозиторий:

echo deb [arch=amd64,arm64,ppc64el signed-by=/usr/share/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main | sudo tee /etc/apt/sources.list.d/postgresql.list
  1. Обновите списки репозиториев в пакетном менеджере:

sudo apt update
  1. Установите PostgreSQL 15:

sudo apt install postgresql-client-15 postgresql-15 -y

Создайте пользователя

  1. Найдите пароль на сервере iBatyr Monitor с помощью команды:

cat /etc/ibatyr/config | grep PASSWORD
  1. Скопируйте пароль. Он будет в кавычках, например:

'PASSWORD': '05ce255df14c3308143737316139b77',
  1. Вставьте пароль в команду вместо пароль и выполните ее на сервере БД:

sudo -u postgres psql -c "create user ibatyr with password 'пароль';"

Пример:

sudo -u postgres psql -c "create user ibatyr with password '05ce255df14c3308143737316139b77';"

Измените конфигурацию

  1. Откройте файл конфигурации /etc/postgresql/15/main/postgresql.conf для редактирования.

В примере используется Vim, но подойдет любой редактор:

sudo vim /etc/postgresql/15/main/postgresql.conf

Найдите строку:

#listen_addresses = 'localhost,00.00.00.000'             # what IP address(es) to listen on;

Уберите в строке символ # в начале строки и добавьте IP, по которому iBatyr Monitor будет обращаться на сервер БД.

Примечание

Важно указать именно IP-адрес сервера базы данных. Этот адрес определяет интерфейс, через который сервер принимает запросы. Он не связан с IP-адресом, с которого приходят запросы.

Сохраните изменения и выйдите из редактора.

  1. Откройте файл /etc/postgresql/15/main/pg_hba.conf для редактирования:

sudo vim /etc/postgresql/15/main/pg_hba.conf

В конец файла добавьте:

host    all             all             {ip сервера iBatyr Monitor}/{маска}        md5

Например, если 00.00.00.000 – IP-адрес сервера iBatyr Monitor и 32 – маска подсети:

host    all             all            00.00.00.000/32         md5
  1. Перезагрузите PostgreSQL для применения изменений:

sudo systemctl restart postgresql

Работы на сервере iBatyr Monitor

Перенесите базу данных

Примечание

Если на сервере нет данных, пропустите этот шаг и перейдите к разделу Создайте базу данных.

  1. Выключите сервер iBatyr Monitor:

ibatyr stop
  1. Создайте бэкап командой:

ibatyr backup_db
  1. Перенесите резервную копию из каталога /var/lib/ibatyr/ibatyr_backup/ibatyr-db.dump на сервер базы данных.

  2. Запустите восстановление БД на удаленном сервере:

sudo -u postgres pg_restore --verbose --clean --create --format=c {путь до файла бекапа} -d postgres

Например:

sudo -u postgres pg_restore --verbose --clean --create --format=c /home/ibatyr-db.dump -d postgres

Создайте базу данных

  1. На сервере БД подключитесь к PostgreSQL:

sudo -u postgres psql
  1. Создайте базу данных:

CREATE DATABASE ibatyr WITH OWNER = ibatyr ENCODING = 'UTF8' LC_COLLATE = 'ru_RU.UTF-8' LC_CTYPE = 'ru_RU.UTF-8' TEMPLATE = template0;
  1. Выберите созданную базу и создайте необходимые расширения:

\c ibatyr
CREATE EXTENSION pg_trgm;
CREATE EXTENSION ltree;
CREATE EXTENSION cube;
CREATE EXTENSION dblink;
CREATE EXTENSION pgcrypto;
  1. Скопируйте все файлы из директории /usr/share/ibatyr/data/ispell/ на сервере iBatyr Monitor в директорию /usr/share/postgresql/15/tsearch_data/.

Например, с помощью команды scp:

scp -r /usr/share/ibatyr/data/ispell/* user@10.10.10.2:/usr/share/postgresql/15/tsearch_data/

где user@10.10.10.1– имя пользователя и ip-адрес сервера iBatyr Monitor, а user@10.10.10.2 – имя пользователя и адрес сервера с базой данных.

  1. Инициализируйте БД на сервере iBatyr Monitor:

ibatyr init
  1. Готово! База данных перенесена на выделенный сервер.

Подключите базу данных

  1. Выключите сервер iBatyr Monitor:

ibatyr stop
  1. Откройте файл конфигурации iBatyr Monitor /etc/ibatyr/config:

sudo vim /etc/ibatyr/config

Найдите блок:

DATABASES = {
   'default': {
       'ENGINE': 'django.db.backends.postgresql_psycopg2',
       'NAME': 'ibatyr',
       'USER': 'ibatyr',
       'PASSWORD': '05ce255df14c3308143737316139b77',
       'HOST': '',
       'PORT': '',
   }
}

Укажите в HOST и PORT адрес и порт удаленного сервера PostgreSQL, например:

DATABASES = {
   'default': {
       'ENGINE': 'django.db.backends.postgresql_psycopg2',
       'NAME': 'ibatyr',
       'USER': 'ibatyr',
       'PASSWORD': '05ce255df14c3308143737316139b77',
       'HOST': '10.10.13.243',
       'PORT': '5432',
   }
}
  1. Отключите автоматический запуск БД на сервере iBatyr Monitor:

sudo systemctl stop postgresql
sudo systemctl disable postgresql
  1. Проверьте подключение к БД:

ibatyr sql

Если нет ошибок и вы видите приглашение от PostgreSQL (ibatyr=>), подключение прошло успешно.

Выйдите из приглашения:

\q
  1. Инициализируйте БД:

ibatyr init
  1. Готово! База данных перенесена на выделенный сервер.