首页 > 数据库 >Postgresql14数据库一键物理备份与恢复脚本

Postgresql14数据库一键物理备份与恢复脚本

时间:2024-10-09 18:24:42浏览次数:1  
标签:PostgreSQL backup Postgresql14 备份 一键 echo PG BACKUP DIR

热衷于分享各种干货知识,大家有想看或者想学的可以评论区留言,秉承着“开源知识来源于互联网,回归于互联网”的理念,分享一些日常工作中能用到或者比较重要的内容,希望大家能够喜欢,不足之处请大家多提宝贵地意见,我们一起提升,守住自己的饭碗。

一、备份脚本

#!/bin/bash
# 定义一些变量
BACKUP_DIR="/pgdb/pg_backup"
PG_USER="postgres"
PG_HOST="localhost"
PG_PORT="5785"
BACKUP_LABEL="base_backup"
DATE=$(date +"%Y%m%d%H%M%S")
LOG_FILE="${BACKUP_DIR}/pg_backup_${DATE}.log"
# 检查并创建备份目录
if[!-d "$BACKUP_DIR"];then
    mkdir -p "$BACKUP_DIR"
fi
# 执行 pg_basebackup 命令
echo "Starting PostgreSQL physical backup..."
/pgdb/pgsql/bin/pg_basebackup -h $PG_HOST -p $PG_PORT -U $PG_USER -D "${BACKUP_DIR}/${BACKUP_LABEL}_${DATE}"-F tar -v -P >>"$LOG_FILE"2>&1
# 检查备份是否成功
if[ $?-eq 0];then
    echo "Backup completed successfully."
    echo "Backup is available at: ${BACKUP_DIR}/${BACKUP_LABEL}_${DATE}"
else
    echo "Backup failed. Check the log file for details: $LOG_FILE"
exit1
fi
echo "Backup operation finished. Log file: $LOG_FILE"

二、 恢复脚本

#!/bin/bash
# Define variables
BACKUP_DIR="/pgdb/pg_backup"
RESTORE_LABEL="base_backup"
PG_DATA_DIR="/pgdb/data"
DATE=$(date +"%Y%m%d%H%M%S")
LOG_FILE="${BACKUP_DIR}/pg_restore_${DATE}.log"
# Check if backup directory exists
if[!-d "$BACKUP_DIR"];then
    echo "Backup directory does not exist: $BACKUP_DIR"
exit1
fi
# Stop PostgreSQL service
echo "Stopping PostgreSQL service..."
systemctl stop postgres.service
# Ensure you're in a directory that postgres can access
cd /tmp
# Ensure PostgreSQL is stopped
echo "Checking if PostgreSQL server has stopped..."
sudo -u postgres /pgdb/pgsql/bin/pg_ctl status -D $PG_DATA_DIR | grep -q "server is running"
if[ $?-eq 0];then
    echo "PostgreSQL server did not stop successfully. Exiting."
exit1
fi

# Check if the data directory is empty or improperly initialized

