Skip to content

织信平台备份方案

本文档描述如何备份织信平台的核心数据,包括数据库、共享存储文件以及备份文件的远程传输。


一、备份数据库

织信平台使用 PostgreSQL 数据库,需定期备份以下核心库:

1. 备份 account 库(用户/权限相关)

shell
/usr/local/pgsql/bin/pg_dump -U postgres db_informat2_account_prd > /backup/db_informat2_account_prd_$(date +%F).sql

2. 备份 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}/*.sql

2、备份文件脚本 /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