Skip to content

Commit

Permalink
Add backrest env support for stanza creation
Browse files Browse the repository at this point in the history
  • Loading branch information
jasonodonnell committed Nov 21, 2018
1 parent 948ad2e commit ff79342
Show file tree
Hide file tree
Showing 11 changed files with 457 additions and 13 deletions.
28 changes: 22 additions & 6 deletions bin/postgres/pgbackrest.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,12 @@ then
fi

if [[ -f ${BACKREST_CONF?} ]]
then
cp ${BACKREST_CONF?} /tmp/pgbackrest.conf
sed -i -e "s|HOSTNAME|${NAMESPACE?}|" /tmp/pgbackrest.conf
fi

if [[ -f ${BACKREST_CONF?} ]] || [[ -v PGBACKREST_REPO_PATH ]]
then
# Spooling directories for async archiving
if [[ ! -d /pgdata/${NAMESPACE?}-spool ]]
Expand All @@ -28,13 +34,23 @@ then
mkdir -p /backrestrepo/${NAMESPACE?}-backups
fi

cp ${BACKREST_CONF?} /tmp/pgbackrest.conf
sed -i -e "s|HOSTNAME|${NAMESPACE?}|" /tmp/pgbackrest.conf
if [[ -f ${BACKREST_CONF?} ]]
then
stanza_exists=$(pgbackrest info | grep 'No stanzas exist')
if [[ $? -eq 0 ]]
then
echo_info "pgBackRest: Creating stanza.."
pgbackrest --stanza=db stanza-create --no-online
fi
fi

