- Astra Linux Special Edition x.7
- Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.6
- Настройка для работы в домене (авторизация через Керберос)
- Настройка для работы с учетом мандатных привилегий
- Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.5
- Совместимость с 1С
- Установка и настройка СУБД PostgreSQL (Linux)#
- Необходимое программное обеспечение под ОС Astra Linux / Debian#
- Установка#
- Дополнительная настройка#
- Развертывание новой базы#
- Развертывание поставочного дампа#
- PostgreSQL
- Ограничения PostgreSQL
- Настройка PostgreSQL
- Настройка приложения
Astra Linux Special Edition x.7
Настройка PostgreSQL для работы в домене ALD (авторизация через Керберос) выполняется так же как и для Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.6, отличие только в версии PostgreSQL (версия 11 вместо ранее использовавшейся версии 9.6):
keytab=»/etc/postgresql/11/main/keytab»
ald-admin service-add postgres/`hostname`
ald-admin sgroup-svc-add postgres/`hostname` —sgroup=mac
ald-client update-svc-keytab postgres/`hostname` —ktfile=»$keytab»
chown postgres «$keytab»
chmod 644 «$keytab»
krb_server_keyfile=/etc/postgresql/11/main/keytab
host all all gss include_realm=0
ac_ignore_socket_maclabel = false
Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.6
Настройка для работы в домене (авторизация через Керберос)
Сценарий настройки PostgreSQL для работы в домене ALD (авторизация через Керберос)
keytab=»/etc/postgresql/9.6/main/keytab»
ald-admin service-add postgres/`hostname`
ald-admin sgroup-svc-add postgres/`hostname` —sgroup=mac
ald-client update-svc-keytab postgres/`hostname` —ktfile=»$keytab»
chown postgres «$keytab»
chmod 644 «$keytab»
В файле /etc/postgresql/9.6/main/postgresql.conf в строке указать расположение файла ключей, например:
krb_server_keyfile=/etc/postgresql/9.6/main/keytab
В файле /etc/postgresql/9.6/main/pg_hba.conf в строке host указать способ аутентификации gss и параметры аутентификации, например include_realm=0:
host all all gss include_realm=0
Настройка для работы с учетом мандатных привилегий
В файле /etc/postgresql/9.6/main/postgresql.conf значение параметра ac_ignore_socket_maclabel в установить в false .
После установки параметра сервер СУБД будет проверять метку безопасности входящего соединения, и передавать только информацию с меткой не выше метки входящего соединения.
ac_ignore_socket_maclabel = false
Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.5
Совместимость с 1С
Необходимо установки пакета postgresql-contrib
Необходимо внести изменения в настройки конфигурационного файла PostgreSQL — расскоментировать строки и поменять значения на:
Установка и настройка СУБД PostgreSQL (Linux)#
Необходимое программное обеспечение под ОС Astra Linux / Debian#
- Сервер PostgreSQL 12 или выше
PostgreSQL или Postgres Pro - postgresql-contrib (обычно устанавливаются вместе с сервером Postgres)
- htop
- Iotop
- sysstat
- pgbadger
- ssh (клиент и сервер SSH)
- mc (Midnight Commander)
- tar
- zip
Не рекоммендуется выполнять сборку сервера самостоятельно из исходного кода т.к. нельзя гарантировать стабильность работы таких сборок в продуктивном контуре.
Установка#
Скачайте требуемый пакет с сайта https://postgrespro.ru/products/download или https://www.postgresql.org/download. Для установки следуйте инструкциям на сайте.
Дополнительная настройка#
- В конфигурационном файле postgresql.conf переопределите умолчательные параметры согласно конфигурации железа.
Пример для сервера с конфигурацией ЦП: 4 ядра; ОЗУ: 8 Гб; Диск: SSD:
Добавить в конец конфигурационного файла
#------------------------------------------------------------------------------ # CUSTOMIZED OPTIONS #------------------------------------------------------------------------------ # Memory Configuration shared_buffers = 2GB effective_cache_size = 6GB work_mem = 41MB maintenance_work_mem = 410MB # Checkpoint Related Configuration min_wal_size = 2GB max_wal_size = 3GB checkpoint_completion_target = 0.9 wal_buffers = -1 # Network Related Configuration listen_addresses = '*' max_connections = 100 # Storage Configuration random_page_cost = 1.1 effective_io_concurrency = 200 # Worker Processes Configuration max_worker_processes = 8 max_parallel_workers_per_gather = 2 max_parallel_workers = 2 max_locks_per_transaction = 500
Для подбора параметров можно воспользоваться онлайн-мастером https://www.pgconfig.org
В мастере указать версию постгреса, выбрать профиль DataWare house and BI Applications и указать параметры железа сервера: количество ядер ЦП, размер ОЗУ, тип диска.
# TYPE DATABASE USER ADDRESS METHOD # IPv4 local connections: host all all all md5
Для получения подробной информации по конфигурации Postgres воспользуйтесь документацией на сайте: https://postgrespro.ru/docs
Развертывание новой базы#
Поменяйте пароль пользователю ОС c именем postgres
Подключитесь терминалом к серверу СУБД под пользователем root
Переключитесь на пользователя «postgres»
Подключитесь локально утилитой psql к СУБД Postgres
Поменяйте пароль суперпользователя
alter user postgres password '';
CREATE ROLE WITH LOGIN NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT NOREPLICATION CONNECTION LIMIT -1 PASSWORD ''; GRANT pg_signal_backend TO ;
Создайте новую БД, в качестве владельца укажите созданного пользователя
CREATE DATABASE "" WITH OWNER = ENCODING = 'UTF8' CONNECTION LIMIT = -1;
Подключитесь к созданной бд
Подключите, необходимые для работы Global, расширения
CREATE EXTENSION if not exists plpgsql; CREATE EXTENSION if not exists fuzzystrmatch; CREATE EXTENSION if not exists pg_trgm; CREATE EXTENSION if not exists pg_stat_statements; CREATE EXTENSION if not exists "uuid-ossp"; CREATE EXTENSION if not exists dict_xsyn; CREATE EXTENSION if not exists ltree;
Теперь БД готова к работе.
Развертывание поставочного дампа#
При получении преднастроенного поставочного дампа нагоните его на созданную БД.
Если БД не пуста и содержит объекты, удалите их
При наличии прав суперпользователя Postgres можно удалить БД
и создать заново, выполнив шаги раздела «Развертывание новой базы»
Если прав суперпользователя Postgres нет, воспользуйтесть скриптом удаления
SET search_path TO public; -- DO $$ DECLARE r RECORD; BEGIN FOR r IN (SELECT p.oid::regprocedure as sFunctionName FROM pg_proc p INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) inner join pg_roles a on p.proowner =a.oid WHERE ns.nspname = current_schema and a.rolname =current_user and p.probin is null) LOOP EXECUTE 'DROP FUNCTION IF EXISTS ' || r.sFunctionName || ' CASCADE'; END LOOP; END $$; -- DO $$ DECLARE r RECORD; BEGIN FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = current_schema()) LOOP EXECUTE 'DROP TABLE IF EXISTS ' || quote_ident(r.tablename) || ' CASCADE'; END LOOP; END $$; -- DO $$ DECLARE r RECORD; BEGIN FOR r IN (SELECT c.relname FROM pg_class c inner join pg_catalog.pg_namespace n on c.relnamespace =n.oid inner join pg_roles a on c.relowner =a.oid WHERE (c.relkind = 'S') and n.nspname =current_schema and a.rolname =current_user) LOOP EXECUTE 'drop sequence IF EXISTS ' || quote_ident(r.relname) || ' CASCADE'; END LOOP; END $$; -- DO $$ DECLARE r RECORD; BEGIN FOR r IN (SELECT c.relname FROM pg_class c inner join pg_catalog.pg_namespace n on c.relnamespace =n.oid inner join pg_roles a on c.relowner =a.oid where c.relkind ='v' and n.nspname =current_schema and a.rolname =current_user) LOOP EXECUTE 'drop view IF EXISTS ' || quote_ident(r.relname) || ' CASCADE'; END LOOP; END $$; -- SELECT lo_unlink(l.oid) FROM pg_largeobject_metadata l inner join pg_roles a on l.lomowner =a.oid WHERE a.rolname =current_user;
Поставочный дамп запакован архиватором tar
Имя файла архива имее следующий вид: _public__.tar Пример: demoDb_public_04.11.2022_170406.tar
Загрузите файл поставочного дампа на сервер Postgres в директорию /usr/dumpstore
mkdir -p /tmp/global/Dump tar -xvf /usr/dumpstore/_public__.tar -C /tmp/global/Dump --strip-components 1
Дамп распакуется в каталог /tmp/global/Dump/_public__
/opt/pgpro/std-12/bin/pg_restore —dbname=postgresql://:@localhost:5432/ -O -x -v —no-tablespaces —jobs=4 /tmp/global/Dump/_public__
/opt/pgpro/std-12/bin/pg_restore — путь до утилиты распаковки дампа (postgres pro 12)
jobs=4 — количество потоков, указывать по количеству ядер
PostgreSQL
Поддерживаются версии PostgreSQL начиная с 13 версии с поддержкой ICU.
Для однообразной сортировки в PostgreSQL на Windows и Linux, и для сортировки как в SQL Server, используется провайдер icu, который использует внешнюю библиотеку ICU. Локали ICU можно использовать, только если поддержка ICU была включена в конфигурации сборки PostgreSQL.
Для установки PostgreSQL требуется сборка PostgreSQL начиная с 13 версии с поддержкой ICU.
Ограничения PostgreSQL
Основные ограничения PostgreSQL, которые отличаются от SQL Server (https://postgrespro.ru/docs/postgresql/14/limits):
Максимальная длина идентификатора 63 байта (имена таблиц, ключей, индексов и других объектов базы данных (https://postgrespro.ru/docs/postgresql/14/sql-syntax-lexical#SQL-SYNTAX-IDENTIFIERS)).
Настройка PostgreSQL
Надо настроить PostgreSQL, по умолчанию PostgreSQL использует 256 МБ памяти.
Для генерации настроек по конфигурации сервера надо зайти на https://www.pgconfig.org/ и заполнить параметры.
Далее на вкладке «Export config» выберете формат ALTER SYSTEM commands для изменения параметров PostgreSQL, запустите полученный скрипт на сервере PostgreSQL и перезапустите сервис PostgreSQL после выполнения скрипта.
После запуска скриптов надо перезапустить сервис PostgreSQL:
sudo service postgresql restart
# OS Type: GNU/Linux based
# Architecrure: 64 Bits # Storage type: ssd
# Application profile: ERP or long transaction applications
# CPUs num: 16
# Total Memory: 40 GB
# Connections num: 1000
# Data Storage: ssd
# DB Version: 13
SQL -- Memory Configuration ALTER SYSTEM SET shared_buffers TO '10GB'; ALTER SYSTEM SET effective_cache_size TO '30GB'; ALTER SYSTEM SET work_mem TO '14MB'; ALTER SYSTEM SET maintenance_work_mem TO '2GB'; -- Checkpoint Related Configuration ALTER SYSTEM SET min_wal_size TO '2GB'; ALTER SYSTEM SET max_wal_size TO '3GB'; ALTER SYSTEM SET checkpoint_completion_target TO '0.9'; ALTER SYSTEM SET wal_buffers TO '-1'; -- Network Related Configuration ALTER SYSTEM SET listen_addresses TO '*'; ALTER SYSTEM SET max_connections TO '1000'; -- Storage Configuration ALTER SYSTEM SET random_page_cost TO '1.1'; ALTER SYSTEM SET effective_io_concurrency TO '200'; -- Worker Processes Configuration ALTER SYSTEM SET max_worker_processes TO '8'; ALTER SYSTEM SET max_parallel_workers_per_gather TO '2'; ALTER SYSTEM SET max_parallel_workers TO '2'; -- Logging configuration for pgbadger ALTER SYSTEM SET logging_collector TO 'on'; ALTER SYSTEM SET log_checkpoints TO 'on'; ALTER SYSTEM SET log_connections TO 'on'; ALTER SYSTEM SET log_disconnections TO 'on'; ALTER SYSTEM SET log_lock_waits TO 'on'; ALTER SYSTEM SET log_temp_files TO '0'; ALTER SYSTEM SET lc_messages TO 'C'; -- Adjust the minimum time to collect the data ALTER SYSTEM SET log_min_duration_statement TO '10s'; ALTER SYSTEM SET log_autovacuum_min_duration TO '0'; -- CSV Configuration ALTER SYSTEM SET log_destination TO 'csvlog';
После запуска скрипта с установкой настроек нужно перезапустить сервис PostgreSQL:
sudo service postgresql restart
Настройка приложения
Статьи по настройкам быстродействию PostgreSQL через строку подключения: