Skip to main content

Резервное копирование данных

Для резервного копирования сервера PostgreSQL предлагается использовать следующий сценарий:

#!/bin/bash
#
# Backup a Postgresql database into a daily file.
#
set -e
BACKUP_DIR="<BACKUP_DIR>"
POSTGRES_IMAGE="pythagoras/pgs-postgres"
POSTGRES_VERSION="<VERSION>"
POSTGRES_HOST="<HOST>"
POSTGRES_PORT="<PORT>"
DATABASE=$1
DATABASE_USER_PASS="<PASSWORD>"
DATABASE_USER=keycloak
CURRENT_DATETIME="$(date +%Y_%m_%d_%H%M)"
KEEP_BACKUPS="<RETENTION_TIME>"
FILE=$1_${CURRENT_DATETIME}
OUTPUT_FILE=${BACKUP_DIR}/${FILE}
RC=0
docker run \
--name postgres_backup \
--network pgs-network \
--env PGPASSWORD=${DATABASE_USER_PASS} \
--rm \
-v "${BACKUP_DIR}:${BACKUP_DIR}" \
--entrypoint pg_dump pgs-private-registry:5001/${POSTGRES_IMAGE}:${POSTGRES_VERSION} \
-Fc -h ${POSTGRES_HOST} -p ${POSTGRES_PORT} \
-U ${DATABASE_USER} \
-d ${DATABASE} \
-f ${OUTPUT_FILE}.gz -v || RC=1
# Delete archives older then KEEP_BACKUPS value
find "${BACKUP_DIR}"/ -mtime +"${KEEP_BACKUPS}" -name "*.gz" -delete || RC=1
if [ ${RC} = 0 ]
then
echo "Successfully backup"
else
echo "Backup Failed"
fi

Для выполнения резервного копирования необходимо присвоить значения переменным, перечисленным в таблице. Остальные настройки следует оставить без изменений.

Наименование
переменной
ОписаниеПример
`<BACKUP_DIR>`Путь к месту хранения копий`/opt/Pythagoras/backups/postgres`
`<RETENTION_TIME>`Глубина хранения (вводится без кавычек)целое число, например 7
`<VERSION>`Версия компонента в релизе"12.18-astra"
`<HOST>`Хост подключения"haproxy" — при кластерной установке
"postgres" — при установке без отказоустойчивости
`<PORT>`Порт подключения"5000" — при кластерной установке
"5432" — при установке без отказоустойчивости
`<PASSWORD>`Пароль пользователя Keycloak, переменная KEYCLOAK_POSTGRES_PASSWORD из файла inventory установки Системы хранения данных *—

* — Имя пользователя и пароль идентичны для сервисов Keycloak и Restrictions.