文档目录
备份与监控
数据目录里有什么
数据目录由配置文件的 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,会直接生成一个新的,不会报错。
备份
推荐:停服后整体复制
- 停止 Rerinku View,确认进程已经退出。正常停止时,正在写的录像文件会被封口。
- 把数据目录和配置文件复制到一个带时间戳的目录,生成校验和,收紧权限:
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 之类的工具在线增量同步。
恢复与迁移
- 停止 Rerinku View。如果是在故障后恢复,先保留一份当前的数据,不要直接覆盖唯一的现场。
- 把备份的数据目录和配置文件放回原处,确认运行 Rerinku View 的用户有读写权限。
- 启动前检查数据库:
sqlite3 "$DATA_DIR/rerinkuview.db" 'PRAGMA integrity_check;' - 用相同或更新的版本启动,检查
/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 关闭它,见配置参考。