Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
| product:settings:pssql [05.12.2022 10:57] – [Установка и развертывание на Astra Linux Special Edition x.7] anna.makhneva | product:settings:pssql [09.12.2025 08:02] (текущий) – [Бэкап и восстановление базы] Сердцев Сергей | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | ====== PostgreSQL ====== | + | ====== |
| ===== Версия PostgreSQL ===== | ===== Версия PostgreSQL ===== | ||
| - | Поддерживаются версии PostgreSQL начиная с 13 версии с поддержкой ICU. | + | Поддерживаются версии PostgreSQL начиная с 13 (рекомендуется не ниже 14) версии с поддержкой ICU. |
| Для однообразной сортировки в PostgreSQL на Windows и Linux, и для сортировки как в SQL Server, используется провайдер icu, который использует внешнюю библиотеку ICU. Локали ICU можно использовать, | Для однообразной сортировки в PostgreSQL на Windows и Linux, и для сортировки как в SQL Server, используется провайдер icu, который использует внешнюю библиотеку ICU. Локали ICU можно использовать, | ||
| Строка 16: | Строка 16: | ||
| Надо настроить PostgreSQL, по умолчанию PostgreSQL использует 256 МБ памяти. | Надо настроить PostgreSQL, по умолчанию PostgreSQL использует 256 МБ памяти. | ||
| - | Для генерации настроек по конфигурации сервера надо зайти на https://pgtune.leopard.in.ua/ и заполнить параметры. | + | Для генерации настроек по конфигурации сервера надо зайти на https://www.pgconfig.org/ и заполнить параметры. |
| - | В поле DB Type надо выбрать "Mixed type of application" | + | Далее на вкладке " |
| - | + | ||
| - | Надо взять скрипт с вкладки | + | |
| После запуска скриптов надо перезапустить сервис PostgreSQL: <code bash> sudo service postgresql restart </ | После запуска скриптов надо перезапустить сервис PostgreSQL: <code bash> sudo service postgresql restart </ | ||
| + | <code bash> pgbadger -j 4 / | ||
| + | === Пример для PostgreSQL 13: === | ||
| - | === Пример для PostgreSQL 13: === \\ | + | # OS Type: GNU/Linux based \\ |
| - | # DB Version: 13 \\ | + | # Architecrure: 64 Bits |
| - | # OS Type: linux \\ | + | # Storage type: ssd \\ |
| - | # DB Type: mixed \\ | + | # Application profile: ERP or long transaction applications\\ |
| - | # Total Memory (RAM): 40 GB \\ | + | |
| # CPUs num: 16 \\ | # CPUs num: 16 \\ | ||
| + | # Total Memory: 40 GB \\ | ||
| # Connections num: 1000 \\ | # Connections num: 1000 \\ | ||
| # Data Storage: ssd \\ | # Data Storage: ssd \\ | ||
| + | # DB Version: 13 \\ | ||
| <code sql> | <code sql> | ||
| sql | sql | ||
| - | ALTER SYSTEM SET max_connections = '1000'; | + | -- Memory Configuration |
| - | ALTER SYSTEM SET shared_buffers = '10GB'; | + | ALTER SYSTEM SET shared_buffers TO '10GB'; |
| - | ALTER SYSTEM SET effective_cache_size = '30GB'; | + | ALTER SYSTEM SET effective_cache_size TO '30GB'; |
| - | ALTER SYSTEM SET maintenance_work_mem | + | ALTER SYSTEM SET work_mem TO '14MB'; |
| - | ALTER SYSTEM SET checkpoint_completion_target | + | ALTER SYSTEM SET maintenance_work_mem |
| - | ALTER SYSTEM SET wal_buffers | + | |
| - | ALTER SYSTEM SET default_statistics_target = '100'; | + | -- Checkpoint Related Configuration |
| - | ALTER SYSTEM SET random_page_cost | + | ALTER SYSTEM SET min_wal_size TO ' |
| - | ALTER SYSTEM SET effective_io_concurrency | + | ALTER SYSTEM SET max_wal_size TO '3GB'; |
| - | ALTER SYSTEM SET work_mem = '1310kB'; | + | ALTER SYSTEM SET checkpoint_completion_target |
| - | ALTER SYSTEM SET min_wal_size = '1GB'; | + | ALTER SYSTEM SET wal_buffers |
| - | ALTER SYSTEM SET max_wal_size = '4GB'; | + | |
| - | ALTER SYSTEM SET max_worker_processes = '16'; | + | -- Network Related Configuration |
| - | ALTER SYSTEM SET max_parallel_workers_per_gather = '4'; | + | ALTER SYSTEM SET listen_addresses TO '*'; |
| - | ALTER SYSTEM SET max_parallel_workers = '16'; | + | ALTER SYSTEM SET max_connections TO ' |
| - | ALTER SYSTEM SET max_parallel_maintenance_workers = '4'; | + | |
| + | -- Storage Configuration | ||
| + | ALTER SYSTEM SET random_page_cost | ||
| + | ALTER SYSTEM SET effective_io_concurrency | ||
| + | |||
| + | -- 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 ' | ||
| + | ALTER SYSTEM SET log_lock_waits TO ' | ||
| + | ALTER SYSTEM SET log_temp_files TO ' | ||
| + | ALTER SYSTEM SET lc_messages TO ' | ||
| + | |||
| + | -- Adjust the minimum time to collect the data | ||
| + | ALTER SYSTEM SET log_min_duration_statement TO ' | ||
| + | ALTER SYSTEM SET log_autovacuum_min_duration TO ' | ||
| + | |||
| + | -- CSV Configuration | ||
| + | ALTER SYSTEM SET log_destination TO 'csvlog'; | ||
| </ | </ | ||
| После запуска скрипта с установкой настроек нужно перезапустить сервис PostgreSQL: <code bash> sudo service postgresql restart </ | После запуска скрипта с установкой настроек нужно перезапустить сервис PostgreSQL: <code bash> sudo service postgresql restart </ | ||
| - | ===== Конвертация базы из SQL Server в PostgreSQL и обратно ===== | ||
| ===== Настройка приложения ===== | ===== Настройка приложения ===== | ||
| Строка 74: | Строка 98: | ||
| на | на | ||
| - | <add name=" | + | <add name=" |
| Id=postgres; | Id=postgres; | ||
| - | <add name=" | + | <add name=" |
| Id=postgres; | Id=postgres; | ||
| - | <add name=" | + | <add name=" |
| Id=postgres; | Id=postgres; | ||
| Строка 161: | Строка 185: | ||
| sudo pg_ctlcluster 13 main start </ | sudo pg_ctlcluster 13 main start </ | ||
| | | ||
| - | 2. Как отредакировать файл от имени админа | + | 2. Как отредакnировать файл от имени админа |
| https:// | https:// | ||
| Строка 362: | Строка 386: | ||
| ===== Бэкап и восстановление базы ===== | ===== Бэкап и восстановление базы ===== | ||
| - | https:// | + | https:// |
| Бэкап базы делается утилитой '' | Бэкап базы делается утилитой '' | ||
| - | <code bash> | + | <code bash> |
| Строка 372: | Строка 396: | ||
| <code sql> | <code sql> | ||
| sql | sql | ||
| - | CREATE DATABASE "sl_3_24" | + | CREATE DATABASE "a2nta_db" |
| WITH | WITH | ||
| OWNER = postgres | OWNER = postgres | ||
| Строка 384: | Строка 408: | ||
| CONNECTION LIMIT = -1; | CONNECTION LIMIT = -1; | ||
| - | ALTER DATABASE "sl_3_24" SET search_path TO " | + | ALTER DATABASE "a2nta_db" SET search_path TO " |
| CREATE EXTENSION IF NOT EXISTS " | CREATE EXTENSION IF NOT EXISTS " | ||
| Строка 391: | Строка 415: | ||
| И запустить утилиту '' | И запустить утилиту '' | ||
| - | <code bash> pg_restore.exe --host " | + | <code bash> pg_restore.exe --host " |
| Можно установить search_path на системном уровне, | Можно установить search_path на системном уровне, | ||
| Строка 397: | Строка 421: | ||
| sql | sql | ||
| ALTER SYSTEM SET search_path | ALTER SYSTEM SET search_path | ||
| - | TO " | + | TO " |
| SELECT pg_reload_conf(); | SELECT pg_reload_conf(); | ||
| </ | </ | ||
| - | Если нужно выдать права пользователю на базу (https:// | + | Нужно выдать права пользователю на базу (https:// |
| <code sql> | <code sql> | ||
| sql | sql | ||
| Строка 413: | Строка 437: | ||
| - Документация по PostgreSQL: https:// | - Документация по PostgreSQL: https:// | ||
| - Документация по PostgreSQL на русском: | - Документация по PostgreSQL на русском: | ||
| - | - Онлайн утилита генерации настроек для конфигурации сервера PostgreSQL: https://pgtune.leopard.in.ua/ | + | - Онлайн утилита генерации настроек для конфигурации сервера PostgreSQL: https://www.pgconfig.org/ |
| - PgBouncer FAQ: https:// | - PgBouncer FAQ: https:// | ||
| + | |||
| + | ===== Решение проблем с PostgreSQL ===== | ||
| + | |||
| + | ==== Блокировки транзакций ==== | ||
| + | Если возникают проблемы с операциями в БД PostgreSQL по причине конфликта блокировок транзакций, | ||
| + | |||
| + | <code config [highlight_lines_extra=" | ||
| + | #... | ||
| + | |||
| + | # | ||
| + | # LOCK MANAGEMENT | ||
| + | # | ||
| + | |||
| + | # deadlock_timeout = 1s | ||
| + | |||
| + | max_locks_per_transaction = 100 # min 10 | ||
| + | # (change requires restart) | ||
| + | |||
| + | # | ||
| + | # (change requires restart) | ||
| + | |||
| + | #... | ||
| + | </ | ||
| + | |||
| + | В случае возникновения ошибки " | ||
| + | <code config [highlight_lines_extra=" | ||
| + | max_locks_per_transaction = 1000 | ||
| + | </ | ||