pg数据库每日自动备份—本地及异地

1、前提

  • 异地备份,两台服务器需要开墙,保证备份服务器能够访问数据库服务器的pg数据库;
  • 异地备份的服务器需安装pg数据库,为了使用pg数据库的备份命令pg_dump

也可只安装pg_dump,但是目前没有找到只安装pg_dump的方法

2、自动本分脚本 

自动本分的脚本如下:

#!/bin/bash
# 定义变量
#数据库服务器地址,本地备份则为localhost
DB_HOST="localhost"
#数据库服务器地址pg数据库服务的端口号
DB_PORT="xxxx"
#数据库用户名
DB_USER="xxxx"
#数据库密码
DB_PASS="xxxx"
#数据库名称
DB_NAME="xxxx"
#备份文件的本地存储路径
BACKUP_DIR="xxxx"
#压缩加密密码
ENCRYPTION_PASS="xxxx"
# 日期
#DATE=$(date +"%Y%m%d%H%M%S")
YEAR=$(date +"%Y")
MONTH=$(date +"%m")
DAY=$(date +"%d")
# 备份数据库
/path/pg/bin/pg_dump -h "${DB_HOST}" -U "${DB_USER}" --port="${DB_PORT}" -d "${DB_NAME}" -f "${BACKUP_DIR}/${DB_NAME}-${YEAR}${MONTH}${DAY}.sql"
# 压缩并加密
zip -j -P "${ENCRYPTION_PASS}" "${BACKUP_DIR}/${DB_NAME}-${YEAR}${MONTH}${DAY}.zip" "${BACKUP_DIR}/${DB_NAME}-${YEAR}${MONTH}${DAY}.sql"
#删除中间文件
rm "${BACKUP_DIR}/${DB_NAME}-${YEAR}${MONTH}${DAY}.sql"
  •  DB_HOST 为数据库服务器地址,本地备份则可为localhost,异地备份为pg数据库服务器的地址
  • 需将其中变量xxxx改为自己的
  • 备份数据库命令使用绝对路径:/path/pg/bin/pg_dump  为pg_dump包文件的绝对路径,一般pg_dump都在pg数据库下的bin目录下,path为pg数据库的安装目录

3、自动备份 

1、脚本上传至备份服务器

将脚本上传至备份数据的服务器,若为本地备份,则上传至数据服务器上,若为异地备份,则上传至备份服务器上;

上传完成后,若你是在windows上编辑的脚本,再进行上传,则需要使用如下命令,去掉换行;

xxxx.sh为备份脚本的名称,因此注意要在备份脚本的目录上执行,或者脚本文件用绝对路径。

sed -i 's/\r//' xxxx.sh

2、为脚本赋予执行权限

执行以下命令,将脚本变为可执行文件;

执行完成后,使用ll命令,备份脚本变为了绿色,即脚本文件变为了可执行文件。

xxxx.sh为备份脚本的名称,因此注意要在备份脚本的目录上执行,或者脚本文件用绝对路径。

 chmod +x xxxx.sh​

3、验证脚本

执行脚本,看是否在指定文件下有备份的文件产生;

xxxx.sh为备份脚本的名称,因此注意要在备份脚本的目录上执行,或者脚本文件用绝对路径。

sh xxxx.sh

4、添加定时任务,每日自动备份

执行以下命令,添加定时任务,实现每日自动备份

  • 1、进入定时任务编辑器
crontab -e
  • 2、添加定时任务

按i,输入以下信息

其中:​​0 22 * * *​表示每天的22:00(24小时制)执行任务;  ​​/path/to/xxxx.sh​是脚本文件的绝对路径。

0 22 * * * /path/to/xxxx.sh

输入完成后,按esc,输入:(冒号),输入wq,按下enter 

  • 3、查看定时任务
crontab -l

通过以上步骤,就可以完成本地或异地的pg数据库备份!

要使用pgsql进行备份,可以使用pg_dumpall命令。在备份之前,需要先设置一些参数,比如备份文件的路径、数据库用户等。可以参考以下脚本: ```bash #!/bin/bash DUMP=/usr/pgsql-10/bin/pg_dumpall OUT_DIR=/pgsqldump DB_USER=postgres DATE=`date +%F` OTHER_HOST=10.10.10.114 OTHER_HOST_DIR=/108pgsqlbak/ # 执行备份命令 $DUMP -U $DB_USER -f $OUT_DIR/backup_$DATE.sql # 将备份文件传输到其他主机 scp $OUT_DIR/backup_$DATE.sql $OTHER_HOST:$OTHER_HOST_DIR ``` 这个脚本会使用pg_dumpall命令将数据库备份到指定的路径,并将备份文件传输到其他主机。你可以根据需要修改脚本中的参数。参考资料\[1\]提供了关于pg_dumpall命令的更多信息。 请注意,这只是一个示例脚本,具体的备份策略和参数设置可能需要根据你的实际情况进行调整。 #### 引用[.reference_title] - *1* [pgsql 异地备份脚本](https://blog.csdn.net/m0_64399852/article/details/127866407)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [pgsql数据库自动备份](https://blog.csdn.net/qq_42001096/article/details/127066164)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值