在CentOS上备份和恢复PostgreSQL数据库可以通过以下几种方法实现:
使用 pg_dump 命令进行逻辑备份,该命令将数据库的结构和数据导出为SQL脚本文件。
备份示例:
pg_dump -U postgres -h localhost -p 5432 -F c -b -v -f /path/to/backup/backup_file mydatabase
其中:
-U postgres 指定用户名。-h localhost 指定主机名。-p 5432 指定端口号。-F c 表示以自定义格式备份。-b 表示包含大对象。-v 表示详细模式。-f /path/to/backup/backup_file 指定备份文件的路径和名称。mydatabase 是要备份的数据库名称。恢复示例:
pg_restore -U postgres -h localhost -p 5432 -d mydatabase -v /path/to/backup/backup_file
其中:
-U postgres 指定用户名。-h localhost 指定主机名。-p 5432 指定端口号。-d mydatabase 指定要恢复的数据库名称。-v 表示详细模式。/path/to/backup/backup_file 是备份文件的路径。使用 pg_basebackup 命令进行物理备份,该命令会复制整个数据目录,适用于快速恢复,但占用空间较大。
备份示例:
pg_basebackup -U postgres -D /path/to/backup -F t -v -P
其中:
-U postgres 指定用户名。-D /path/to/backup 指定备份目录。-F t 表示以tar格式备份。-v 表示详细模式。-P 表示显示进度。可以使用 cron 任务定期执行备份脚本,以确保数据库的定期备份和异地备份。
备份脚本示例:
#!/bin/bash
# 配置参数
USER= "postgres"
DB_NAME= "mydatabase"
BACKUP_DIR= "/path/to/backups"
DATE=$(date +%Y%m%d%H%M%S)
# 创建备份文件路径
BACKUP_FILE= "$BACKUP_DIR/$DB_NAME - $DATE.sql"
# 使用pg_dump进行备份
pg_dump -U $USER -d $DB_NAME -f $BACKUP_FILE
# 打印备份完成信息
echo "Backup of $DB_NAME completed on $DATE. Backup file is $BACKUP_FILE"
设置定时任务:
0 2 * * * /path/to/backup_postgresql.sh
这条命令会在每天凌晨2点执行备份脚本。
通过这些步骤,您可以在CentOS系统上成功备份和恢复PostgreSQL数据库,确保数据的安全性和可靠性。