Show/Hide Toolbars

Руководство по тех. обслуживанию

Установка и настройка СУБД PostgreSQL 16

Ссылки Назад Вверх Вперед

warning_icon  В данном разделе приведена инструкция для установки PostgreSQL 16 для версии OS Ubuntu 22.04 LTS

Установка PostgreSQL 16

1. Обновляем список пакетов и устанавливаем необходимые зависимости:

sudo apt update

 

sudo apt install -y apt-transport-https ca-certificates curl freetds-common freetds-dev g++ gcc git gnupg gnupg2 gpg libcurl4-openssl-dev libsybdb5 lsb-release make software-properties-common vim wget

2. Проверяем, версию в репозитории:

sudo apt policy postgresql

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

curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg

 

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

 

sudo apt update

3. Устанавливаем пакеты PostgreSQL:

sudo apt install -y postgresql-16 postgresql-server-dev-16 postgresql-client-16 postgresql-16-rum

Настройка сервера PostgreSQL 16

(Опционально) Перемещаем каталог данных PostgreSQL. В качестве нового каталога используем /pgdata. Вы указать другой, необходимый вам, каталог.

1. Создаем каталог /pgdata:

sudo mkdir /pgdata

2. Назначаем владельца на директории:

sudo chown -R postgres:postgres /pgdata

3. Останавливаем службу PostgreSQL:

sudo systemctl stop postgresql.service

4. Копируем файлы данных из каталога по умолчанию в новый каталог:

sudo cp -r -p /var/lib/postgresql/16/main/. /pgdata

Настройка postgresql.conf

В файле конфигурации '/etc/postgresql/16/main/postgresql.conf' редактируем следующие параметры:

data_directory = '/pgdata' # опционально

max_connections = 1500

listen_addresses = '*'

log_timezone = 'Europe/Moscow'

timezone = 'Europe/Moscow'

Настройка доступа к серверу PostgreSQL

Для настройки доступа к серверу PostgreSQL необходимо внести изменения в файлы конфигурации.

Настраиваем доступ к серверу PG. Для этого редактируем файл '/etc/postgresql/16/main/pg_hba.conf'

Для разрешения соединения только из указанной подсети:

host    all             all             192.168.4.0/24  md5

Для разрешения соединения из любой подсети:

host    all             all             0.0.0.0/0       md5

Настройка локализации

1. Устанавливаем локаль ru_RU.utf8:

sudo apt install -y language-pack-ru

sudo update-locale LANG=ru_RU.UTF-8

2. Проверяем командой locale. Должны получить следующее:

LANG=ru_RU.UTF-8

LANGUAGE=

LC_CTYPE="ru_RU.UTF-8"

LC_NUMERIC="ru_RU.UTF-8"

LC_TIME="ru_RU.UTF-8"

LC_COLLATE="ru_RU.UTF-8"

LC_MONETARY="ru_RU.UTF-8"

LC_MESSAGES="ru_RU.UTF-8"

LC_PAPER="ru_RU.UTF-8"

LC_NAME="ru_RU.UTF-8"

LC_ADDRESS="ru_RU.UTF-8"

LC_TELEPHONE="ru_RU.UTF-8"

LC_MEASUREMENT="ru_RU.UTF-8"

LC_IDENTIFICATION="ru_RU.UTF-8"

LC_ALL=

3. Настраиваем формат даты и времени. Создаем файл '/etc/freetds/locales.conf' со следующим наполнением:

sudo vim /etc/freetds/locales.conf

 

[default]

 date format = %b %e %Y %I:%M:%S.%z%p

4. Проверяем командой date. Должны получить дату в следующем формате:

Вт 09 мая 2023 22:16:05 UTC

Перезапуск службы PostgreSQL. Проверка статуса

1. Для перезапуска службы выполним следующую команду:

sudo systemctl restart postgresql.service

2. Проверим статус:

sudo systemctl status postgresql.service

sudo systemctl status postgresql@16-main.service

Настройка расширений

1. Для использования баз данных "Первой Формф" в PostgreSQL должны быть настроены следующие расширения:

http

pg_buffercache

pg_hint_plan

pgcrypto

postgres_fdw

rum

tds_fdw

1. Скачиваем с GitHub исходники модуля **tds_fdw**, компилируем и устанавливаем:

git clone https://github.com/tds-fdw/tds_fdw.git

cd tds_fdw

