Переход на поставку дополнительных компонентов в виде rpm-пакетов
Актуально для СУБД Pangolin версии 6.3.0.
В рамках перехода на поставку дополнительных компонентов СУБД Pangolin в виде rpm-пакетов, был осуществлен рефакторинг кода скриптов развертывания/обновления.
Исключены:
-
Возможность создания каталога для конфигурационного файла Pangolin Pooler.
-
Старые версии
template
дляmanager_backup
. -
Файлы
requirements.txt
/requirements_altlinux.txt
. -
Параметры пользовательского конфигурационного файла и проверки валидности их значений:
pip_repository:
index_url: https://pypi.org/simple/
trusted_host: pypi.org- name: Verify repository URL
ansible.builtin.assert:
that: "pip_repository.index_url is regex(valid_url_regex)"
fail_msg: "{{ message_installer.fails.verify_url.format(pip_repository.index_url, 'pip_repository.index_url') }}"
- name: Verify pip_repository.trusted_host hostname is valid
ansible.builtin.assert:
that: "pip_repository.trusted_host is regex(valid_url_regex)"
fail_msg: "{{ message_installer.fails.verify_url.format(pip_repository.trusted_host, 'pip_repository.trusted_host') }}" -
Возможность добавлению в service-файл Pangolin Manager параметра
KillMode=process
; -
Создание файлов
backup_state
,wal_backup_state
на стенде с компонентомpangolin-backup-tools
. -
Поддержка
confd
(Удаление/Откат). -
Слияние bootstrap-частей конфигурационных файлов после миграции.
-
Возможность изменения конфигурации
pg_hba
в процессе работы скриптов обновления. Конфигурация после миграции должна остаться исходной:- name: disable {{ as_group }} connection in pg_hba
ansible.builtin.include_role:
name: common
tasks_from: update_edit_pghba
vars:
_pghba_remove_params: [ '^(.*)host(.*)all(.*){{ as_group }}(.*)0.0.0.0/0(.*)scram-sha-256(.*)$' ]
_pghba_action_type: 'remove'
when: inventory_hostname != 'etcd' and action_type == 'install' -
Изменение пользовательских настроек
postgresql_clean_logs
в процессе обновления:- name: remove cron job
ansible.builtin.cron:
name: "a job for postgresql clean logs"
state: absent
become_user: postgres
ignore_errors: yes
- name: setup deleting and compressing old logs
ansible.builtin.template:
src: postgresql_clean_logs.j2
dest: "{{ global_scripts }}/postgresql_clean_logs"
owner: postgres
group: postgres
mode: '0700'
- name: create cron job
ansible.builtin.cron:
name: "a job for postgresql clean logs"
special_time: daily
job: "{{ global_scripts }}/postgresql_clean_logs"
become_user: postgres -
Создание sos-файла.
-
Создание variables-файла для работы СРК-службы.
-
control-скрипты.
Изменена логика конфигурирования pg_quote
в процессе обновления:
-
Создание и заполнение файла производится только в процессе первичной установки.
-
После обновления данная функциональность не включается, а работает с параметрами по умолчанию. В случае, если на стенде данная функциональность включена, то ее настройка не поменяется, а именно:
- Значение для параметра
postgresql.pg_quote
, в случае конфигурации с pangolin-manager, сохранится с исходного стенда. - Содержимое файла
pg_quote.conf
, в случае конфигурации без pangolin-manager, сохранится с исходного стенда.
- Значение для параметра
Доработки скриптов развертывания/обновления:
-
rpm-пакет
pangolin-ansible-venv-controller
, входящий в состав дистрибутива и располагающийся в3rdparty
, позволяет развернуть виртуальное окружения для корректного запуска скриптов развертывания/обновления в один шаг. В его состав будут входить все необходимые зависимости для запуска ansible-скриптов. -
Реализована возможность выбирать целевой вариант поиска и использования пакетов для развертывания/обновления. Путь поиска необходимых пакетов, как исходной версии, так и новой, по умолчанию ведет к локальному репозиторию. В пользовательский конфигурационный файл был добавлен параметр
pangolin_rpms_path
, позволяющий задать путь к каталогу с пакетами на управляющем узле. -
Добавлен параметр
pangolin_block_update
, с помощью которого можно контролировать блокировку обновления, если один из исходных пакетов для восстановления найден не был. Значение по умолчанию -true
. В случае значения для данного параметраfalse
, автоматический откат будет отключен, а процесс обновления заблокирован не будет:pangolin_rpms_path: "" # Path to rpm packages new/old version on localhost
pangolin_block_update: true # Block update if rpm for recovery not exists. If set false, automation recovery will be disabled if rpm current version not exists
Изменение в permission-части
Cкорректированы и приведены к общему виду разрешения (permissions) на рабочие каталоги и файлы компонентов. Общим подходом стал уход от выдачи прав для пользователей other
-группы. Добавлено создание дополнительной группы pangolin_users
, куда входят пользователь postgres
и kmadmin_pg
.
По умолчанию uid/gid
следующие:
postgres
-26
;kmadmin_pg
-126
;pangolin_users
-226
.
Ниже приведена развертка каталогов с правами/владельцем и группой.
Исполняемые файлы:
/usr
# клиентская часть
/pangolin-dbms-{short_version}-client - 755 root:root
/pangolin-dbms-client/<dir> - 755 root:root
/pangolin-dbms-client/bin/* - 555 root:root
/pangolin-dbms-client/lib/* - 444 root:root
/pangolin-dbms-client/share/* - 444 root:root
# серверная часть
/pangolin-{short_version} - 775 postgres:pangolin_users
/bin - 770 postgres:pangolin_users
/initprotection - 550 kmadmin_pg:kmadmin_pg
/pangolin-linker - 500 root:root
/<остальные файлы> - 500 postgres:postgres
/lib - 770 postgres:pangolin_users
/lib/* - 440 postgres:pangolin_users
/3rdparty - 700 postgres:postgres
/3rdparty/* - 700 postgres:postgres
/share - 705 postgres:postgres
/share/{man,doc} - 705 postgres:postgres
/share/{man,doc}/* - 605 postgres:postgres
/share/*.sample - 600 postgres:postgres
/share/<остальные файлы> - 400 postgres:postgres
/share/<остальные каталоги> - 700 postgres:postgres
/share/<остальные каталоги>/* - 600 postgres:postgres
/opt
# pangolin-diagnostic-tool
/pangolin-diagnostic-tool - 700 postgres:postgres
/pangolin-diagnostic-tool/<dir> - 700 postgres:postgres
/pangolin-diagnostic-tool/lib/* - 400 postgres:postgres
/pangolin-diagnostic-tool/bin/* - 500 postgres:postgres
/pangolin-diagnostic-tool/share/* - 600 postgres:postgres
# pangolin-pgloader
/pangolin-pgloader - 700 postgres:postgres
/pangolin-pgloader/<dir> - 700 postgres:postgres
/pangolin-pgloader/lib/* - 400 postgres:postgres
/pangolin-pgloader/bin/* - 500 postgres:postgres
/pangolin-pgloader/share/* - 600 postgres:postgres
# pangolin-manager
/pangolin-manager - 700 postgres:postgres
/pangolin-manager/<dir> - 700 postgres:postgres
/pangolin-manager/share/* - 600 postgres:postgres
/pangolin-manager/bin/* - 500 postgres:postgres
/pangolin-manager/lib/* - 400 postgres:postgres
# pangolin-pooler
/pangolin-pooler - 700 postgres:postgres
/pangolin-pooler/<dir> - 700 postgres:postgres
/pangolin-pooler/bin/* - 500 postgres:postgres
/pangolin-pooler/lib/* - 400 postgres:postgres
/pangolin-pooler/share/* - 600 postgres:postgres
# pangolin-backup-tools
/pangolin-backup-tools - 700 postgres:postgres
/pangolin-backup-tools/<dir> - 700 postgres:postgres
/pangolin-backup-tools/bin/* - 500 postgres:postgres
/pangolin-backup-tools/lib/* - 400 postgres:postgres
/pangolin-backup-tools/share/* - 600 postgres:postgres
# pangolin_license
/pangolin_license - 770 postgres:pangolin_users
/pangolin_license/* - 440 postgres:pangolin_users
# pangolin-certs-rotate
/pangolin-certs-rotate - 700 postgres:postgres
/pangolin-certs-rotate/<dir> - 700 postgres:postgres
/pangolin-certs-rotate/lib/* - 400 postgres:postgres
/pangolin-certs-rotate/bin/* - 500 postgres:postgres
/pangolin-certs-rotate/share/* - 600 postgres:postgres
# pangolin-auth-reencrypt
/pangolin-auth-reencrypt - 770 postgres:pangolin_users
/pangolin-auth-reencrypt/<dir> - 770 postgres:pangolin_users
/pangolin-auth-reencrypt/lib/* - 440 postgres:pangolin_users
/pangolin-auth-reencrypt/bin/* - 550 postgres:pangolin_users
/pangolin-auth-reencrypt/share/* - 660 postgres:pangolin_users
# pangolin-security-utilities
/pangolin-security-utilities - 700 kmadmin_pg:kmadmin_pg
/pangolin-security-utilities/<dir> - 700 kmadmin_pg:kmadmin_pg
/pangolin-security-utilities/lib/* - 400 kmadmin_pg:kmadmin_pg
/pangolin-security-utilities/bin/* - 500 kmadmin_pg:kmadmin_pg
/pangolin-security-utilities/share/* - 600 kmadmin_pg:kmadmin_pg
# /pangolin-common - начиная с версии 6.3.0 перестает использоваться
Конфигурационные файлы:
/etc
# pangolin-backup-tools
/pangolin-backup-tools - 700 postgres:postgres
/pangolin-backup-tools/* - 600 postgres:postgres
# pangolin-pooler
/pangolin-pooler - 700 postgres:postgres
/pangolin-pooler/* - 600 postgres:postgres
# pangolin-manager
/pangolin-manager - 700 postgres:postgres
/pangolin-manager/* - 600 postgres:postgres
# pangolin-certs-rotate
/pangolin-certs-rotate - 700 postgres:postgres
/pangolin-certs-rotate/* - 600 postgres:postgres
# pangolin-auth-reencrypt
/pangolin-auth-reencrypt - 770 postgres:pangolin_users
/pangolin-auth-reencrypt/enc_util.cfg - 440 postgres:pangolin_users
/pangolin-auth-reencrypt/postgres - 700 postgres:postgres
/pangolin-auth-reencrypt/postgres/enc_params.cfg.postgres - 600 postgres:postgres
/pangolin-auth-reencrypt/kmadmin_pg - 700 kmadmin_pg:kmadmin_pg
/pangolin-auth-reencrypt/kmadmin_pg/enc_params.cfg.kmadmin_pg - 600 kmadmin_pg:kmadmin_pg
# pangolin-security-utilities
/pangolin-security-utilities - 770 kmadmin_pg:pangolin_users
/pangolin-security-utilities/enc_connection_settings.cfg - 640 kmadmin_pg:pangolin_users
/pangolin-security-utilities/enc_connection_settings_certs.cfg - 640 kmadmin_pg:pangolin_users
/etc/pangolin-auth-encryption - 700 postgres:postgres
/etc/pangolin-auth-encryption/enc_util_auth_settings.cfg - 600 postgres:postgres
# /postgres - начиная с версии 6.3.0 перестает использоваться. В процессе обновлении все файлы, находящиеся в данном каталоге, будут перемещены в целевые директории.
Service-файлы:
/usr/lib/systemd/system/* - 600 postgres:postgres
/home/postgres/.config/user/systemd/* - 600 postgres:postgres
/home/kmadmin_pg/.config/user/systemd/* - 600 kmadmin_pg:kmadmin_pg
Файлы логов по умолчанию:
/opt
pangolin-pooler/ - 700 postgres:postgres
log/ - 700 postgres:postgres
pangolin-pooler-* - 600 postgres:postgres
pangolin-manager/ - 700 postgres:postgres
log/ - 700 postgres:postgres
pangolin-manager-* - 600 postgres:postgres
pangolin-certs-rotate/ - 700 postgres:postgres
log/ - 700 postgres:postgres
pangolin-certs-rotate-* - 600 postgres:postgres
pangolin-auth-reencrypt/ - 770 postgres:pangolin_users
log/ - 770 postgres:pangolin_users
pangolin-auth-reencrypt-postgres* - 600 postgres:postgres
pangolin-auth-reencrypt-kmadmin_pg* - 600 kmadmin_pg:kmadmin_pg
/var/log
pangolin-pgqd-* - 600 postgres:postgres
# ротация логов
/etc/logrotate.d/
pangolin-auth-reencrypt-postgres - 644 root:root
pangolin-auth-reencrypt-kmadmin_pg - 644 root:root
pangolin-pooler - 644 root:root
pangolin-certs-rotate - 644 root:root
pangolin-manager - 644 root:root
pangolin-dbms - 644 root:root
Изменения в части логирования
Логирование всех компонентов осуществляется в отдельные файлы логов. Формат наименования: pangolin-имя-компонента-%Y-%m-%d_%H%M%S.log
.
Развертывание компонента через rpm-пакет происходит следующим образом:
-
По умолчанию запись файла лога будет осуществляться в
/opt/pangolin-имя-компонента/log/pangolin-имя-компонента-%Y-%m-%d_%H%M%S.log
, за исключением логовpangolin-dbms
, которые пишутся в каталог/usr/pangolin-<short_version>/log/pangolin-dbms-%Y-%m-%d_%H%M%S.log
. -
Необходима установка индивидуального пути хранения файлов логов через
env
. Перед установкой пакета нужно задать путь через параметрLOG_DIR_PANGOLIN_ИМЯ_КОМПОНЕНТА
:LOG_DIR_PANGOLIN_ИМЯ_КОМПОНЕНТА=/pgerrorlogs/pangolin_pooler/
При развертывании компонента скриптами развертывания/обновления по умолчанию запись файла лога происходит в каталог {{ PGLOGS }}/имя-компонента/pangolin-имя-компонента-%Y-%m-%d_%H%M%S.log
, за исключением логов pangolin-dbms
, которые используют каталог {{ PGLOGS }}/pangolin-имя-компонента-%Y-%m-%d_%H%M%S.log
.
PGLOGS
- по умолчанию соответствует директории/pgerrorlogs/0<base_version>/
. Это необходимо для сохранения обратной совместимости.
В процессе установки пакета будет добавляться конфигурация ротации логов через logrotate
для следующих компонентов:
pangolin-dbms
;pangolin-manager
;pangolin-pooler
;pangolin-auth-reencrypt
;pangolin-certs-rotate
.
В рамках обновление компонента настройки логирования не меняются. Файлы сохраняются в исходных каталогах с исходным наименованием.
Настройка ротации логов аудита (для Pangolin DBMS и Pangolin Manager) не производится.
Внимание!
Задать индивидуальное имя файла c логом для компонентов при развертывании через rpm невозможно. Для корректировки имени файла необходимо после развертывания скорректировать путь в конфигурационном файле компонента и файл ротации для компонента в
/etc/logrotate.d/имя-компонента
.
Изменения в хранении конфигурационного файла, генерируемого утилитой pg_auth_config
Конфигурационный файл enc_util_auth_settings.cfg
перенесен из /etc/postgres/
в /etc/pangolin-auth-encryption/
по причине ухода от путей, используемых ванильной версией postgresql
. Ввиду этого после обновления путь до этого файла в конфигурационном файле службы засекречивания enc_util.cfg
будет изменен.
Изменения в части формирования rpm
rpm/deb
упрощает распространение, управление и обновление программного обеспечения. Поставка компонентов в виде rpm/deb-пакетов является предпочтительной. С помощью rpm/deb
можно:
- Использовать стандартные средства управления пакетами (например,
yum/dnf
илиapt-get
) для установки, переустановки, удаления, обновления и проверки rpm-пакетов. - Осуществлять запросы и проверку пакетов в системе, поскольку rpm поддерживает базу данных установленных пакетов и их файлов.
- Использовать метаданные для описания пакетов, инструкций по их установке. Каждый rpm/deb-пакет содержит метаданные, описывающие компоненты пакета, версию, выпуск, размер, URL-адрес проекта, инструкции по установке и так далее.
- Добавлять пакеты в репозитории, что позволяет легко находить и развертывать компоненты. Исходный код дополнительных компонентов СУБД Pangolin упакован в rpm/deb-пакеты. Для каждого компонента имеется файл спецификации.
Изменения в рамках pangolin-dbms
и pangolin-dbms-client
Скорректирован путь развертывания бинарных файлов и библиотек компонентов pangolin-dbms
и pangolin-dbms-client
. Из путей PGHOME/PGHOME_CLIENT
исключена патч-версия:
# Исходный путь
/usr/pangolin-<short_version>.<patch>/
# Целевой путь
/usr/pangolin-<short_version>/
Изменения в рамках Pangolin Pooler, Pangolin Manager и pangolin-backup-tools
В логике rpm-пакетов компонентов pangolin-backup-tools
, Pangolin Manager и Pangolin Pooler не создается физический каталог /opt/pangolin-Х.Х.Х
с версией компонета в названии, а также не генерируются ссылки относительно /opt/pangolin
, /opt/pangolin-Х
. При развертывании создается только один физический каталог /opt/pangolin-имя-компонента
.
Из состава клиентской части СУБД исключена утилита pg_probackup
. Теперь она поставляется в составе компонента pangolin-backup-tools
. Утилиты расположена после развертывания rpm-пакета по пути /opt/pangolin-backup-tools/bin/
.
В скриптах развертывания/обновления изменена логика развертывания. Теперь компонент pangolin-backup-tools
при первичном развертывании или при обновлении стенда, на котором этого компонента не было, устанавливается по умолчанию.
Удалены следующие параметры из пользоваетельского конфигурационного файла:
################################################## 4. BACKUP SETTINGS (optional-bank) #################################################```
SRC: false
manage_backup_bin: /opt/omni/lbin
backup_tools_conf_path: /etc/pangolin-backup-tools
Изменения pangolin-certs-rotate
Сервис ротации сертификатов и обновления файлов CRL входит в состав продукта и поставляется в виде rpm в составе дистрибутива в каталоге utilities/
.
Бинарные файлы/библиотеки при развертывании rpm-пакета располагаются по следующим путям:
/opt/pangolin-certs-rotate/bin/
/opt/pangolin-certs-rotate/lib/
Сервисный файл компонента при развертывании rpm-пакета располагается по пути:
/usr/lib/systemd/system/pangolin-certs-rotate.service или /home/postgres/.config/systemd/user/pangolin-certs-rotate.service
Конфигурационный файл компонента при развертывании rpm-пакета располагается по пути: /etc/pangolin-certs-rotate/pangolin-certs-rotate.yml
.
Файл с PID процесса компонента при развертывании rpm-пакета располагается по следующему пути: /var/run/pangolin-certs-rotate/pangolin-certs-rotate.pid
.
Примечание:
Версия компонента привязан к версии продукта.
Изменения pangolin-auth-reencrypt
Cервис для автоматического перекодирования параметров подключения без привлечения администратора базы данных и администратора безопасности, входит в состав продукта, поэтому будет поставляться в виде rpm в составе дистрибутива в каталоге utilities/
.
Бинарные файлы и библиотеки при развертывании rpm-пакета располагаются по следующему пути:
/opt/pangolin-auth-reencrypt/bin/
Cервисный файла компонента при развертывании rpm-пакета располагается по пути:
/usr/lib/systemd/system/pangolin-auth-reencrypt@.service или /home/postgres/.config/systemd/user/pangolin-auth-reencrypt.service
Конфигурационный файл компонента при развертывании rpm-пакета располагается по следующему пути:
/etc/pangolin-auth-reencrypt/enc_util.cfg
/etc/pangolin-auth-reencrypt/postgres/enc_params.cfg.postgres
/etc/pangolin-auth-reencrypt/kmadmin_pg/enc_params.cfg.kmadmin_pg
Файл с PID процесса компонента при развертывании rpm-пакета располагается по следующему пути:
/var/run/pangolin-auth-reencrypt/pangolin-auth-reencrypt-postgres.pid
/var/run/pangolin-auth-reencrypt/pangolin-auth-reencrypt-kmadmin_pg.pid
При развертывании конфигурационные файлы, расположенные по старому пути /etc/postgres
остаются в исходном состоянии. Скрипты развертывания/обновления или post-скрипты rpm их не изменяют. За исключением enc_util.cfg
. В процессе обновления он будет перемещен в целевой каталог.
Изменения pangolin-security-utilities
Данный компонент представляет собой комплекс следующих утилит:
setup_kms_credentials
encrypt_params_file
generate_encryption_key
Данный набор утилит входят в состав продукта, поэтому будет поставляться в виде rpm в составе дистрибутива в каталоге utilities/
.
Бинарные файлы и библиотеки при развертывании rpm-пакета располагаются по следующему пути:
/opt/pangolin-security-utilities/bin/
Конфигурационный файл компонента при развертывании rpm-пакета располагается по следующему пути:
/etc/pangolin-security-utilities/enc_connection_settings.cfg
/etc/pangolin-security-utilities/enc_connection_settings_certs.cfg
Версия компонента привязан к версии продукта.
Ввиду того, что пути расположения файлов подключения к серверам VAULT изменились, после обновления пути до этих файлов будут изменены в конфигурационном файле службы перекодирования enc_util.cfg
.
Изменения pangolin-ansible-venv-controller
Набор pip-пакетов для развертывания виртуального окружения, которое необходимо для корректного запуска ansible-скриптов на управляющем узле. Данный компонент не входит в состав продукта, поэтому поставляется в виде rpm в составе дистрибутива в каталоге 3rdparty/
.
Список pip-пакетов, которые вошли в состав компонента:
cffi==1.15.0
cryptography==3.3.1
Jinja2==3.0.3
jmespath==0.10.0
MarkupSafe==2.0.1
netaddr==0.7.19
packaging==24.0
pycparser==2.21
pyparsing==3.0.6
PyYAML==6.0
resolvelib==0.5.5
six==1.16.0
ansible==4.10.0
Виртуальное окружение при развертывании rpm располагается по пути /opt/pangolin-ansible-venv-controller/
.
Изменения pangolin-ansible-venv-controlled
Набор pip-пакетов для развертывания виртуального окружения, необходимый для корректного запуска ansible-скриптов на управляемом узле. Данный компонент не входит в состав продукта, поэтому поставляется в виде rpm в составе дистрибутива в каталоге 3rdparty/
. Изменил свое название с ansible-venv
на pangolin-ansible-venv-controlled
. Также поменялся способ версионирования. Версия компонента привязана к версии продукта. При развертывании старый пакет ansible-venv
будет удален.
Изменения pangolin-pgloader
Утилита для миграции данных из MSSQL в СУБД Pangolin. Данный компонент не входит в состав продукта, поэтому поставляется в виде rpm в составе дистрибутива в каталоге 3rdparty/migration_tools/
.
Утилита при развертывании rpm-пакета располагается по пути: /opt/pangolin-pgloader/bin/
.
Изменения ora2pg
Утилита для миграции данных из Oracle в Pangolin. Данный компонент не входит в состав продукта, поэтому поставляется в виде бинарных файлов в составе дистрибутива в каталоге 3rdparty/migration_tools/
. Для сборки rpm-пакета подготовлен spec-файл. Для настройки данного компонента необходимо воспользоваться инструкцией из официальной документации.
Изменения pangolin-diagnostic-tool
Утилита для сбора диагностической информации об узле СУБД. Данный компонент входит в состав продукта, поэтому будет поставляться в виде rpm в составе дистрибутива в каталоге utilities/
.
Утилита при развертывании располагается по пути /opt/pangolin-diagnostic-tool/bin/
.
Изменения pangolin-pgsql-http
Расширение для поддержки HTTP-клиента на уровне СУБД, позволяющее обращаться к REST-сервисам посредством SQL-запросов. Данный компонент не входит в состав продукта, поэтому поставляется в виде rpm в составе дистрибутива в каталоге 3rdparty/pgsql_http/
. Версия компонента привязана к ванильной версии расширения.
Расположение расширения при развертывании rpm пакета: /usr/pangolin-<short_version>/share/extension/
.
Расположение библиотек расширения при развертывании rpm-пакета: /usr/pangolin-<short_version>/lib/
.
Изменения pangolin-pg-background
Расширение для управления пользовательскими фоновыми процессами. Данный компонент не входит в состав продукта, поэтому поставляется в виде rpm в составе дистрибутива в каталоге 3rdparty/pg_background/
. Версия компонента привязана к ванильной версии расширения.
Расширение при развертывании rpm располагается по пути /usr/pangolin-<short_version>/share/extension/
.
Библиотеки расширения располагаются в /usr/pangolin-<short_version>/lib/
.
Изменения pangolin-pgq
и pangolin-pgq-coop
Расширения для поддержки очередей сообщений со стороны СУБД. Данные компоненты не входят в состав продукта, поэтому поставляются в виде rpm в составе дистрибутива в каталогах 3rdparty/pgq/
и 3rdparty/pgq-coop/
. Версии компонентов привязаны к ванильным версиям расширений. Расширения располагаются в /usr/pangolin-<short_version>/share/extension/
.
Библиотеки расширений при развертывании rpm располагаются в /usr/pangolin-<short_version>/lib/
.
Изменения pangolin-pgqd
Сервис для поддержки очередей сообщений со стороны СУБД. Данный компонент не входит в состав продукта, поэтому поставляется в виде rpm в составе дистрибутива в каталоге 3rdparty/pgqd/
. Версия компонента привязана к ванильной версии расширения.
Бинарный файл компонента при развертывании rpm-пакета расположен в /usr/pangolin-<short_version>/bin/
.
Сервисный файл компонента расположен по пути /usr/lib/systemd/system/pangolin-pgqd.service
или /home/postgres/.config/systemd/user/pangolin-pgqd.service
.
Конфигурационный файл расположен в /etc/pangolin-pgqd/pangolin-pgqd.ini
.
Расположение файла с PID процесса компонента следующее: /var/run/pangolin-pgqd/pangolin-pgqd.pid
.
Изменения pangolin-pldebugger
Расширение, предоставляющее API для выполнения функций с возможностью остановки в заданной точке, пошаговым выполнением и просмотром значений переменных. Расширение интегрировано с решениями от pg_admin
и dbeaver
(данные утилиты предоставляют графический интерфейс для разработки с использованием возможностей расширения), а также позволяет использовать функции API прямо из psql
, поскольку они представляют собой стандартные SQL-функции. Данный компонент не входит в состав продукта, поэтому поставляется в виде rpm в составе дистрибутива в каталоге 3rdparty/pldebugger/
. Версия компонента привязана к ванильной версии расширения.
Расширение при развертывании rpm-пакета располагается в /usr/pangolin-<short_version>/share/extension/
.
Библиотеки расширения при развертывании находятся по пути: /usr/pangolin-<short_version>/lib/
.
Изменения pangolin-pgcopydb
Утилита для автоматизации копирования базы данных на другой сервер. Основным вариантом использования pgcopydb
является миграция на новую систему PostgreSQL либо для нового оборудования, новой архитектуры, либо для новой основной версии PostgreSQL. Данный компонент не входит в состав продукта, поэтому поставляется в виде rpm в составе дистрибутива в каталоге 3rdparty/pgcopydb/
. Версия компонента привязана к ванильной версии расширения.
Расширение располагается при развертывании по следующему пути: /usr/pangolin-<short_version>/bin/
.
Изменения pangolin-pgsql-check
Статический анализатор кода plpgsql
для PostgreSQL, предоставляющее набор функций для анализа и профилирования функций и процедур, написанных на языке PL/pgSQL. Данный компонент не входит в состав продукта, поэтому поставляется в виде rpm в составе дистрибутива в каталоге 3rdparty/pgsql_check/
. Версия компонента привязан к ванильной версии расширения.
Расположение расширения при развертывании rpm-пакета: /usr/pangolin-<short_version>/share/extension/
.
Расположение библиотек расширения при развертывании: /usr/pangolin-<short_version>/lib/
.
Изменения pangolin-postgis
Расширение, добавляющее поддержку хранения, индексирования и запроса геопространственных данных. Данный компонент не входит в состав продукта, поэтому поставляется в виде rpm в составе дистрибутива в каталоге 3rdparty/postgis/
. Версия компонента привязана к ванильной версии расширения.
Расположение расширения при развертывании: /usr/pangolin-<short_version>/share/extension/
.
Расположение сторонних библиотек расширения: /usr/local/lib
.
Изменения pangolin-pgrouting
Расширение, добавляющее поддержку геопространственной маршрутизации и другие функции сетевого анализа. Данный компонент не входит в состав продукта, поэтому поставляется в виде rpm в составе дистрибутива в каталоге 3rdparty/pgrouting/
. Версия компонента привязана к ванильной версии расширения.
Расположение расширения при развертывании rpm-пакета: /usr/pangolin-<short_version>/share/extension/
.
Расположение библиотек расширения: /usr/pangolin-<short_version>/lib/
.
Разделение клиентской и серверной частей DBMS в отдельные RPM-пакеты
В СУБД Pangolin RPM-пакет разделен на две независимые части — клиентскую и серверную, обе из которых доступны пользователю после установки. Также пользователю доступна возможность независимого развертывания клиентской части с удаленным доступом к серверу. Такое разделение упрощает процессы обновления и модификации СУБД Pangolin.
Состав клиентского RPM-пакета
В состав пакета включены (перенесены из серверной части) следующие утилиты, а также файлы документации и локали, соответствующие им:
clusterdb
;createdb
;createuser
;dropdb
;dropuser
;pangolin-linker
;pg_amcheck
;pg_basebackup
;pgbench
;pg_dump
;pg_dumpall
;pg_isready
;pg_probackup
;pg_receivewal
;pg_recvlogical
;pg_restore
;pg_verifybackup
;psql
;reindexdb
;vacuumdb
.
libpq
Примечание:
libpq
— это интерфейс СУБД Pangolin для программирования приложений на языке C. Библиотека содержит набор функций, используя которые клиентские программы могут передавать запросы серверу СУБД Pangolin и принимать результаты этих запросов. Клиентские программы должны использовать для определения API-функций заголовочный файлlibpq.h
и должны компоноваться с библиотекойlibpq
.
В состав клиентского rpm-пакета включен libpq.h
:
/usr/pangolin-dbms-libpq-<версия>/
└── include
└── libpq.h
1 directories, 1 files
Описание решения и ограничения
Имя серверного rpm-пакета изменено с platform-v-pangolin-dbms-<версия>.00-rhel8.9.x86_64.rpm
на pangolin-dbms-<версия>-rhel8.9.x86_64.rpm
. Добавление суффикса -major_ver.minor_ver
к имени пакета позволяет разворачивать пакет с СУБД рядом с его предыдущей версией, в том случае, если у этой версии суффикс -major_ver.minor_ver
отличается (изменения, требующие миграции данных при обновлении СУБД могут быть только при изменении либо минорной, либо мажорной версии СУБД).
Имя клиентского rpm-пакета - pangolin-dbms-6.5.2-client-<версия>-rhel8.9.x86_64.rpm
.
После развертывания все пользователи ОС получают возможность запуска клиентской части СУБД независимо от расположения сервера БД:
- содержимое
/usr/pangolin-dbms-client-{full_dbms_ver}/bin
получает права доступа0755
; - остальное содержимое в
/usr/pangolin-dbms-client-{full_dbms_ver}/
получает права доступа0444
; - владельцем директории
/usr/pangolin-dbms-client-{full_dbms_ver}/
и ее содержимого являетсяroot
.
Для корректной работы Pangolin Manager c клиентской частью СУБД:
- в
unit
-файлpangolin-manager.service
службыsystemd
была добавлена новая переменная окруженияPG_CLIENT_PLUGINS_PATH=/usr/pangolin-dbms-client/lib
; - в конфигурационный файл Pangolin Manager
postgres.yml
был добавлен новый параметрbin_dir_client
, в котором указывается путь до исполняемых файлов клиентской части СУБД.
Так как утилита pg_upgrade
использует одновременно утилиты как из серверной, так и из клиентской части для ее запуска было добавлено два дополнительных ключа:
--old-bindirclient
- путь к исполняемым файлам клиентской части обновляемой версии (по умолчанию параметру присваивается значение из ключа-b
);--new-bindirclient
- путь к исполняемым файлам клиентской части новой версии (по умолчанию параметру присваивается значение из ключа-В
).
Для запуска (после установки в ОС rpm/deb-пакета) утилиты из клиентской части СУБД необходимо либо указать полный путь до утилиты, например, /usr/pangolin-dbms-client/bin/psql
, либо использовать psql в командной строке.
Запуск возможен из-под любого пользователя ОС. Передавать дополнительно какие-либо environment
-переменные (например, LD_LIBRARY_PATH
или PG_PLUGINS_PATH
) не нужно.
Имеются следующие ограничения:
-
клиентская часть будет разворачиваться в отдельную директорию
/usr/pangolin-dbms-client-{full_dbms_ver}
, отличную от директории развертывания серверной части; -
при развертывании rpm-пакета автоматически будут создаваться следующие символические ссылки:
/usr/pangolin-dbms-client → /usr/pangolin-dbms-client-{full_dbms_ver}
;/usr/pangolin-dbms-client-{major_dbms_ver} → /usr/pangolin-dbms-client-{full_dbms_ver}
.
-
утилиты, перенесенные в клиентскую часть (за исключением
pangolin-linker
) и указанные в/usr/pangolin-dbms-client/bin
не должны дублироваться в/usr/pangolin/bin
; -
при развертывании СУБД с помощью скриптов автоматизации клиентская часть устанавливается автоматически на той же машине, что и серверная;
-
утилита
pg_verifybackup
, входящая в состав клиентской части СУБД Pangolin, в случае развертывания последней на отдельном от серверной части узле, должна запускаться с ключом-n/--no-parse-wal
.