From 33d0c69450127732c7105145b5e587811ffd644b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Isma=C3=ABl=20Bouya?= Date: Tue, 28 May 2019 10:32:51 +0200 Subject: [PATCH] Pause replication before the postgresql backup --- modules/profile/manifests/postgresql/backup_dump.pp | 9 +++++++-- .../profile/templates/postgresql/backup_psql.sh.erb | 13 +++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 modules/profile/templates/postgresql/backup_psql.sh.erb diff --git a/modules/profile/manifests/postgresql/backup_dump.pp b/modules/profile/manifests/postgresql/backup_dump.pp index 7578027..cae20f7 100644 --- a/modules/profile/manifests/postgresql/backup_dump.pp +++ b/modules/profile/manifests/postgresql/backup_dump.pp @@ -30,13 +30,18 @@ define profile::postgresql::backup_dump ( $pg_port_arg = "" } + file { "/usr/local/sbin/backup_psql_$pg_host.sh": + mode => "0755", + content => template("profile/postgresql/backup_psql.sh.erb"), + } + if ($pg_host == "eldiron.immae.eu") { cron::job::multiple { "backup_psql_$pg_host": ensure => "present", require => [File[$pg_backup_path], File[$pg_path]], jobs => [ { - command => "/usr/bin/pg_dumpall -h $pg_path$pg_port_arg -f $pg_backup_path/\$(date -Iseconds).sql", + command => "/usr/local/sbin/backup_psql_$pg_host.sh", user => $pg_user, hour => "22,4,10,16", minute => 0, @@ -57,7 +62,7 @@ define profile::postgresql::backup_dump ( require => [File[$pg_backup_path], File[$pg_path]], jobs => [ { - command => "/usr/bin/pg_dumpall -h $pg_path$pg_port_arg -f $pg_backup_path/\$(date -Iseconds).sql", + command => "/usr/local/sbin/backup_psql_$pg_host.sh", user => $pg_user, hour => "22,4,10,16", minute => 0, diff --git a/modules/profile/templates/postgresql/backup_psql.sh.erb b/modules/profile/templates/postgresql/backup_psql.sh.erb new file mode 100644 index 0000000..cf353b0 --- /dev/null +++ b/modules/profile/templates/postgresql/backup_psql.sh.erb @@ -0,0 +1,13 @@ +#!/bin/bash + +set -euo pipefail + +resume_replication() { + /usr/bin/psql -h <%= @pg_path %><%= @pg_port_arg %> -c "SELECT pg_wal_replay_resume();" >/dev/null || echo "impossible to resume replication" +} + +trap resume_replication EXIT + +/usr/bin/psql -h <%= @pg_path %><%= @pg_port_arg %> -c "SELECT pg_wal_replay_pause();" >/dev/null || (echo "impossible to pause replication" && false) + +/usr/bin/pg_dumpall -h <%= @pg_path %><%= @pg_port_arg %> -f <%= @pg_backup_path %>/$(date -Iseconds).sql -- 2.41.0