该脚本实现备份docker中的postgresql数据,并且把备份文件拷贝到宿主机
配合linux定时任务,可以实现定时备份
#!/bin/bash
echo "开始执行 PostgreSql 数据库thingsboard的备份!"
echo "backup ing -------------------"
nowtime=$(date +%F)
PGPASSWORD=postgres
# 文件名称
FILENAME=thingsboard_$nowtime.backup
#这里面的postgres12是容器名称
docker exec -i postgres12 /bin/bash -c 'PGPASSWORD='$PGPASSWORD' /usr/bin/pg_dump -Fc -h localhost -p 5432 -U postgres thingsboard > /home/'$FILENAM
E''
echo "backup end -------------------"
echo "生成文件 $FILENAME"
echo "从docker容器复制文件到宿主机"
sudo chmod -R 777 /home/docker-mapping/postgres/backup
docker cp 'postgres12:/home/'$FILENAME'' '/home/docker-mapping/postgres/backup/backup_data/'$FILENAME''
echo "删除docker容器里面的备份文件"
docker exec -i postgres12 /bin/bash -c 'cd /home&&rm '$FILENAME''
echo "数据库备份结束!"
exit;
附上window系统的备份脚本,注意window的脚本后缀是bat,在cmd直接输入xxx.bat就可以了
@ECHO OFF
@setlocal enableextensions
@cd /d "%~dp0"
::数据库密码
set PGPASSWORD=postgres
::pg_dump.exe 所在目录
SET PGPATH=D:\PostgreSQL\13\bin\
::备份文件存放地址
SET SVPATH=E:\viot-backup\
::数据库database
SET PRJDB=thingsboard
::用户
SET DBUSR=postgres
FOR /F "TOKENS=1,2,3 DELIMS=/ " %%i IN ('DATE /T') DO SET d=%%i-%%j-%%k
SET DBDUMP=%PRJDB%_%d%.backup
@ECHO OFF
%PGPATH%pg_dump -Fc -h 127.0.0.1 -U postgres %PRJDB% > %SVPATH%%DBDUMP%
echo Backup Taken Complete %SVPATH%%DBDUMP%
window恢复数据脚本
D:\PostgreSQL\13\bin\pg_restore.exe --host 127.0.0.1 --port 5432 \
--username "postgres" --dbname "pg_bachup_restore" --no-password \
--verbose "backup\thingsboard_2021-11-01.backup"
版权声明:本文为weixin_42939779原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。