Appearance
织信平台备份方案
本文档描述如何备份织信平台的核心数据,包括数据库、共享存储文件以及备份文件的远程传输。
一、备份数据库
织信平台使用 PostgreSQL 数据库,需定期备份以下核心库:
1. 备份 account 库(用户/权限相关)
shell
/usr/local/pgsql/bin/pg_dump -U postgres db_informat2_account_prd > /backup/db_informat2_account_prd_$(date +%F).sql2. 备份 biz 库(业务数据相关)
shell
/usr/local/pgsql/bin/pg_dump -U postgres db_informat2_biz_prd_0 > /backup/db_informat2_biz_prd_0_$(date +%F).sql提醒
✅ 推荐设置定时任务(cron)每日执行并带上日期,便于追溯与恢复。
二、传输备份文件到远程服务器
为提高数据安全性,建议将备份文件同步到异地服务器。
shell
scp /backup/*.sql user@192.168.1.100:/data/backup/请将以下项替换为实际值:
- user: 远程服务器用户名
- 192.168.1.100: 远程服务器IP
- /data/backup/: 远程备份目录路径
三、备份共享存储文件(SeaweedFS)
织信的上传文件等资源默认存储在 SeaweedFS 中,其数据目录为 /data/seaweedfs_home。
本地备份示例(使用AWS CLI)
安装 AWS CLI
sh
# 下载 AWS CLI 安装包
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
# 验证安装
aws --version配置 AWS CLI 凭据
sh
# 方式一:使用 aws configure 命令(推荐)
aws configure
# 系统会提示输入以下内容:
# AWS Access Key ID [None]: admin
# AWS Secret Access Key [None]: admin1234551699434582951bd3afe
# Default region name [None]: us-east-1 (可任意填写,如 us-east-1)
# Default output format [None]: json配置 S3 端点
sh
# 方式一:使用 --endpoint-url 参数(每次命令都需要添加)
aws s3 ls --endpoint-url http://localhost:19000
# 方式二:设置环境变量(推荐,一次设置全局生效)
export AWS_ENDPOINT_URL=http://localhost:19000
# 或者针对 S3 服务设置
export AWS_ENDPOINT_URL_S3=http://localhost:19000下载文件
sh
# 下载桶内所有文件到当前目录
aws s3 cp s3://informat-next/ . --recursive四、自动备份脚本与定时任务示例
1.备份脚本示例 /opt/scripts/backup_zhixin.sh
shell
#!/bin/bash
BACKUP_DIR="/backup"
DATE=$(date +%F)
# 数据库备份
/usr/local/pgsql/bin/pg_dump -U postgres db_informat2_account_prd > ${BACKUP_DIR}/db_informat2_account_prd_${DATE}.sql
/usr/local/pgsql/bin/pg_dump -U postgres db_informat2_biz_prd_0 > ${BACKUP_DIR}/db_informat2_biz_prd_0_${DATE}.sql
# 权限设置
chmod 600 ${BACKUP_DIR}/*.sql2、备份文件脚本 /opt/scripts/backup_seaweedfs.sh
sh
#!/bin/bash
# 配置变量
BUCKET="informat-next"
LOCAL_BACKUP_DIR="/data/backups/seaweedfs/$(date +%Y%m%d)"
LOG_FILE="/var/log/seaweedfs-backup.log"
S3_ENDPOINT="http://localhost:19000"
# 创建备份目录
mkdir -p $LOCAL_BACKUP_DIR
# 记录开始时间
echo "===== 备份开始: $(date) =====" >> $LOG_FILE
# 执行备份
aws s3 sync s3://$BUCKET/ $LOCAL_BACKUP_DIR/ \
--endpoint-url $S3_ENDPOINT \
--progress \
>> $LOG_FILE 2>&1
# 检查备份结果
if [ $? -eq 0 ]; then
echo "备份成功完成" >> $LOG_FILE
else
echo "备份失败" >> $LOG_FILE
fi
echo "===== 备份结束: $(date) =====" >> $LOG_FILE
# 保留最近30天的备份,删除旧备份
find /data/backups/seaweedfs/ -type d -mtime +30 -exec rm -rf {} \;2.添加定时任务(使用 crontab)
shell
crontab -e添加如下内容(每日凌晨 2 点执行备份):
0 2 * * * /bin/bash /opt/scripts/backup_zhixin.sh >> /var/log/zhixin_backup.log 2>&1
0 2 * * * /bin/bash /opt/scripts/backup_seaweedfs.sh >> /var/log/zhixin_backup.log 2>&1
```shell
