关键词

Linux 上 定时备份postgresql 数据库的方法

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 定时任务之前,需要先了解以下几个基本概念:

  • 分钟(0-59)
  • 小时(0-23)
  • 日(1-31)
  • 月(1-12)
  • 星期几(0-7,其中0和7都代表星期天)

每个字段都可以采用一个数值、一组数值、一个区间和一些特定字符来指定不同的时间段。

执行 crontab -e 命令,添加以下内容:

0 3 * * * /path/to/backup_pgsql.sh

上述命令表示在每天凌晨 3 点执行一次备份脚本。备份文件将生成在 /pg_backup 目录下,文件名格式为 数据库名-备份日期.sql

示例说明

示例1:每小时备份一次

如果希望每小时备份一次,可以将 crontab 定时任务修改为:

0 * * * * /path/to/backup_pgsql.sh

备份脚本将在每小时的零分执行一遍。

示例2:备份多个数据库

如果需要备份多个 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

展开阅读全文