Ставим PostgreSQL 9.6 на Debian 9

Это продолжение статьи Ставим 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) От самой (на данный момент последняя версия 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

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *