Ставим 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С
Сборка PostgreSQL для платформы 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. Вторую нужно сделать по-умолчанию:
# dpkg-reconfigure locales
# locale -a -> Проверить список установленных локалей

Устанавливаем необходимые пакеты:
# apt-get install ssl-cert libossp-uuid16 libxslt1.1

Устанавливаем вручную еще один пакет (полнофункциональная поддержка Unicode и локали):
# wget http://ftp.ru.debian.org/debian/pool/main/i/icu/libicu48_4.8.1.1-12+deb7u3_amd64.deb
# dpkg -i libicu48*.deb

Устанавливаем в ядре параметр kernel.shmmax – это максимальный размер разделяемой памяти (в байтах). Каким он должен быть – нигде не написано, и даже на странице документации postgreSQL 9.6 Managing Kernel Resources написано всего-лишь, что он должен быть “не менее 1 кБ (больше, если выполняется много копий сервера)”. Ясно лишь, что в 32-разрядной системе нужно всегда устанавливать 4294967295).

Для наших 64Гб ОЗУ установим 32Гб под shmmax, хз насколько это будет правильно. 32Гб*1024*1024*1024=34359738368 байт.
а) Добавляем в /etc/sysctl.conf:
# nano /etc/sysctl.conf
kernel.shmmax=34359738368
# sysctl -p -> Применяем внесенное изменение

ИЛИ б)
# echo 34359738368 > /proc/sys/kernel/shmmax

Проверяем внесенные изменения:

# cat /proc/sys/kernel/shmmax


Установка

Скачать дистрбутив можно:
1) От Etersoft (последний дистрибутив 9.2)
2) От PostgresPRO
3) От самой

Я ставил от PostgrePRO:

# apt-get update -y
# apt-get install -y wget gnupg2
# wget -O - http://1c.postgrespro.ru/keys/GPG-KEY-POSTGRESPRO-1C | apt-key add -
# echo deb http://1c.postgrespro.ru/archive/2018_03_02/deb stretch main > /etc/apt/sources.list.d/postgrespro-1c.list
# apt-get update -y
# apt-get install -y postgresql-pro-1c-9.6
# apt-get -f install - (возможно) установить неудовлетворенные зависимости

Возможно, понадобятся отдельно либы (сейчас не припомню точный процесс установки):
– 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 на свое:
# nano /etc/postgresql/9.6/main/postgresql.conf
data_directory = 'new_data_directory'
ИЛИ
б) Перемещаем папку и создаем симлинк:
# mv -r /var/lib/postgresql/9.6/main <new_data_directory>
# ln -s <new_data_directory/main>  /var/lib/postgresql/9.6/

Новой папке указываем права:
# chown -R postgres:postgres <new_data_directory>
# chmod 700 <new_data_directory> <- ВАЖНО!!

Запускаем и добавляем в автозагрузку:
# systemctl start postgresql
# systemctl enable postgresql

Ограничим доступ к СУБД только внутри машины и, если нужно, с опреденного сетевого интерфейса (для удаленного pgAdmin):
# nano /etc/postgresql/9.6/main/postgresql.conf
listen_addresses = 'localhost,network_interface_ip'
# service postgresql restart

Меняем пароль внутреннего пользователя БД postgres:
# su postgres
# psql -U postgres -c "ALTER USER postgres WITH PASSWORD 'PASSWORD';"
# su -
# service postgresql restart

Откроем локальный доступ с учетки postgres в файле pg_hba.conf:
# nano /etc/postgresql/9.6/main/pg_hba.conf
local all postgres trust    # это столбцы host,database,user,auth-method


Настройка

Подробное описание параметров для оптимизации работы postgreSQL написано, например, тут:

Tuning Your PostgreSQL Server (на офф.сайта без перевода)
Оптимизация работы PostgreSQL (описание параметров)
Лучшие практики по настройке PostgreSQL от gilev.ru (внизу)

Я не стал переписывать тоже самое.

Есть подбор параметров на pgtune.leopard.in.ua, но насколько он верный не могу судить.

Получить установленные параметры:
# su postgres
# psql
# select name, setting, unit from pg_settings where context = 'postmaster';

Тест postgreSQL:
# cd /usr/lib/postgresql/9.6/bin
# ./pg_test_fsync

Управление:
# su postgres
# psql -l -> список баз
# psql
# dropdb <dbname> -> удалить базу
# select pg_database_size('<dbname>'); -> посмотреть объем базы данных

Логи:
/var/lib/postgresql/9.6/main/pg_log/
pg_log – является по умолчанию местом, где хранятся журналы деятельности
pg_xlog — это место, где хранится журнал транзакций. Нельзя удалять
pg_clog содержит журналы метаданных транзакций. Нельзя удалять


Бэкапы

Для создания резервной копии определенной базы:
# pg_dump <dbname> > <db.out>
Возможные параметры:
-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).

Для бэкапа всего кластера (вместе со всеми базами, группами, пользователями, правами доступа):
# pg_dumpall > <db.out>

Восстановление базы:
1) # psql <dbname> < <db.out>
2) # psql -f <db.out> <dbname>
3) # pg_restore -d <db.out> <dbname> (если бэкап создан с помощью pg_dump)
Использование параметра -f немного отличается от psql < filename. В основном, оба варианта будут делать то, что вы ожидаете, но с -f доступны некоторые полезные свойства, такие как сообщения об ошибках с номерами строк. Также есть небольшая вероятность, что запуск в таком режиме будет быстрее.


Возможные проблемы

Ошибка:
В логах /var/log/postgresql/postgresql-9.6-main.log:
“ВАЖНО: нет доступа к файлу “online_analyze”: Нет такого файла или каталога
СООБЩЕНИЕ: система БД выключена”
Решение:
Пакеты postgresql обновились до 9.6.7, а конфиг старый. Откатился до версии 9.6.6 (переустановил из .deb пакеты server,client,contrib)

Ошибка:
“Ошибка СУБД:ERROR: could not access file “$libdir/fasttrun”
Решение:
Нужно установить пакет postgresql-contrib

0

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

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