Kaspersky Security для контейнеров

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

Для резервного копирования базы данных PostgreSQL и восстановления данных можно применять механизмы PostgreSQL. Вы можете использовать их для базы данных PostgreSQL в составе Kaspersky Security для контейнеров или для уже существующей у вас базы данных PostgreSQL.

Создание резервных копий базы данных осуществляется с помощью утилиты pg_dump. Резервная копия включает в себя все основные параметры и объекты базы данных PostgreSQL, даже если база параллельно используется. Имея резервную копию, можно восстановить работу базы данных в кратчайшие сроки.

В случае отсутствия резервной копии сбой может привести к безвозвратной потере информации, которая хранится в базе данных PostgreSQL.

Утилита pg_dump позволяет выгрузить базу данных PostgreSQL в виде скрипта или в одном из архивных форматов, например .TAR.

Пример использования утилиты pg_dump

#!/bin/bash

# Set variables

postgres_podname="kcs-postgres-0"

namespace="kcs"

POSTGRES_USER="pguser"

POSTGRES_DATABASE="api"

date=$(date +"%Y-%m-%dT%H:%M:%S"-"backup")

dir_main="$namespace-$date"

dir_db=$dir_main/db

# Start script

mkdir -p $dir_main $dir_db

# Get postgres dump

kubectl exec -it $postgres_podname -n $namespace -- bash -c "pg_dump -U ${POSTGRES_USER} -F c ${POSTGRES_DATABASE} > /tmp/pg_dump_backup.sqlc"

kubectl cp "$namespace/$postgres_podname:/tmp/pg_dump_backup.sqlc" pg_dump_backup.sqlc

mv pg_dump_backup.sqlc $dir_db/

kubectl exec -it $postgres_podname -n $namespace -- bash -c 'rm -rf /tmp/pg_dump_backup.sqlc'

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

Пример использования утилиты pg_restore

#!/bin/bash

# Set variables

postgres_podname="kcs-postgres-0"

namespace="kcs"

POSTGRES_USER="pguser"

POSTGRES_DATABASE="api"

dir_db_backup="~/pg_dump_backup.sqlc"

# Postgres restore

kubectl cp $dir_db_backup "$namespace/$postgres_podname:/tmp/pg_dump_backup.sqlc"

kubectl exec -it $postgres_podname -n $namespace -- bash -c "pg_restore -U ${POSTGRES_USER} -d ${POSTGRES_DATABASE} -c /tmp/pg_dump_backup.sqlc"

kubectl exec -it $postgres_podname -n $namespace -- bash -c 'rm -rf /tmp/pg_dump_backup.sqlc'

В начало
[Topic 265971]