备份命令
参考链接:https://www.jb51.net/article/205924.htm
为了避免操作数据库的风险 因此计划每天对postgresql 数据库 进行定时备份
1.服务器地址:
备份服务器地址 10.10.10.101(虚构)
postgresql 数据库所在的服务器地址 10.10.10.100(虚构)
因为我有单独的备份数据库 不在同一个服务器上操作 首先要保证这两个服务器的网络是通的
操作步骤如下:
创建备份脚本存放路径:
mkdir -p /u01/db-bak/2/bak-file/all
我把shell脚本存放在/u01/db-bak/2 备份后的pgsql.backup 放到 /u01/db-bak/2/bak-file/all 文件中
2.准备备份shell脚本
进入/u01/db-bak/2
创建备份shell脚本
vi pgsql-all-backup.sh
#!/bin/bash
echo "开始执行 PostgreSql 数据库postgres 的备份!"
echo "backup ing -------------------"
nowtime=$(date +%F+%T)
export PGPASSWORD=123456
echo "时间:" $nowtime
set timeout 500
/usr/local/postgresql/bin/pg_dump --file "/u01/db-bak/2/bak-file/all/pgsql-all-"$nowtime".backup" --host "192.168.1.xxx" --port "5432" --username "postgres" "postgres" --verbose --role "postgres" --format=c --blobs --encoding "UTF8"
echo "数据库 postgres 备份结束!"
exit;
测试:bash pgsql-all-backup.sh
删除脚本
cd /u01/db-bak/2
vi delete-pgbak.sh
#!/bin/bash
echo "删除 8 天前的 数据库备份文件!"
find /u01/db-bak/2/bak-file/all/ -name "pgsql-all*" -mtime +7 -exec rm -rf {} \;
set timeout 1000
echo " 8 天前的数据库备份文件删除完毕!"
定时任务
命令:crontab -e
每天23点进行数据库备份脚本 每天23点半运行删除脚本:
30 23 * * * /u01/db-bak/2/delete-pgbak.sh
0 23 * * * /u01/db-bak/2/pgsql-all-backup.sh
查看定时任务:crontab -l
恢复命令
参考链接:https://www.cnblogs.com/ComputerVip/p/12679517.html
1、在linux中打开终端,切换到postgres用户,命令是
su postgres (创建postgresql数据库时创建的用户),
然后cd到你安装的postgresql的bin目录下,我的安装在/usr下, 命令是
cd /usr/local/postgresql/bin/
首先要先确保有数据库,执行恢复命令:
./pg_restore -h 192.168.1.xxx -p 5432 -U postgres -W -d hdsa -v "/u01/db-bak/2/bak-file/all/pgsql-all-2021-09-12+20:52:17.backup"
恢复成功