Linux 上定时备份 PostgreSQL 数据库的方法有多种,下面我以使用 shell 脚本和 crontab 定时任务的方法为例,为大家提供详细的攻略。
在备份之前,需要确定备份策略,即备份的时间和频率。一般来说,推荐每天都进行备份,可以在晚上低峰期进行备份,从而避免对业务造成影响。
备份脚本可以使用 shell 脚本或者编写自己的程序进行实现。以 shell 脚本为例子,在终端输入 vi backup_pgsql.sh
新建备份脚本文件,输入以下内容:
#!/bin/bash
PGHOST=localhost
PGPORT=5432
PGUSER=postgres
DB_NAME=数据库名
DATE=$(date +"%Y%m%d")
BACKUP_DIR=/pg_backup
BACKUP_FILE=$DB_NAME-$DATE.sql
pg_dump -h $PGHOST -p $PGPORT -U $PGUSER $DB_NAME > $BACKUP_DIR/$BACKUP_FILE
PGHOST
:需要备份的数据库所在的主机。PGPORT
:需要备份的数据库的端口号。PGUSER
:需要备份的数据库的用户名。DB_NAME
:需要备份的数据库的名称。DATE
:当前备份的日期。BACKUP_DIR
:备份文件存放的目录,可以根据自己的需求进行修改。BACKUP_FILE
:备份文件的名称。在执行备份脚本之前,需要为备份脚本文件添加执行权限。在终端输入 chmod +x backup_pgsql.sh
。
当备份脚本编写完成后,我们可以手动执行一遍来测试是否可以正常备份。在终端输入 ./backup_pgsql.sh
。
在编写 crontab 定时任务之前,需要先了解以下几个基本概念:
每个字段都可以采用一个数值、一组数值、一个区间和一些特定字符来指定不同的时间段。
执行 crontab -e
命令,添加以下内容:
0 3 * * * /path/to/backup_pgsql.sh
上述命令表示在每天凌晨 3 点执行一次备份脚本。备份文件将生成在 /pg_backup
目录下,文件名格式为 数据库名-备份日期.sql
。
如果希望每小时备份一次,可以将 crontab 定时任务修改为:
0 * * * * /path/to/backup_pgsql.sh
备份脚本将在每小时的零分执行一遍。
如果需要备份多个 PostgreSQL 数据库,可以将备份脚本进行修改,添加一个循环语句。
#!/bin/bash
PGHOST=localhost
PGPORT=5432
PGUSER=postgres
BACKUP_DIR=/pg_backup
DATE=$(date +"%Y%m%d")
DB_LIST="db1 db2 db3"
for DB_NAME in $DB_LIST; do
BACKUP_FILE=$DB_NAME-$DATE.sql
pg_dump -h $PGHOST -p $PGPORT -U $PGUSER $DB_NAME > $BACKUP_DIR/$BACKUP_FILE
done
在 DB_LIST
变量中指定需要备份的数据库名称,多个数据库名称之间使用空格分隔。例如:
DB_LIST="mydb1 mydb2 mydb3"
这样,就可以每天定时备份多个 PostgreSQL 数据库了。
本文链接:http://task.lmcjl.com/news/14123.html