使用Bash脚本备份PostgreSQL数据库

帮助中心

使用Bash脚本备份PostgreSQL数据库

2024-03-30 06:17







#!/bin/bash

 

# 设置数据库连接信息

DB_NAME="maovideo"

DB_USER="postgres"

DB_HOST="localhost"

DB_PORT="5432"

DB_PASSWORD="maovideo"

 

# 设置备份文件名和路径

BACKUP_FILE="/www/backup.sql"

 

# 使用pg_dump命令备份数据库

export PGPASSWORD="$DB_PASSWORD"

pg_dump -U "$DB_USER" -h "$DB_HOST" -p "$DB_PORT" -F c -b -v -f "$BACKUP_FILE" "$DB_NAME"

 

# 删除PGPASSWORD环境变量

unset PGPASSWORD

 

 

 

这段代码是一个Bash脚本,它使用`pg_dump`命令备份PostgreSQL数据库。以下是它的工作原理:

 

1. **设置数据库连接信息**:脚本首先设置连接到PostgreSQL数据库所需的信息,包括数据库名称(`DB_NAME`)、用户名(`DB_USER`)、主机(`DB_HOST`)、端口(`DB_PORT`)和密码(`DB_PASSWORD`)。

 

2. **设置备份文件名和路径**:接下来,脚本设置了备份文件的文件名(`BACKUP_FILE`)和路径(`/www/backup.sql`)。

 

3. **使用pg_dump命令备份数据库**:脚本使用`pg_dump`命令备份PostgreSQL数据库。`pg_dump`是一个命令行工具,用于从PostgreSQL数据库创建备份。脚本使用以下标志:

 

   - `-U`:指定连接到数据库的用户名。

   - `-h`:指定连接到数据库的主机。

   - `-p`:指定连接到数据库的端口。

   - `-F`:指定备份文件的格式(`c`表示自定义格式)。

   - `-b`:指定备份应包括BLOB(二进制大对象)。

   - `-v`:指定备份应详细。

   - `-f`:指定备份文件的输出文件名。

   - `"$DB_NAME"`:指定要备份的数据库的名称。

 

4. **删除PGPASSWORD环境变量**:备份完成后,脚本使用`unset`命令删除`PGPASSWORD`环境变量。这有助于防止密码泄露,因为`PGPASSWORD`环境变量在脚本执行时存储了密码。

 

此脚本可用于定期备份PostgreSQL数据库,例如每天或每周一次。你可以通过将脚本添加到cron作业来实现此目的。