Каталог решений - 1С и Postgres: Введение

Описание

Всем привет.

Написать эту статью, а может быть даже и серию статей посвященных Postgres, меня вынудил информационный голод о СУБД Postgres, тем более в связке с 1С.

Что мне показалось странным? Многое что здесь описано есть везде! А хочется нюансов.

Нюанс 1. Установка.

Я использую Linux CentOS 5.x, хотя процес не должен принципиально отличатся от других вендоров.

Процесс наложения патчей от 1С описывать не буду, есть везде (например http://habrahabr.ru/blogs/linux/107321/)

Я использую стандартные .rpm от самой 1С.

Перед установкой вы должны понимать как этот сервер будут использоваться. Если речь идет о базе центрального офиса, куда будет стекаться информация из других подразделений, а также строится всевозможная аналитика, то лучше чтобы сервер был выделен только под СУБД.

Важно знать, что Postgres не умеет задавать разные кодировки для отдельных баз! Поэтому не забудьте сделать следующее:

#su — postgres

#initdb —locale=uk_UA.UTF8 —encoding=UTF8 /path/to_your/data/

Этой коммандой вы инициализурете хранилище в кодировке UTF8 для локали uk_UA — у 1С это Украинский(Украина).

Далее, не забудьте проверить кол-во разделяемой памяти, т.е. shared memory:

#cat /proc/sys/kernel/shmall

#cat /proc/sys/kernel/shmmax

Вы получите на экран о количестве разделяемой памяти в байтах. Разделив на 1024 дважы вы получите размер в МБ. Это размер разделяемой между процессами PostgreSQL памяти, которая нужна для выполнения активных операций.

Параметр shared_buffers,  в файле /path/to_your/data/postgresql.conf должен быть min 1/8 — max 1/4 RAM.

Если полученное вами значение превосходит стандартные значения shmall и shmmax, то их следует увеличить, например так:

#echo 68719476736 >/proc/sys/kernel/shmmax

#echo 4294967296 >/proc/sys/kernel/shmmax

Все. Теперь все доложно стартовать и работать.

Нюанс 2. Каталоги Postgres

Никогда не удаляйте файлы созданные постгрес вручную, делайте это только штатными утилитами или если точно знаете, что это можно делать.

Важные каталоги:

$PG_HOME/data — все хранится здесь

$PG_HOME/data/base — наши БД

$PG_HOME/data/pg_xlog — логи транзакций

$PG_HOME/data/pg_clog — логи коммитов

Размер каталога pg_xlog зависит от парамтеров:

checkpoint_segments и checkpoint_timeout

checkpoint_segments — определяет МАКСИМАЛЬНОЕ количество сегментов (каждый по 16 МБ) лога транзакций между контрольными точками, checkpoint_timeout — определяет количество секунд между контрольными точками, сработает тот параметр, который наступит первым.

Поэтому считайте  (checkpoint_segments * 2 + 1) * 16 МБ и убедитесь, что у вас достаточно свободного места для pg_xlog. Учтите, чем больше операций записи в вашей БД, тем больше нужно выставить checkpoint_segments, тогда в случае краха, постгресу понадобиться меньше времени на восстановление.

Если произошел сбой, вы восстановились и логи транзакций вам не нужны, смотрите в сторону pg_resetxlog.

Нюанс 3. Подключение 1С

Надеюсь все кто хочет использовать 1С + Postgres понимают архитектуру трехзвенки или MVC?

Если нет, напомню. MVC — это модель, вид, контроллер.

Контроллер — это наша 1С, с заложенной конфигурацией, которая описывает ту или иную бизнесс логику.

Вид — это наш клиент 1С, который отображает все то, что посылает нам сервер 1С (кстати тотлько в 8.2 можно полностью отделить бизнесс логику от клиента)

Модель — это наша БД, где 1С хранит все свои данные

Так вот, прописывая базу в кластере 1С укажите именно тот сервер, где расположена Ваша БД.

Работая с моделью, один кластер 1С, использует одного пользователя для подключение к БД. Поэтому отследить на уровне СУБД, какой «подлец» запустил тот или иной запрос к БД, вам не удастся 🙁 Но всеравно иметь утилиту pg_top полезно!

Итак, что нам нужно указать в /path/to_your/data/postgresql.conf:

listen_addresses = ‘*’  # слушаем подключения на всех сетевых интерфейсах сервера

max_connections = 200 # сколько всего пользователей сможет подключится к базе

И незабыть про /path/to_your/data/pg_hba.conf:

host    all         all         127.0.0.1/32         trust

pg_hba.conf отвечает за безопаность подключений, в данном примере мы указали, что разрешаем подключаться только с localhost.

Если вы все сделали правильно, 1С подключится без проблем.

Жду Ваших комментариев.

Если Postgres интересен Вам, я могу подготовить статьи на темы:

Тюнинг, Бекап, Ваккум, Репликация, Кластер, Статистика, Партиционирование и др.

 

 

has been added to your cart:
Оформление заказа