Актуальность использования СУБД PostgreSQL для 1С особенно набирает обороты в последнее время, поскольку не требуется приобретать лицензии MS SQL.
Рассмотрим архитектурное решение, когда СУБД вынесена на отдельную машину, а сервер 1С находится на Windows Server.
Данное архитектурное решение было выбрано по причине того, что обмен между БД настроен через COM-компонент. Если сервер 1С переносить на Linux, то требуется также перенастраивать обмен, который в нашем решении не требуется.
В первую очередь требуется выбрать дистрибутив, на котором будем устанавливать СУБД. Мы выбрали Debian 11.
Минимальные системные требования для установки Postgres Pro, создания кластера баз данных и запуска сервера:
- Процессор с частотой 1 ГГц.
- 1 ГБ ОЗУ.
- 1 ГБ свободного дискового пространства.
Для вспомогательных компонентов или данных потребуется дополнительное дисковое пространство.
Для того чтобы Postgres Pro работал с сервером 1С требуется установить locale ru_RU.UTF-8. Вводим команду:
# dpkg-reconfigure locales
Выбираем пробелом ru_RU.UTF-8 UTF-8 и нажимаем “Enter”. Перезагружаем сервер.
Установка Postgres Pro для работы с 1С
Для работы с 1С существует несколько редакций PostgreSQL, наиболее известные это от компании Postgres Pro и так же от самой 1С.
У нас будет установка Postgres Pro.
- Заходим на сайт 1c.postgres.ru.
- Отвечаем на 3 вопроса и в конце заполняем свой e-mail, куда вышлют инструкцию по установки.
- Вводим команды:
# wget https://repo.postgrespro.ru/pg1c-14/keys/pgpro-repo-add.sh
# apt-get install postgrespro-1c-14
# systemctl status postgrespro-1c-14.service
Проверяем статус Postgres Pro, он должен быть установлен и запущен.
Рисунок 1 — Успешно запущенная Postgres Pro
Настройка PostgreSQL для работы с 1С
После успешной установки, мы должны настроить СУБД для работы 1С. В первую очередь задаем пароль для внутреннего пользователя Postgres, чтобы подключаться к БД с 1С сервера.
# sudo -u postgres psql -U postgres -c "alter user postgres with password 'postgrespwd';" ALTER ROLE
Чтобы немного увеличить быстродействие и сократить износ ресурса диска, мы перенесем хранение временной статистики на оперативную память.
По умолчанию, под статистику выделяется 25 мегабайт дискового пространства. Мы выделим 256 мегабайт памяти, чтобы был запас.
Создаем директорию, куда будем добавлять виртуальный диск:
# mkdir /var/lib/pgsql_tmp # chown postgres:postgres /var/lib/pgsql_tmp/
Добавляем в /etc/fstab в конец строчку:
tmpfs /var/lib/pgsql_tmp tmpfs size=256M,uid=postgres,gid=postgres 0 0
Монтируем диск в систему:
# mount /var/lib/pgsql_tmp
Идем в конфиг БД /var/lib/pgpro/1c-14/data/postgresql.conf и меняем параметр:
stats_temp_directory = '/var/lib/pgsql_tmp'
После успешной настройки перезагружаем службу:
# systemctl restart postgrespro-1c-14.service
Подключение информационной базы 1С к серверу PostgreSQL
Заходим на сервер, где расположена консоль администрирования сервера 1С.
Правой кнопкой мыши нажать на “Информационные базы (Далее ИБ)” > “Создать” > “ИБ”. Заполняем поля:
- Имя — Test (Как будет называться ИБ).
- Сервер баз данных: 192.168.74.128 (Адрес нашего сервера postgresql).
- Тип СУБД: PostgreSQL.
- База данных: Test (как будет называться БД в СУБД).
- Пользователь сервера БД: postgres.
- Пароль пользователя БД: postgrespwd.
- Если базы нет, то еще поставить “Создать базу данных с случае ее отсутствия”.
Подключаем ИБ для запуска 1С:Предприятия. Заходим в 1С:Предприятие, нажимаем “Добавить”. Ставим “Добавление в список существующей ИБ”. Указываем наименование ИБ. Ставим “На сервере 1С:Предприятия”.
- Кластер серверов: localhost (Адрес где находится сервер 1С).
- Имя ИБ: Test (Имя которое мы задавали в оснастке).
Мы добавили ИБ для запуска, можно заходить в конфигуратор и загружать имеющую конфигурацию.
Мы провели успешно установку сервера PostgreSQL на Debian 11.
Пошаговое руководство по установке и первичной настройке сервера 1С:Предприятия 8.3 версии 8.3.19.1229 в ОС Microsoft Windows Server 2019 Standard с использованием СУБД PostgreSQL-11.7-5-1C и системы защиты HASP (USB-ключа).
Подготовка
Запускаем службу Вторичный вход в систему и в свойствах выбираем Запускать автоматически
# services.msc
На машинах, где будет установлено 1С-Предприятие, открываем в блокноте с правами администратора сервера файл C:\Windows\System32\drivers\etc\hosts и допишем в нём:
192.168.1.15 SRV15
- 192.168.1.15 — IP-адрес сервера
- SRV15 — имя хоста сервера
Скачиваем с официального ресурса 1С https://releases.1c.ru/ платформу 1c-enterprise-8.3 full (текущую версию) и СУБД postgresql-11.7-5.1C-x64 (или текущую версию).
Установка и настройка СУБД postgresql-11.7-5.1C
Запускаем дистрибутив postgresql-11.7-5.1C(x64) для установки
устанавливаем как сервис и при необходимости меняем пути
инициализируем кластер и устанавливаем пароль для пользователя postgres
Запускаем службу: Пуск — PostgreSQL 11.7-5.1C(x64) — Start Service
Распаковываем архив и в нём запускаем setup.exe
Для установки сервера выбрать компоненты
- Сервер 1С:Предприятия 8
- Администрирование сервера 1С:Предприятия
- Сервер хранилища конфигураций 1С:Предприятия
- Дополнительные функции администрирования
- Контроль целостности
- Интерфейсы на различных языках: Английский и Русский
Выбираем язык интерфейса — Русский
Устанавливаем сервер как сервис и создадим пользователя USR1CV8 и пароль к нему
Устанавливаем драйвер аппаратных ключей защиты
и завершаем установку.
Настройка сервера 1С:Предприятие 8.3
После установки запускаем сервер: Пуск — 1С Предприятие 8 (x86-64) — Запуск сервера x86-64
Регистрирует утилиту администрирования серверов: Пуск — 1С Предприятие 8 (x86-64) — Регистрация утилиты администрирования серверов x86-64
Запускаем консоль администратора: Пуск — 1С Предприятие 8 (x86-64) — Администрирование серверов 1С Предприятия x86-64
на пункте Central 1C:Enterprise 8.3 servers жмём правой кнопкой мыши — Создать — Центральный сервер 1С:Предприятия 8.3
Вводим имя сервера и, если необходимо, описание
Теперь сервер отображается в консоли
Создадим информационную базу
Пропишем имя ИБ, описание, адрес сервера БД: localhost (если сервер развёрнут на той же машине, что и СУБД), имя БД, пользователя postgres и пароль, а также отметим чек-бокс Создать базу данных в случае её отсутствия
и информационная база появилась в оснастке консоли
Теперь вставляем USB-ключ HASP и на всякий случай перезагрузим машину.
Установка и настройка клиента 1С:Предприятие 8.3
Распаковываем архив и в нём запускаем setup.exe
Будут отмечены компоненты:
- 1С:Предприятие 8
- Интерфейсы на различных языках — Английский и Русский
Этого вполне достаточно.
Будет создан ярлык 1С Предприятие. Запускаем его и сразу будет предложено добавить информационную базу
Соглашаемся.
Выбираем существующую информационную базу
Выберем тип расположения — На сервере 1С:Предприятия.
Заполним: Кластер серверов: SRV15, Имя информационной базы: db_1c (то же, что и было добавлено в консоли администрирования)
В Версию 1С:Предприятия впишем 8.3, в Разрядность — 64 (x86_64)
и информационная база появится в списке
Заключение
Если при установке и настройке вышеперечисленных пунктов не возникало никаких сообщений об ошибках, значит настройка прошла корректно. Но нельзя забывать о лицензии — это USB-ключ аппаратной защиты HASP. При работе в 1С-Предприятии его наличие обязательно.
Установка PostgreSQL, версия 10.5-24.1C windows 10
1. PostgreSQL. Версия 11.7-5.1C. Дистрибутив СУБД PostgreSQL для Windows (64-bit) одним архивом
Ставим на дополнительный SSD диск:
F:\PostgreSQL\11.7-5.1C\
Обратить внимание, что если PostgreSQL установлен не по умолчанию, нужно добавить права
полный
доступ для NETWORK SERVICE для папки установки (если изменен) или на
папку с данными. Иначе после reboot PostgreSQL не будет запускаться!!! (В последних версиях исправлена?)
start → run → services.msc
2. Необходимо пересоздать кластер с data_checksums
(Остановить сервер 1с если уже установлен) Программы -> 1С:Предприятие 8(x86-64) -> Остановка сервера x86-64 (8.3.17.1386) Программы -> PostgreSQL 11.5-19.1C(x64) -> psql к 'postgres' Посмотреть базы: postgres-# \l Посмотреть размер баз: postgres-# \l+ postgres=# SHOW data_checksums; data_checksums ---------------- off (1 row) Сделать pg_dump, если есть базы от администратора: Программы -> PostgreSQL 11.7-5.1C(x64) -> Command Prompt
F: cd "F:\PostgreSQL\11.7-5.1C\bin"
pg_dump -p 5432 -U postgres -Fc -d demo -f F:/backup/demo.custom
pg_dump -p 5432 -U postgres -Fc -d demo1 -f F:/backup/demo1.custom Остановим сервис от имени администратора: Программы -> PostgreSQL 11.7-5.1C(x64) -> Stop service Удалим кластер запуск от администратора
Программы -> PostgreSQL 11.7-5.1C(x64) -> Command Prompt
#rd /s /q "c:\Program Files\PostgreSQL\10.5-24.1C\data" rd /s /q "f:\PostgreSQL\11.7-5.1C\data" Создание кластера (возможно \ - перенос удалить!): "f:\PostgreSQL\11.7-5.1C\bin\initdb" --encoding=UTF8 -U "postgres" \
-W -D "f:\PostgreSQL\11.7-5.1C\data" --auth-local peer --auth-host md5 \
--data-checksums Программы -> PostgreSQL 11.7-5.1C(x64) -> Редактировать postgresql.conf
Добавить в конец:
# DB Version: 11 # OS Type: linux # DB Type: oltp # Total Memory (RAM): 16 GB max_connections = 1000 shared_buffers = 512MB temp_buffers = 256MB work_mem = 256MB effective_cache_size = 8GB maintenance_work_mem = 1024MB wal_buffers = 16MB min_wal_size = 2GB max_wal_size = 4GB default_statistics_target = 100 #effective_io_concurrency = 2 seq_page_cost = 1.0 random_page_cost = 1.1 autovacuum = on autovacuum_max_workers = 4 autovacuum_naptime = 20s autovacuum_vacuum_scale_factor = 0.01 autovacuum_analyze_scale_factor = 0.005 bgwriter_delay = 20ms bgwriter_lru_multiplier = 4.0 bgwriter_lru_maxpages = 400 synchronous_commit = off checkpoint_completion_target = 0.9 ssl = off fsync = on commit_delay = 1000 commit_siblings = 5 row_security = off max_files_per_process = 10000 standard_conforming_strings = off escape_string_warning = off max_locks_per_transaction = 256 #log_min_duration_statement = 0 log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,client=%h ' log_checkpoints = on log_connections = on log_disconnections = on log_lock_waits = on log_temp_files = 0 #log_autovacuum_min_duration = 0 #log_duration = on #log_statement = all log_destination = stderr plantuner.fix_empty_table = 'on' online_analyze.enable = on online_analyze.table_type = 'temporary' online_analyze.verbose = 'off' max_replication_slots = 10 max_wal_senders = 10 wal_level = replica Сохранить. Запустим сервис от имени администратора: Программы -> PostgreSQL 11.7-5.1C(x64) -> Start service Программы -> PostgreSQL 11.7-5.1C(x64) -> psql к 'postgres' postgres=# SHOW data_checksums; data_checksums ---------------- on (1 row) Восcтановим базы (если есть):
Программы -> PostgreSQL 11.7-5.1C(x64) -> Command Prompt
F:
cd "F:\PostgreSQL\11.7-5.1C\bin"
#dropdb --username postgres demo createdb --username postgres -T template0 demo pg_restore -d demo -p 5432 -U postgres -C F:/backup/demo.custom #dropdb --username postgres demo1 createdb --username postgres -T template0 demo1 pg_restore -d demo1 -p 5432 -U postgres -C F:/backup/demo1.custom Запустить сервер 1с Программы -> 1С:Предприятие 8(x86-64) -> Запуск сервера x86-64 (8.3.17.1386)
3. Ставим Cервер 1С:Предприятия (64-bit) для Windows 8.3.15.1830 или
старше.
4. IP 6 отключаем
5. Технологический журнал не настраиваем.
6. При последней установке служба агента не запускалась
Удалить службу
sc delete «1C:Enterprise 8.3 Server Agent (x86-64)»
1C:Enterprise 8.3 Server Agent (x86-64) пока вход в систему не был переделан с системной учетной записью.
7. Настраиваем pg_probackup
pg_probackup настройка автономного резервного копирования windows
Если не использум pg_probackup, нужно настроить pg_basebackup
PostgreSQL 10.5-24 настройка WAL архивирования windows
Резервное копирование кластера PostgreSQL pg_basebackup Windows
8. Настроить vacuum
Windows обслуживание баз PostgreSQL
В скрипте настроить путь и пароль:
REM Установка переменных окружения
SET PGBIN=C:\Program Files\PostgreSQL\10.5-24.1C\bin
SET PGUSER=postgres
SET PGPASSWORD=pass
11. Настроить backup в dump
Из статьи ниже просто взять скрипт
Резервное копирование базы PostgreSQL pg_dump под windows
Сделать свой скрипт на каждую базу в скрипте настроить:
Имя базы:
SET PGDATABASE=demo
SET PGBIN=C:\Program Files\PostgreSQL\10.5-24.1C\bin
SET PGHOST=localhost
SET PGPORT=5432
SET PGUSER=postgres
SET PGPASSWORD=pass
9. Сделать общий скрипт в планировщике
Вообще хорошо перед pg_dump
Остановить сервер 1С
«C:\Program Files\1cv8\8.3.13.1690\bin\ragent.exe» -stop
скрипт vacuum
скрипт dump на каждую базу …
скрипт dump на каждую базу …
После pg_dump
Запуск сервера 1С
«C:\Program Files\1cv8\8.3.13.1690\bin\ragent.exe» -start
Целесообразно настроить удаление старых копий
forfiles /P «d:\demo» /D -30 /C «cmd /c del @path /q»
10. Настройка web доступа
Установка Apache HTTP Server 64 on Microsoft Windows
PostgreSQL — достаточно современная и популярная СУБД в мире. Её не обошла и фирма 1С, выбрав в качестве одной из поддерживаемых для работы СУБД. Рассмотрим инструкцию по установке PostgreSQL и её первоначальной настройки для 1С 8.3 под ОС Windows.
Содержание
- Установка и настройка сервера 1С Предприятие
- Установка PostgreSQL
- Настройка PostgreSQL под 1С
Первым делом установим сервер 1C предприятия 8.3 (или 8.2). Для этого запустим файл setup.exe из архива. Установка мало чем отличается от обычной установки клиентского приложения, за исключением некоторых особенностей:
- Не забудьте выбрать в компонентах нужные пункты:
- Указать, от чьего имени будет запускаться приложение. Рекомендуется создавать нового пользователя «USR1Cv8». У этого пользователя должны быть установлены нужные права:
После установки части 1С можно приступить к работе с СУБД.
Установка PostgreSQL
Запустите файл postgresql-9.1.2-1.1C(x64).msi, в папке windows выбрать подпапку 64 или 86, в зависимости от разрядности ОС. Можно оставить практически всё по умолчанию. Необходимо обратить внимание на следующие моменты:
Так же, как с 1С 8.3, СУБД устанавливается как сервис. Необходимо проверить права у используемого пользователя. Система по умолчанию создаст нового пользователя, от чего имени будет запускать службу:
Настройка кластера 1C. Здесь необходимо указать пароль для пользователя:
Для выполнения данного пункта должна быть запущена служба «Вторичный вход в систему» (secondary logon). Если он не запущен, его следует запустить в списке всех сервисов:
Настройка PostgreSQL под 1С
Опыт эксплуатации баз 1С на PostgreSQL показал, что наибольшей производительности и оптимальной работы 1С и PostgreSQL удалось добиться на linux, поэтому желательно использовать именно ее. Но вне зависимости от операционной системы, важно помнить, что настройки, указанные по умолчанию при установке PostgreSQL, предназначены только для запуска сервера СУБД. Ни о какой промышленной эксплуатации речи идти не может! Следующим шагом после запуска станет оптимизация PostgreSQL под 1С:
- Для начала отключаем Energy Saving (в противном случае могут непредсказуемо вырасти задержки ответов из БД) и запрещаем своппинг разделяемой памяти.
- Настраиваем основные параметры сервера СУБД (рекомендации по настройке описаны достаточно подробно, как на официальном сайте вендора, так и компанией 1С, поэтому остановимся только на самых важных).
- В типовых рекомендациях компании 1С предлагается отключать механизмы HyperThreading. Но тестирование Postgres-pro на серверах, с включенной SMT (simultaneous multi threading), показало другие результаты.
Установка параметра shared_buffers в RAM/4 является рекомендацией по умолчанию, но пример Sql Server говорит о том, что чем больше памяти ему выделяется, тем лучше его производительность (при отключенном сбросе страниц в файл подкачки). То есть, чем больше страниц данных располагаются в оперативной памяти, тем меньше обращений к диску. Возникает вопрос: почему такой маленький кэш? Ответ прост: если shared_buffers большой, то часть неиспользуемых страниц свопируется на диск. Но как отследить момент, когда сброс прекратится, и показатель параметра будет оптимальным? Для достижения и выхода на оптимальный показатель shared_buffers, его значение необходимо поднимать на продуктиве ежедневно (по возможности) с определенным шагом прироста и смотреть, в какой момент начнется сброс страниц на диск (увеличится своп).
- Помимо этого, на «большой параметр» негативно влияет работа с множеством мелких страниц, которые по умолчанию имеют размер 8Кб. Работа с ними увеличивает накладные расходы. Что можно с этим сделать для оптимизации под 1С? В версии postgreSQL 9.4 появился параметр huge_pages, который можно включить, но только в Linux. По умолчанию включаются огромные страницы с размером по умолчанию 2048 kB. Дополнительно поддержку данных страниц необходимо включить в ОС. Таким образом, оптимизировав структуру хранения, можно выйти на больший показатель shared_buffers.
- work_mem = RAM/32..64 или 32MB..128MB Задает объем памяти для каждой сессии, который будет использоваться для внутренних операций сортировки, объединения и пр., прежде чем будут задействованы временные файлы. При превышении этого объема, сервер будет использовать временные файлы на диске, что может существенно снизить скорость обработки запросов. Данный параметр используется при выполнении операторов: ORDER BY, DISTINCT, соединения слиянием и пр.
- Посчитать дополнительно данный параметр можно следующим образом: (Общая память shared_buffers – память на другие программы) / число активных соединений. Это значение можно уменьшать, следя за количеством создаваемых временных файлов. Такую статистику по размеру и количеству временных файлов можно получить из системного представления pg_stat_database.
- effective_cache_size = RAM – shared_buffers основная задача этого параметра подсказать оптимизатору запроса, какой способ получения данных выбрать: полный просмотр или сканирование по индексу. Чем выше значение параметра, тем больше вероятность использования сканирования по индексу. При этом сервер не учитывает, что данные при выполнении запроса могут оставаться в памяти, и следующему запросу не надо их поднимать с диска.
Кризис дело неприятное… и многие пытаясь сэкономить хоть как-нибудь, и устанавливают на Windows PostgreSQL вместо MS SQL.
Хотя если по Вашей компании небольшие обороты, то лучше поставить MS SQL Server 2014 Express, т.к. по опыту PostgreSQL хорошо работает на Linux, на Windows при настройках по умолчанию PostgreSQL работает медленнее MS SQL Server 2014 Express.
Устанавливаем PostgreSQL 9.2.4-1
Скачиваем официальные пакет с сайта 1С (users.v8.1c.ru) и запускаем установку
Отмечаем объекты к установке, если они не отмечены
Устанавливаем «как сервис». Для работы этого сервиса потребуется специальный пользователь. Указываем учетную запись, домен (если имеется) и пароль.
Если пользователь postgres не заведен в системе, то установщик спросит создать пользователя? — жмем да
Перейдем к следующему шагу и укажем Инициализировать кластер БД, порт 5432 и Кодировку UTF8
Если кластер серверов 1С и PostgreSQLна разных машинах, то ставим галочку «Поддерживать подсоединения с любых IP, а не только с localhost».
Далее — Может возникнуть ошибка «Secondary Logon». Тогда идем в «Администрирование» – «Службы». Стартуем службу «Вторичный вход в систему» или «Secondary Logon»
Далее отметьте галкой необходимые модули, можно установить все, но для 1С они не нужны, я устанавливаю только Adminpack
Если процесс установки завершается без проблем, то вам повезло
Чаще бывают проблемы, решение простое и элегантное (бубен можно оставить):
1. Создать/Изменить учетную запись postgres, включить её в группу Администраторы
2. Выйти из системы и войти в неё под учетной записью postgres
3. Запустить установку PostgreSQL
После установки через меню «Пуск» — «Все программы» запускаем утилиту администрирования «pgAdmin III».
Подключаемся к серверу. Там вводим пароль для пользователя «postgres». Если подключиться удалось, попробуем создать новую базу средствами самой 1С.
Запускаем клиентскую часть 1С. Жмем кнопку «Добавить», ставим галочку «Сервер предприятия 1С». Далее заполняем следующее: сервер базы данных (IP или DNS имя того сервера, куда ставили PostgreSQL) — если тот же, что и кластер 1С, то указываем 127.0.0.1. Имя базы данных: [любое_имя]. Пользователь: «postgres» Пароль: [ваш_пароль_postgres]. Далее.
Проверяем, что база 1С создается успешно.