stanza_exists=$(pgbackrest info | grep 'No stanzas exist')
if [[ $? -eq 0 ]]
if [[ -v PGBACKREST_REPO_PATH ]]
then
echo_info "pgBackRest: Creating stanza.."
pgbackrest --stanza=db stanza-create --no-online
stanza_exists=$(pgbackrest info | grep 'missing stanza path')
if [[ $? -eq 0 ]]
then
echo_info "pgBackRest: Creating stanza.."
pgbackrest --stanza=db stanza-create --no-online
fi
fi
fi
15 changes: 8 additions & 7 deletions bin/postgres/start.sh
Original file line number Diff line number Diff line change
Expand Up @@ -81,19 +81,19 @@ function role_discovery() {
if [ $ordinal -eq 0 ]; then
pgc label --overwrite=true pod $HOSTNAME name=$PG_PRIMARY_HOST
rc=$?;
if [[ $rc != 0 ]]; then
if [[ $rc != 0 ]]; then
echo_err "Unable to set mode on pod, label command failed."
exit $rc;
exit $rc;
fi
echo_info "Setting PG_MODE to primary."
export PG_MODE=primary
else
echo_info "Setting PG_MODE to replica."
pgc label --overwrite=true pod $HOSTNAME name=$PG_REPLICA_HOST
rc=$?;
if [[ $rc != 0 ]]; then
if [[ $rc != 0 ]]; then
echo_err "Unable to set mode on pod, label command failed."
exit $rc;
exit $rc;
fi
export PG_MODE=replica
fi
Expand All @@ -111,7 +111,7 @@ function initdb_logic() {
if [ $XLOGDIR = "true" ]; then
echo_info "XLOGDIR found."
mkdir $PGWAL

if [ -d "$PGWAL" ]; then
cmd+=" -X "$PGWAL
else
Expand Down Expand Up @@ -207,7 +207,8 @@ function fill_conf_file() {
echo_info "Setting ARCHIVE_TIMEOUT to ${ARCHIVE_TIMEOUT:-0}."
fi

if [ -f /pgconf/pgbackrest.conf ]; then
if [[ -f /pgconf/pgbackrest.conf ]] || [[ -v PGBACKREST_REPO_PATH ]]
then
echo_info "Setting pgbackrest archive command.."
ARCHIVE_MODE=on
cat /opt/cpm/conf/backrest-archive-command >> /tmp/postgresql.conf
Expand Down Expand Up @@ -319,7 +320,7 @@ function initialize_primary() {
sleep 2
done


echo_info "Loading setup.sql.." >> /tmp/start-db.log
cp /opt/cpm/bin/setup.sql /tmp
if [ -f /pgconf/setup.sql ]; then
Expand Down
7 changes: 7 additions & 0 deletions examples/docker/backrest/env/cleanup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/bin/bash

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

docker stop backrest
docker rm backrest
docker volume rm br-pgdata br-backups
28 changes: 28 additions & 0 deletions examples/docker/backrest/env/run.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#!/bin/bash

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

$DIR/cleanup.sh

docker run \
--publish 5432:5432 \
--volume br-pgdata:/pgdata \
--volume br-backups:/backrestrepo \
--env PG_MODE=primary \
--env PG_USER=testuser \
--env PG_PASSWORD=password \
--env PG_DATABASE=userdb \
--env PG_PRIMARY_USER=primaryuser \
--env PG_PRIMARY_PORT=5432 \
--env PG_PRIMARY_PASSWORD=password \
--env PG_ROOT_PASSWORD=password \
--env PGHOST=/tmp \
--env PGBACKREST_STANZA=db \
--env PGBACKREST_REPO_PATH=/backrestrepo/backrest-backups \
--env PGBACKREST_DB_PATH=/pgdata/backrest \
--env PGBACKREST_LOG_PATH=/tmp \
--env ARCHIVE_MODE=on \
--env ARCHIVE_TIMEOUT=60 \
--name=backrest \
--hostname=backrest \
--detach ${CCP_IMAGE_PREFIX?}/crunchy-postgres:${CCP_IMAGE_TAG?}
43 changes: 43 additions & 0 deletions examples/kube/backrest/backup-env/backrest-pv-nfs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
{
"apiVersion": "v1",
"kind": "PersistentVolume",
"metadata": {
"name": "$CCP_NAMESPACE-br-pgdata",
"labels": {
"name": "$CCP_NAMESPACE-br-pgdata"
}
},
"spec": {
"capacity": {
"storage": "$CCP_STORAGE_CAPACITY"
},
"accessModes": ["$CCP_STORAGE_MODE"],
"nfs": {
"path": "$CCP_STORAGE_PATH/$CCP_NAMESPACE-backrest",
"server": "$CCP_NFS_IP"
},
"persistentVolumeReclaimPolicy": "Retain"
}
}

{
"apiVersion": "v1",
"kind": "PersistentVolume",
"metadata": {
"name": "$CCP_NAMESPACE-br-backups",
"labels": {
"name": "$CCP_NAMESPACE-br-backups"
}
},
"spec": {
"capacity": {
"storage": "$CCP_STORAGE_CAPACITY"
},
"accessModes": ["$CCP_STORAGE_MODE"],
"nfs": {
"path": "$CCP_STORAGE_PATH/$CCP_NAMESPACE-backrest",
"server": "$CCP_NFS_IP"
},
"persistentVolumeReclaimPolicy": "Retain"
}
}
41 changes: 41 additions & 0 deletions examples/kube/backrest/backup-env/backrest-pv.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
"apiVersion": "v1",
"kind": "PersistentVolume",
"metadata": {
"name": "$CCP_NAMESPACE-br-pgdata",
"labels": {
"name": "$CCP_NAMESPACE-br-pgdata"
}
},
"spec": {
"capacity": {
"storage": "$CCP_STORAGE_CAPACITY"
},
"accessModes": ["$CCP_STORAGE_MODE"],
"hostPath": {
"path": "$CCP_STORAGE_PATH/$CCP_NAMESPACE-backrest"
},
"persistentVolumeReclaimPolicy": "Retain"
}
}

{
"apiVersion": "v1",
"kind": "PersistentVolume",
"metadata": {
"name": "$CCP_NAMESPACE-br-backups",
"labels": {
"name": "$CCP_NAMESPACE-br-backups"
}
},
"spec": {
"capacity": {
"storage": "$CCP_STORAGE_CAPACITY"
},
"accessModes": ["$CCP_STORAGE_MODE"],
"hostPath": {
"path": "$CCP_STORAGE_PATH/$CCP_NAMESPACE-backrest"
},
"persistentVolumeReclaimPolicy": "Retain"
}
}
37 changes: 37 additions & 0 deletions examples/kube/backrest/backup-env/backrest-pvc-sc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{
"kind": "PersistentVolumeClaim",
"apiVersion": "v1",
"metadata": {
"name": "br-pgdata"
},
"spec": {
"accessModes": [
"$CCP_STORAGE_MODE"
],
"storageClassName": "$CCP_STORAGE_CLASS",
"resources": {
"requests": {
"storage": "$CCP_STORAGE_CAPACITY"
}
}
}
}

{
"kind": "PersistentVolumeClaim",
"apiVersion": "v1",
"metadata": {
"name": "br-backups"
},
"spec": {
"accessModes": [
"$CCP_STORAGE_MODE"
],
"storageClassName": "$CCP_STORAGE_CLASS",
"resources": {
"requests": {
"storage": "$CCP_STORAGE_CAPACITY"
}
}
}
}
45 changes: 45 additions & 0 deletions examples/kube/backrest/backup-env/backrest-pvc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{
"kind": "PersistentVolumeClaim",
"apiVersion": "v1",
"metadata": {
"name": "br-pgdata"
},
"spec": {
"selector": {
"matchLabels": {
"name": "$CCP_NAMESPACE-br-pgdata"
}
},
"accessModes": [
"$CCP_STORAGE_MODE"
],
"resources": {
"requests": {
"storage": "$CCP_STORAGE_CAPACITY"
}
}
}
}

{
"kind": "PersistentVolumeClaim",
"apiVersion": "v1",
"metadata": {
"name": "br-backups"
},
"spec": {
"selector": {
"matchLabels": {
"name": "$CCP_NAMESPACE-br-backups"
}
},
"accessModes": [
"$CCP_STORAGE_MODE"
],
"resources": {
"requests": {
"storage": "$CCP_STORAGE_CAPACITY"
}
}
}
}
Loading

0 comments on commit ff79342

Please sign in to comment.