Сервис systemd для СУБД Pangolin
Юнит автоматически создается при работе скриптов автоматизации.
В наборе скриптов, что относятся к инсталлятору лежит пример юнита: installer/roles/pangolin_dbms/templates/postgresql.service.j2.
Подготовка юнита
-
Проверьте, существует ли юнит
systemdдля управления экземпляром PostgreSQL:sudo systemctl list-unit-files | grep postgresПри отсутствии юнита приведенная выше команда ничего не вернет. Если юнит уже имеется, переходите к разделу «Включение юнита и запуск сервиса».
-
При отсутствии сервиса создайте его управляющий файл командой:
sudo touch /etc/systemd/system/postgresql.service -
Заполните созданный файл
/etc/systemd/system/postgresql.serviceскопированным текстом далее с помощью текстового редактора. При этом редактор должен быть запущен от имени суперпользователя ОС (с правами root).[Unit]Description=Runners PostgreSQL serviceAfter=syslog.target network.target[Service]Type=notifyEnvironment="PG_LICENSE_PATH=/opt/pangolin_license"Environment="PG_PLUGINS_PATH=/usr/pangolin-6.7.6/lib"Environment="PGCTLTIMEOUT=120"Environment="LD_LIBRARY_PATH=/usr/pangolin-6.7.6/lib"LimitNOFILE=65536# Pre-commands to start watchdog deviceUser=postgresGroup=postgresPermissionsStartOnly=trueExecStartPre=/bin/mkdir -p /var/run/postgresqlExecStartPre=/bin/chown -R postgres:postgres /var/run/postgresqlExecReload=/bin/kill -HUP $MAINPIDWorkingDirectory=/usr/pangolin-6.7.6ExecStart=/bin/bash -i -c "/usr/pangolin-6.7.6/bin/postgres -D /pgdata/06/data"Restart=on-failure[Install]WantedBy=multi-user.target
Включение юнита и запуск сервиса
-
Проверьте правильность копирования:
cat /etc/systemd/system/postgresql.service[Unit]Description=Runners PostgreSQL service After=syslog.target network.target[Service]Type=notifyEnvironment="PG_LICENSE_PATH=/opt/pangolin_license"Environment="PG_PLUGINS_PATH=/usr/pangolin-6.7/lib"Environment="PGCTLTIMEOUT=120"Environment="LD_LIBRARY_PATH=/usr/pangolin-6.7/lib"LimitNOFILE=65536# Pre-commands to start watchdog deviceUser=postgresGroup=postgresPermissionsStartOnly=trueExecStartPre=/bin/mkdir -p /var/run/postgresqlExecStartPre=/bin/chown -R postgres:postgres /var/run/postgresqlExecReload=/bin/kill -HUP $MAINPIDWorkingDirectory=/usr/pangolin-6.7ExecStart=/bin/bash -i -c "/usr/pangolin-6.7/bin/postgres -D /pgdata/06/data"Restart=on-failure[Install]WantedBy=multi-user.target -
Перечитайте конфигурацию
systemd:sudo systemctl daemon-reload -
Проверьте, подключился ли юнит
postgresql.service:sudo systemctl list-unit-files | grep postgresqlpostgresql.service enabled disabled -
Запустите его, сконфигурировав его при этом для автозапуска:
sudo systemctl enable --now postgresqlCreated symlink /etc/systemd/system/multi-user.target.wants/postgresql.service → /etc/systemd/system/postgresql.service. -
Проверьте статус сервиса
postgresql:sudo systemctl status postgresql● postgresql.service - Runners PostgreSQL serviceLoaded: loaded (/etc/systemd/system/postgresql.service; enabled; vendorpreset: disabled)Active: active (running) since Sun 2024-12-08 19:08:00 MSK; 1min 37s agoProcess: 2913 ExecStartPre=/bin/mkdir -p /var/run/postgresql (code=exited,status=0/SUCCESS)Process: 2914 ExecStartPre=/bin/chown -R postgres:postgres/var/run/postgresql (code=exited, status=0/SUCCESS)Main PID: 2915 (postgres)Tasks: 10 (limit: 4652)Memory: 32.7MCPU: 329msCGroup: /system.slice/postgresql.service├─ 2915 /usr/pangolin-6.7.6/bin/postgres -D /pgdata/06/data├─ 2939 "postgres: checkpointer " "" "" "" "" "" "" "" "" "" "" """" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""├─ 2940 "postgres: background writer " "" "" "" "" "" "" "" "" """" "" "" "" "" "" "" "" "" "" "" "" "" ""├─ 2942 "postgres: idle sessions terminator " "" "" "" "" "" "" """" "" "" "" "" "" "" "" ""├─ 2943 "postgres: walwriter " "" "" "" "" "" "" "" "" "" "" "" """" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""├─ 2944 "postgres: license checker " "" "" "" "" "" "" "" "" "" """" "" "" "" "" "" "" "" "" "" "" "" "" "" ""├─ 2945 "postgres: autovacuum launcher " "" "" "" "" "" "" "" "" """" "" "" "" "" "" "" "" "" "" "" ""├─ 2946 "postgres: autounite launcher " "" "" "" "" "" "" "" "" """" "" "" "" "" "" "" "" "" "" "" "" ""├─ 2947 "postgres: integrity check launcher " "" "" "" "" "" "" """" "" "" "" "" "" "" "" ""└─ 2948 "postgres: logical replication launcher " "" "" "" "" "" """" "" "" "" "" ""Dec 08 19:08:00 p620.class.edu bash[2915]: 2024-12-08 19:08:00.511 MSK [2915]LOG: listening on IPv4 address "0.0.0.0", port 5432Dec 08 19:08:00 p620.class.edu bash[2915]: 2024-12-08 19:08:00.511 MSK [2915]LOG: listening on IPv6 address "::", port 5432Dec 08 19:08:00 p620.class.edu bash[2915]: 2024-12-08 19:08:00.519 MSK [2915]LOG: listening on Unix socket "/tmp/.s.PGSQL.5432"Dec 08 19:08:00 p620.class.edu bash[2941]: 2024-12-08 19:08:00.526 MSK [2941]LOG: database system was shut down at 2024-12-08 19:07:38 MSKDec 08 19:08:00 p620.class.edu bash[2942]: 2024-12-08 19:08:00.527 MSK [2942]LOG: idle terminator startedDec 08 19:08:00 p620.class.edu bash[2944]: 2024-12-08 19:08:00.564 MSK [2944]LOG: License checker startedDec 08 19:08:00 p620.class.edu bash[2915]: 2024-12-08 19:08:00.575 MSK [2915]LOG: database system is ready to accept connectionsDec 08 19:08:00 p620.class.edu bash[2947]: 2024-12-08 19:08:00.576 MSK [2915]LOG: Start integrity check launcherDec 08 19:08:00 p620.class.edu bash[2947]: 2024-12-08 19:08:00.579 MSK [2947]LOG: Start of integrity checkDec 08 19:08:00 p620.class.edu systemd[1]: Started Runners PostgreSQL service.