r/wal-g-pg: Schedule weekly delete jobs

WAL-G slows down significantly when too many backups are kept.  We need
to periodically clean up old backups to maintain a reasonable level of
performance, and also keep from wasting space with useless old backups.
dynamic-inventory
Dustin 2024-11-05 19:28:57 -06:00
parent eaf9cbef9a
commit 8b9cf1985a
6 changed files with 68 additions and 0 deletions

View File

@ -1,2 +1,7 @@
wal_g_pg_backup_timer_schedule: >- wal_g_pg_backup_timer_schedule: >-
*-*-* 03:56 *-*-* 03:56
wal_g_pg_delete_timer_schedule: >-
weekly
wal_g_pg_delete_args: >-
retain FIND_FULL 7

View File

@ -6,3 +6,8 @@
systemd: systemd:
name: wal-g-backup.timer name: wal-g-backup.timer
state: restarted state: restarted
- name: restart wal-g delete timer
systemd:
name: wal-g-delete.timer
state: restarted

View File

@ -1,2 +1,3 @@
dependencies: dependencies:
- dch-yum - dch-yum
- systemd-base

View File

@ -55,6 +55,30 @@
tags: tags:
- systemd - systemd
- name: ensure wal-g delete timer is installed
template:
src: wal-g-delete.timer.j2
dest: /etc/systemd/system/wal-g-delete.timer
owner: root
group: root
mode: u=rw,go=r
notify:
- reload systemd
- restart wal-g delete timer
tags:
- systemd
- name: ensure wal-g delete service is installed
template:
src: wal-g-delete.service.j2
dest: /etc/systemd/system/wal-g-delete.service
owner: root
group: root
mode: u=rw,go=r
notify:
- reload systemd
tags:
- systemd
- name: ensure wal-g backup timer is enabled - name: ensure wal-g backup timer is enabled
systemd: systemd:
name: wal-g-backup.timer name: wal-g-backup.timer
@ -62,6 +86,13 @@
tags: tags:
- service - service
- name: ensure wal-g delete timer is enabled
systemd:
name: wal-g-delete.timer
enabled: true
tags:
- service
- name: flush handlers - name: flush handlers
meta: flush_handlers meta: flush_handlers
@ -71,3 +102,10 @@
state: started state: started
tags: tags:
- service - service
- name: ensure wal-g delete timer is running
systemd:
name: wal-g-delete.timer
state: started
tags:
- service

View File

@ -0,0 +1,10 @@
[Unit]
Description=PostgreSQL Backup delete with WAL-G
Wants=network-online.target
After=network-online.target
[Service]
Type=oneshot
Environment=PGDATA=/var/lib/pgsql/data
ExecStart=/usr/bin/wal-g-pg delete --config /etc/postgresql/wal-g.yml {{ wal_g_pg_delete_args }} --confirm
User=postgres

View File

@ -0,0 +1,9 @@
[Unit]
Description=Periodic PostgreSQL backup delete with WAL-G
[Timer]
OnCalendar={{ wal_g_pg_delete_timer_schedule }}
Persistent=yes
[Install]
WantedBy=timers.target