跳转到正文

备份与恢复 ​

数据库和资源共同构成业务数据。只备份源码无法恢复聊天,单独保留数据库也不能恢复已经丢失的图片、视频和文件。

普通与宝塔环境 ​

使用数据库专用备份账号,交互输入密码,不把真实密码写在命令里:

bash
mysqldump -h 127.0.0.1 -u backup_user -p \
  --single-transaction --routines --triggers --no-tablespaces \
  popoim > popoim.sql

--single-transaction 适用于当前 InnoDB 表;备份期间不做结构变更。同步备份 public/uploads/,并单独加密保存数据库、SDK、资源存储及推送等部署配置。宝塔可使用数据库备份和计划任务完成同样工作。

Docker ​

在服务端源码目录导出数据库:

bash
sudo docker compose exec -T mysql sh -c \
  'MYSQL_PWD="$MYSQL_PASSWORD" mysqldump -u"$MYSQL_USER" --single-transaction --no-tablespaces "$MYSQL_DATABASE"' \
  > popoim.sql

同时备份宿主机的资源和配置。数据库卷不等于离线备份,应定期导出到独立存储并验证可恢复。

恢复顺序 ​

  1. 使用兼容的 MySQL 版本,先配置 ngram_token_size=1、关闭全文索引停用词,再导入备份。
  2. 恢复对应的资源与部署配置;保持原 SDK 验签密钥。
  3. 调整恢复环境的数据库和公网地址,启动服务。
  4. 检查账号登录、最近消息、历史搜索、图片、文件与实时连接。

恢复到独立环境时使用新的公网地址,避免客户端误连原环境。若回退涉及数据库结构变化,先确认旧版本代码兼容,不能仅切换源码目录。