====== Jobs ======
[[https://www.pgadmin.org/docs/pgadmin4/development/pgagent_install.html]] {{it:postgresql:jobs:installing_pgagent.mht|mht}} - Installing pgAgent\\
[[https://gist.github.com/peterneave/83cefce2a081add244ad7dc1c53bc0c3]] {{it:postgresql:jobs:install_pgagent_on_postgres_10_debian_linux_.mht|mht}} - Install pgAgent on Postgres 10 (Debian Linux)\\
1. Установить pgagent
sudo apt install pgagent
# Create .pgpass file.
sudo su - postgres
echo localhost:5432:*:pgagent:securepassword >> ~/.pgpass
chmod 600 ~/.pgpass
chown postgres:postgres /var/lib/postgresql/.pgpass
2. Setup directory for logging
mkdir /var/log/pgagent
chown -R postgres:postgres /var/log/pgagent
chmod g+w /var/log/pgagent
3. Create a config file
DBNAME=postgres
DBUSER=pgagent
DBHOST=localhost
DBPORT=5432
# ERROR=0, WARNING=1, DEBUG=2
LOGLEVEL=1
LOGFILE="/var/log/pgagent/pgagent.log"
4. Create systemd service
[Unit]
Description=PgAgent for PostgreSQL
After=syslog.target
After=network.target
[Service]
Type=forking
User=postgres
Group=postgres
# Location of the configuration file
EnvironmentFile=/etc/pgagent.conf
# Where to send early-startup messages from the server (before the logging
# options of pgagent.conf take effect)
# This is normally controlled by the global default set by systemd
# StandardOutput=syslog
# Disable OOM kill on the postmaster
OOMScoreAdjust=-1000
ExecStart=/usr/bin/pgagent -s ${LOGFILE} -l ${LOGLEVEL} host=${DBHOST} dbname=${DBNAME} user=${DBUSER} port=${DBPORT}
KillMode=mixed
KillSignal=SIGINT
Restart=on-failure
# Give a reasonable amount of time for the server to start up/shut down
TimeoutSec=300
[Install]
WantedBy=multi-user.target
5. Start Service
sudo -i
systemctl daemon-reload
systemctl disable pgagent
systemctl enable pgagent
systemctl start pgagent
6. Enable auto rotation of logs
/var/log/pgagent/*.log {
weekly
rotate 10
copytruncate
delaycompress
compress
notifempty
missingok
su root root
}
logrotate -f /etc/logrotate.d/pgagent
7. В базе postgres
CREATE EXTENSION pgagent;
CREATE USER "pgagent" WITH
LOGIN
NOSUPERUSER
INHERIT
NOCREATEDB
NOCREATEROLE
NOREPLICATION
encrypted password 'securepassword';
GRANT USAGE ON SCHEMA pgagent TO pgagent;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA pgagent TO pgagent;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA pgagent TO pgagent;
8. В целевой базе
CREATE USER "pgagent" WITH
LOGIN
NOSUPERUSER
INHERIT
NOCREATEDB
NOCREATEROLE
NOREPLICATION
encrypted password 'securepassword';
GRANT USAGE ON SCHEMA TO pgagent;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA TO pgagent;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA TO pgagent;