在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数据库,确保数据的安全性和可靠性。