首页 > 数据库 >PostgreSQL备份和恢复(Docker安装)

PostgreSQL备份和恢复(Docker安装)

时间:2023-10-07 18:25:22浏览次数:34  
标签:PostgreSQL NAME tar 备份 DB postgresql Docker backup

目录

一.准备备份脚本并拷贝进容器

vi backup.sh
#内容如下
#!/bin/bash

# PostgreSQL database credentials
DB_NAME="<要备份的数据库名>"
DB_USER="<具有该数据库导出权限的用户>"
DB_PASS="<用户密码>"
DB_HOST="localhost"
DB_PORT="5432"

# Backup directory
BACKUP_DIR="/var/lib/postgresql/backup"

# Export the PostgreSQL password
export PGPASSWORD=$DB_PASS

# Check if the backup file already exists and delete it if it does
if [[ -f "$BACKUP_DIR/$DB_NAME.tar" ]]; then
  rm "$BACKUP_DIR/$DB_NAME.tar"
fi

# Create a backup file
pg_dump -h $DB_HOST -p $DB_PORT -U $DB_USER -F t -b -f "$BACKUP_DIR/$DB_NAME.tar" $DB_NAME

# Unset the PostgreSQL password
unset PGPASSWORD

保存后docker cp到容器里的某一个文件夹内,这边选择的是/var/lib/postgresql

docker cp backup.sh <容器名>:/var/lib/postgresql

二,在宿主机写定时任务去执行容器内的备份脚本

#!/bin/bash

DB_NAME="<要备份的数据库名>"
remove_dir="/home/ngtl/backup/pgsql"
DATE=$(date +"%Y-%m-%d_%H-%M-%S")
#进入容器内部执行dump命令
docker exec -u 0 <容器名>  bash -c "su - postgres -c 'cd /var/lib/postgresql; ./backup.sh'"

#拷贝备份文件
docker cp <容器名>:/var/lib/postgresql/backup/$DB_NAME.tar ./

# 使用时间戳重命名
mv "./$DB_NAME.tar" "./$DB_NAME_$DATE.tar"

# 只保留四天内的
find . -type f -name "$DB_NAME_*.tar" -mtime +4 -exec rm {} \;

#scp到其他服器,移动前清空目标路径下的所以backup文件,与宿主机一致
ssh root@<备份机IP> "rm -f $remove_dir/$DB_NAME_*.tar"
scp ./gitea_*.tar root@<备份机IP>:/home/ngtl/backup/pgsql/
crontab -e
#添加如下内容
0 1 * * *  <宿主机脚本地址>/backup.sh >> <宿主机脚本地址>/backup.log 2>&1

标签:PostgreSQL,NAME,tar,备份,DB,postgresql,Docker,backup
From: https://www.cnblogs.com/blogof-fusu/p/17747130.html

相关文章

  • docker部署nacos集群
    环境准备系统ip 插件centos710.190.107.191docker、nginxcentos710.190.107.192docker、nacoscentos710.190.107.193docker、nacoscentos710.190.107.194docker、nacos  1、提前准备MySQL 创建nacos库并执行sql文件dockerrun-id-p......
  • virtualbox安装docker
    Vagrant安装教程Vagrant下载进入下载页面下载对应版本:https://www.vagrantup.com/downloads,外网下载可能比较慢,下载后会得到一个安装程序vagrant_2.3.4_windows_amd64.msi。Vagrant软件安装一直下一步就行VirtualBox安装教程VirtualBox下载官方下载地址:https://www.......
  • docker制作springboot镜像
    以下步骤在具有Docker环境的Linux机器上操作。把springboot-1.0.0.jar放到/usr/local/springboot目录下,并在该目录下创建Dockerfile文件,内容为:FROMopenjdk:8-jdk-alpineADDspringboot-1.0.0.jar/usr/local/springboot.jarENTRYPOINT["java","-jar","/usr/local/spring......
  • docker 安装 neo4j
    1.安装所需的软件包yuminstall-yyum-utilsdevice-mapper-persistent-datalvm22.设置阿里云仓库(国内仓库稳定)yum-config-manager--add-repohttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo3.查看docker容器版本yumlistdocker-ce--showduplicate......
  • 构建自己的docker镜像
    目录前奏基于当前OS创建自己的镜像让Alpine不再是Alpine防走丢前奏rambo@debian:~$cat/etc/issueDebianGNU/Linux12\n\l基于当前OS创建自己的镜像rambo@debian:~$mkdirmyimagerambo@debian:~$sudocp-a/usr/lib/usr/lib32//usr/lib64//usr/bin/myimage......
  • Oracle数据库升级PostgreSQL 后的踩坑记录(二)之date类型处理
    踩坑二:date类型处理背景:因为业务需求,需要整个项目除了适配oracle和mysql后还需要适配PostgreSQL,在此背景下就出现了一系列的问题。接系列一databaseId映射成oracle之后问题又随之而来,由于从oracle数据库的date类型映射成postgreSQL的timestamp字段又出现了一些查询报错的问题,我......
  • docker 学习
    dockereventstate  docker概述 docker安装 docker命令 docker镜像 容器数据卷 dockerfile docker网络原理 IDEA整合docker dockercompose dockerswarm ......
  • PostgreSQL 的模式匹配与正则表达式
    一、PostgreSQL实现模式匹配的方法LIKESIMILARTOPOSIX风格的正则表达式模式匹配函数substring二、LIKE操作符只有在匹配整个字符串时返回真符号描述%任意0个或任意个字符_任意一个字符\%%\__postgres=#select*fromtest_zhengze;id|......
  • WIN11 安装 SQL Server 2019,SQLSERVER2022, MYSQL 8.0 ,Docker,Mongodb失败故障分析
    最近研究数据库性能调优遇到各种数据库各种装不上,不知道熬了多少根软白沙,熬了多少颗张三疯,问了多少AI,查了多少网页,熬了两天,终于搞明白了一件事:那就是WIN11ONARM(因为拿的是MACPROM2做.NET平台开发安装)SQLSERVER2019,SQLSERVER2022,MYSQL8.0,Docker,Mongodb失败故障分析,最终极......
  • docker笔记
    假设容器id为3a9ac4d50f7d开机时启动dockersudosystemctlstartdocker查看docker情况systemctlstatusdocker重启daemonsystemctldaemon-reload容器配置存放路径/var/lib/docker/containers/https://blog.csdn.net/sosous/article/details/122758984dockerstart容......