make USE_PGXS=1

sudo make USE_PGXS=1 install

cd

2. Скачиваем с GitHub исходники модуля **pg_hint_plan**, компилируем и устанавливаем:

git clone https://github.com/ossc-db/pg_hint_plan.git

cd pg_hint_plan

git checkout PG16

make

sudo make install

cd

3. Скачиваем с GitHub исходники модуля **http**, компилируем и устанавливаем:

git clone https://github.com/pramsey/pgsql-http.git

cd pgsql-http

make

sudo make install

cd

4. Заходим в терминальный клиент Postgres:

sudo -u postgres psql

5. Активируем расширения:

LOAD 'pg_hint_plan';

CREATE EXTENSION IF NOT EXISTS tds_fdw schema public;

CREATE EXTENSION IF NOT EXISTS http schema public;

CREATE EXTENSION IF NOT EXISTS rum schema public;

CREATE EXTENSION IF NOT EXISTS postgres_fdw schema public;

CREATE EXTENSION IF NOT EXISTS pgcrypto schema public;

CREATE EXTENSION IF NOT EXISTS pg_buffercache schema public;

CREATE EXTENSION IF NOT EXISTS btree_gin;

Создание пользователей и баз данных

1. Заходим в терминальный клиент Postgres:

sudo -u postgres psql

2. Создаем пользователей:

create user dbo with superuser createdb createrole inherit login password 'PASSWORD';

create user d10taskuser with inherit login password 'PASSWORD';

create user migrationsdaemon with inherit login password 'PASSWORD';

create user rebus with inherit login password 'PASSWORD';

create user implementer with inherit login password 'PASSWORD';

Вместо PASSWORD пропишите пароли пользователей PostgreSQL.

3. Создаем базы данных d10task и taskfilesdb:

create database d10task

template template0

owner dbo

encoding 'utf8'

lc_collate 'ru_RU.utf8'

lc_ctype   'ru_RU.utf8';

 

create database taskfilesdb

template template0

owner dbo

encoding 'utf8'

lc_collate 'ru_RU.utf8'

lc_ctype   'ru_RU.utf8';

 

GRANT ALL PRIVILEGES ON DATABASE d10task TO d10taskuser;

GRANT ALL PRIVILEGES ON DATABASE taskfilesdb TO d10taskuser;

Выйти из консоли можно командой \q.

4. Создаем схему в базе taskfilesdb:

sudo -u postgres psql -d taskfilesdb

 

create extension if not exists tds_fdw schema public;

create schema if not exists dbo authorization dbo;

create table dbo.UploadFiles

(

 id              int not null  generated by default as identity,

 FileContent     bytea,

 Ext             varchar,

 UserID          int,

 FileName        varchar,

 Compressed      bool  constraint DF_UploadFiles_Compressed default false,

 

   constraint PK_UploadFiles primary key (id)

);

\q

5. Копируем на сервер файл с расширением dump, содержащий структуру и контент базы данных, в определенную папку, например: /src/d10task_hd.dump. Данный файл вам может предоставить техническая поддержка. Выполняем рестор 'pg_restore -d DB_NAME DB_DUMP' в созданную базу:

sudo su — postgres

pg_restore -d d10task /pgdata/backup/d10task-template.dump

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

sudo -u postgres psql -d d10task

 

alter role D10TaskUser set search_path = "dbo", "public";

alter role dbo set search_path = "dbo", "public";

alter user MigrationsDaemon set search_path = "dbo", "public";

alter user rebus set search_path = "rebus", "public";

 

grant dbo, rebus  to MigrationsDaemon;

 

grant all on all tables in schema dbo, sys to dbo, MigrationsDaemon;

grant all on all sequences in schema dbo, sys to dbo, MigrationsDaemon;

grant all on all functions in schema dbo, sys to dbo, MigrationsDaemon;

grant all on schema dbo, sys to dbo, MigrationsDaemon;

 

alter default privileges in schema dbo, sys, SignalR grant all on tables to dbo, MigrationsDaemon;

alter default privileges in schema dbo, sys, SignalR grant all on sequences to dbo, MigrationsDaemon;

alter default privileges in schema dbo, sys, SignalR grant all on functions to dbo, MigrationsDaemon;

alter default privileges in schema dbo, sys, SignalR grant all on types to dbo, MigrationsDaemon;

На этом настройка СУБД PostgreSQL 16 завершена.