if["$(ls -A $PG_DATA_DIR)"];then
    echo "Clearing existing data directory: $PG_DATA_DIR"
    rm -rf $PG_DATA_DIR/*
    if [ $? -ne 0 ]; then
        echo "Failed to clear data directory. Check permissions and try again."
        exit 1
    fi
else
    echo "Data directory is already empty or incorrectly initialized."
fi

# Restore data

LATEST_BACKUP=$(find $BACKUP_DIR -name "${RESTORE_LABEL}_*.tar" | sort | tail -n 1)
if [ -z "$LATEST_BACKUP" ]; then
    echo "No backup files found in $BACKUP_DIR. Please ensure backups are available."
    exit 1
fi
echo "Restoring from backup: $LATEST_BACKUP"
tar -xf "$LATEST_BACKUP" -C $PG_DATA_DIR >> "$LOG_FILE" 2>&1

# Check if restore was successful

if [ $? -eq 0 ]; then
    echo "Backup restored successfully from: $LATEST_BACKUP"
else
    echo "Failed to restore backup. See log for details: $LOG_FILE"
    exit 1
fi

# Adjust permissions on data directory

echo "Adjusting permissions on data directory..."
chown -R postgres:postgres $PG_DATA_DIR
chmod 700 $PG_DATA_DIR

# Start PostgreSQL service

echo "Starting PostgreSQL service..."
systemctl start postgres.service
if systemctl is-active --quiet postgres.service; then
    echo "PostgreSQL service successfully restarted."
else
    echo "PostgreSQL service failed to start. Check service status for issues."
    exit 1
fi
echo "Restore operation completed. Log file: $LOG_FILE"

三、说明 

脚本赋予执行权限,一键执行即可。大家可以根据自己的实际情况修改备份和恢复脚本的内容,恢复脚本需谨慎使用。

 

标签:PostgreSQL,backup,Postgresql14,备份,一键,echo,PG,BACKUP,DIR
From: https://www.cnblogs.com/cheyunhua/p/18454838

相关文章

  • AI又进化了,一键生成设计稿太爽了!
    2024年,你一定要学会用AI设计**。**1年时间,AI证明了它的超强设计能力:不用PS,一键完成抠图、扩图;不用绘图,几个字描述,轻松生成****矢量图标、3D插画****;不用付费,分分钟生成虚拟人物图像,不用担心版权;不用3D软件,几个关键词咒语把线稿转3D;……用好AIGC,等于你多了20个“隐形......
  • PostgreSQL 使用pg_dump备份和恢复数据库
    PostgreSQL使用pg_dump备份和恢复数据库pg_dump是PostgreSQL提供的用于备份数据库的工具,它可以将数据库内容导出为不同格式的文件,以便之后进行还原或迁移。下面是关于pg_dump和pg_restore的详细使用说明。一、pg_dump基本语法pg_dump[选项]-d<数据库名>-f<备......
  • 如何轻松备份和恢复realme?
    realme成立于2018年,秉承“敢于超越他人”的品牌理念,强调年轻人的勇气和创新精神,致力于为全球年轻用户提供兼具卓越性能和潮流设计的高品质手机。那么我们如何备份和恢复realme手机呢?在这篇文章中,我们将介绍五种不同的方法来实现realme的备份和恢复。 第1部分.如何通过Co......
  • HarmonyOS NEXT模拟登录页,华为账号一键登录
    一、介绍基于鸿蒙Next模拟账号一键登录,免去账号注册环节二、场景需求1. 用户场景新用户: 需要快速注册并登录,以体验华为的服务。老用户: 希望快速登录,不用每次输入用户名和密码。2. 界面设计Logo和标题: 页面顶部展示华为的Logo及"一键登录"或"华为账号登录"的标题。3.......
  • LNMP一键安装
    PHP环境快捷搭建工具: https://lnmp.org/ [安装]wgethttps://soft.lnmp.com/lnmp/lnmp2.1.tar.gz-Olnmp2.1.tar.gz&&tarzxflnmp2.1.tar.gz&&cdlnmp2.1&&./install.shlnmp自动进行安装,根据计算机的性能与带宽情况,预计再半个小时左右即可全部完成nginx+php+m......
  • 告别音乐小白!字节跳动AI音乐创作工具,让你一键变作曲家!
    还在羡慕别人能创作动听的音乐?五音不全的你,也梦想着谱写属于自己的乐章?现在,机会来了!字节跳动推出了一款AI音乐创作工具——抖音推出的海绵音乐,它能让你轻松一键创作音乐,即使是“音乐小白”也能化身作曲家!告别复杂操作,一键生成你的专属乐曲字节海绵音乐最大的亮点在于其便捷......
  • 笑傲江湖单机版安装教程+虚拟机一键端+GM+10职业单人副本
    今天给大家带来一款单机游戏的架设:笑傲江湖10职业单机版单人副本坐骑门徒新时装商完整任务。另外:本人承接各种游戏架设(单机+联网)本人为了学习和研究软件内含的设计思想和原理,带了架设教程仅供娱乐。教程是本人亲自搭建成功的,绝对是完整可运行的,踩过的坑都给你们填上了。如果你......
  • MySQL数据库备份与恢复
    MySQL数据库的备份与恢复是数据库管理中至关重要的一部分。无论是在Windows还是Linux系统上,掌握这些技能都能有效保护数据,防止数据丢失。本文将详细介绍MySQL数据库的备份与恢复方法,包括常用工具和步骤。一、备份MySQL数据库1.使用 mysqldump 工具mysqldump是......
  • 最近雷军AI配音火出圈,一键免费生成!保姆级教程分享!
    这两天被雷军这个AI配音刷屏了,在某音,B站上大火!特别是一些游戏解说都用他的AI配音,随便发一个视频播放量是杠杠的!也算是一个热点了,这热点可以蹭一波。那这个AI配音到底是怎么做出来的呢?其实非常简单,互联网就是信息差,谁先掌握了第一手信息,谁就可以吃肉!几天就给大家讲下如何......
  • 最近雷军AI配音火出圈,一键免费生成!保姆级教程分享!
    这两天被雷军这个AI配音刷屏了,在某音,B站上大火!特别是一些游戏解说都用他的AI配音,随便发一个视频播放量是杠杠的!也算是一个热点了,这热点可以蹭一波。那这个AI配音到底是怎么做出来的呢?其实非常简单,互联网就是信息差,谁先掌握了第一手信息,谁就可以吃肉!几天就给大家讲下如何......