Резервное копирование данных
Для резервного копирования сервера 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.