跳到主要内容
Esc

备份与监控

本页内容

数据目录里有什么

数据目录由配置文件的 data_dir 决定(默认是工作目录下的 ./data),下文记作 $DATA_DIR。

内容 要备份吗 说明
rerinkuview.db(及同名的 -wal、-shm) 必须 SQLite 数据库:设备、分组、设置、事件、访问密码、手机绑定和这台 Rerinku View 的实例 ID
secret.key 必须 32 字节的加密密钥:摄像头密码、远端存储、快速连接和 MQTT 的凭据都用它加密,设备令牌也由它签发
config.yaml 必须 配置文件,在工作目录里,不在 $DATA_DIR 里。端口和国标参数只保存在这里
recordings/ 按需 录像文件。文件本身就是录像的依据,数据库里的录像索引可以从文件重建
models/、faces/ 用了 AI 识别就要 识别模型和人脸库照片
cloud/ 不用 快速连接的运行时文件,会重新生成
~/.rerinku/bin/ 不用 内置的 FFmpeg、识别组件,每次启动自动解压

secret.key 一定要和数据库一起备份。 缺了它,恢复后所有摄像头都要重新输入密码,快速连接、远端存储和 MQTT 的凭据也要重新配置。要特别注意的是:Rerinku View 启动时如果找不到 secret.key,会直接生成一个新的,不会报错。

备份

推荐:停服后整体复制

  1. 停止 Rerinku View,确认进程已经退出。正常停止时,正在写的录像文件会被封口。
  2. 把数据目录和配置文件复制到一个带时间戳的目录,生成校验和,收紧权限:
export DATA_DIR=/var/lib/rerinku-view/data
export BACKUP_DIR=/srv/backups/rerinku-$(date -u +%Y%m%dT%H%M%SZ)
mkdir -p "$BACKUP_DIR"
cp -a "$DATA_DIR" /var/lib/rerinku-view/config.yaml "$BACKUP_DIR/"
(cd "$BACKUP_DIR" && find . -type f ! -path './data/recordings/*' -exec sha256sum {} + > SHA256SUMS)
chmod -R go-rwx "$BACKUP_DIR"

在线备份

不想停服时,数据库用 SQLite 的备份命令,不要直接复制正在写入的库文件;secret.key 和配置文件直接复制:

sqlite3 "$DATA_DIR/rerinkuview.db" ".backup '$BACKUP_DIR/rerinkuview.db'"
cp -a "$DATA_DIR/secret.key" /var/lib/rerinku-view/config.yaml "$BACKUP_DIR/"

已经封口的录像文件不会再变,可以用 rsync 之类的工具在线增量同步。

恢复与迁移

  1. 停止 Rerinku View。如果是在故障后恢复,先保留一份当前的数据,不要直接覆盖唯一的现场。
  2. 把备份的数据目录和配置文件放回原处,确认运行 Rerinku View 的用户有读写权限。
  3. 启动前检查数据库:sqlite3 "$DATA_DIR/rerinkuview.db" 'PRAGMA integrity_check;'
  4. 用相同或更新的版本启动,检查 /healthz、设备列表和至少一段历史回放。

迁移到新机器也是这几步。另外:

  • 配置文件里写死了旧机器 IP 的地方(rerinku_device.public_url、public_mqtt_broker)要改成新地址。
  • 新旧两台不要同时运行。 数据库里带着实例 ID,复制过去的 Rerinku View 和原来那台是“同一台”,快速连接和已绑定的手机会把它们当成一台。

升级

完整步骤已移到升级与回滚。升级前请备份数据库、secret.key 和配置文件;回滚需要恢复升级前的数据库。

回滚

按升级与回滚中的回滚步骤恢复旧版本,不要只替换可执行文件。

监控

健康检查

GET /healthz

数据库正常时返回 200 和 {"status":"ok"},否则返回 503。不需要认证,建议每 30 秒请求一次,连续失败就告警。

系统资源

接口 GET /api/v1/system/resources 返回 CPU、内存、显卡、网络、温度和磁盘的情况(每 2 秒采样一次),并给出总体状态:

指标 警告 严重
CPU(1 分钟平均) 90% —
内存 90% 95%
磁盘 95% 98%
温度 85 ℃ 95 ℃

这个接口在 Rerinku View 对外可访问时需要令牌,见开放接口。

日志

日志以 JSON 格式写到标准输出,Rerinku View 自己不做日志轮转,请交给 systemd、容器运行时或日志平台处理。日志会记录设备 ID 和地址用于排查,但不会记录摄像头密码或带凭据的地址。

建议对这些关键字告警:

关键字 含义
recording error 录像出错
recording storage check failed 检查录像存储失败
recordings paused to protect storage 磁盘空间不足,录像暂停,空间恢复后自动继续
removing recording that has not been uploaded yet 远端存储还没上传完的录像被清理
application stopped Rerinku View 已停止

Rerinku View 目前没有 Prometheus 指标接口。

调试接口

APP_ENV 为 development(默认)时,Rerinku View 会在 127.0.0.1:6060 开启 Go 的 pprof 调试接口,只能从本机访问。正式运行建议设 APP_ENV=production 关闭它,见配置参考。