
Это продолжение статьи Ставим 1С 8.3 32-bit на Debian 9 64-bit.
Будем устанавливать PostgreSQL 9.6.6 на Debian 9 и настраивать для хранения баз 1С.
Использовались материалы:
Установка и настройка postgresql на debian 8 для работы с 1С
Сборка от PostgresPro для платформы 1С под Linux и Windows (для коммерческих целей платно)
Tuning Your PostgreSQL Server (на офф.сайте без перевода)
Оптимизация работы PostgreSQL (описание параметров)
Лучшие практики по настройке PostgreSQL от gilev.ru (внизу)
О патче от 1С для PostgreSQL
PGTune – автоподбор параметров PostgreSQL по параметрам железа
Решение проблем при использовании “1c предприятие” 8.2 в Linux
Типовые ошибки установки сервера 1С:Предприятие и PostgreSQL на платформе Linux
Перед установкой
Для корректной работы дистрибутивов 1С, кластер PostgreSQL должен быть инициализирован с локалью ru_RU.UTF-8. Если при инициализации кластера локаль явно не задана, то кластер будет инициализирован с локалью, установленной в системе по умолчанию. C помощью утилит locale(Linux) и systeminfo(Windows) можно узнать значение локали, установленное по умолчанию (postgrespro плохого не посоветует).
Необходимо, чтобы в системе были 2 локали: en_US.UTF-8 и ru_RU.UTF-8. Вторую нужно сделать по-умолчанию:
Проверить список установленных локалей:
Устанавливаем необходимые пакеты:
Устанавливаем вручную еще один пакет (полнофункциональная поддержка Unicode и локали):
Устанавливаем в ядре параметр kernel.shmmax – это максимальный размер разделяемой памяти (в байтах). Каким он должен быть – нигде толком не написано, и даже на странице документации postgreSQL 9.6 Managing Kernel Resources написано всего-лишь, что он должен быть “не менее 1 кБ (больше, если выполняется много копий сервера)”. Ясно лишь, что в 32-разрядной системе нужно всегда устанавливать 4294967295).
Для наших 64Гб ОЗУ установим 32Гб под shmmax, хз насколько это будет правильно. 32Гб*1024*1024*1024=34359738368 байт.
а) Добавляем в /etc/sysctl.conf:
Применяем внесенное изменение
ИЛИ б)
Проверяем внесенные изменения:
Установка
Скачать дистрибутив можно:
1) От Etersoft (на данный момент последняя версия 9.2)
2) От PostgresPRO (на данный момент последняя версия 11.5.4)
3) От самой 1С (на данный момент последняя версия 10.9-5.1C)
На момент написания ставил версию от PostgrePRO 9.6, но на данный момент у них, судя по всему, изменились правила лицензирования, и для свободного использования доступна лишь версия Postgres Pro Standard “для тестирования, разработки ПО, ознакомления с функциональностью СУБД, использования в образовательном процессе”.
Возможно, понадобятся отдельно либы (сейчас не припомню точный процесс установки):
– libssl1.0.0 (в репозитории deb http://ftp.de.debian.org/debian jessie main)
– postgresql-client-common, postgresql-common
– libicu55 (38/48/52/55)
Для изменения каталога хранения баз:
а) В postgresql.conf меняем data_directory на свое:
ИЛИ
б) Перемещаем папку и создаем симлинк:
Новой папке указываем права:
Добавляем в автозагрузку и запускаем:
Ограничим доступ к СУБД только внутри машины и, если нужно, с определенного сетевого интерфейса (для удаленного pgAdmin):
Меняем пароль внутреннего пользователя БД postgres:
Откроем локальный доступ с учетки postgres в файле pg_hba.conf:
Перезагрузим это все безобразие:
Настройка
Подробное описание параметров для оптимизации работы postgreSQL написано, например, тут:
Tuning Your PostgreSQL Server (на офф.сайта без перевода)
Оптимизация работы PostgreSQL (описание параметров)
Лучшие практики по настройке PostgreSQL от gilev.ru (внизу)
Я не стал переписывать тоже самое.
Есть подбор параметров на pgtune.leopard.in.ua, но насколько он верный не могу судить.
Получить установленные параметры:
Тест postgreSQL:
Управление:
Логи:
/var/lib/postgresql/9.6/main/pg_log/
pg_log
– является по-умолчанию местом, где хранятся журналы деятельности
pg_xlog
– это место, где хранится журнал транзакций. Нельзя удалять
pg_clog
– содержит журналы метаданных транзакций. Нельзя удалять
Бэкапы
Для создания резервной копии определенной базы:
Возможные параметры:
-d имя базы данных для выгрузки
-n schema
-t table
-a -> выгрузить только данные, без схемы
-s -> выгрузить только схему, без данных
-h host
-p port
-U user
-f name|folder -> имя выходного файла или каталога
-j num -> обработка нескольких таблиц параллельно (num – число заданий)
-Z 0-9 -> уровень сжатия при архивации
-F c|d|t|p -> формат выводимых данных (пользовательский | каталог | tar | текстовый (по умолчанию))
-Fc -> сжатие (если установлена zlib).
Для бэкапа всего кластера (вместе со всеми базами, группами, пользователями, правами доступа):
Восстановление базы:
1)
$ psql <dbname> < <db.out>
2)
$ psql -f <db.out> <dbname>
3)
$ pg_restore -d <db.out> <dbname> (если бэкап создан с помощью pg_dump)
Использование параметра -f
немного отличается от psql <
. В основном, оба варианта будут делать то, что вы ожидаете, но с filename
-f
доступны некоторые полезные свойства, такие как сообщения об ошибках с номерами строк. Также есть небольшая вероятность, что запуск в таком режиме будет быстрее.
Возможные проблемы
1) Ошибка:
В логах /var/log/postgresql/postgresql-9.6-main.log:
"ВАЖНО: нет доступа к файлу "online_analyze": Нет такого файла или каталога
СООБЩЕНИЕ: система БД выключена"
Решение:
Пакеты postgresql обновились до 9.6.7, а конфиг старый. Откатился до версии 9.6.6 (переустановил из .deb пакеты server,client,contrib)
2) Ошибка:
"Ошибка СУБД:ERROR: could not access file "$libdir/fasttrun"
Решение:
Нужно установить пакет postgresql-contrib