备份和恢复数据
PostgreSQL 机制可用于 PostgreSQL 数据库备份和数据恢复。您可以将该机制应用于卡巴斯基容器安全中的 PostgreSQL 数据库或者您可能拥有的现有 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 实用程序。它可以从 pg_dump 实用程序创建的压缩包中恢复 PostgreSQL 数据库。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]