前记
前段时间因为其中一个硬盘出现故障,将其他硬盘进行了换位更改操作,进入相册后发现已经完成的人像识别没有了。之前有对QNAP的中心数据库Mysql进行过恢复相册数据操作,感觉只要有数据库在,不怕已识别的人物数据丢失,但是新的问题又来了,仅仅恢复了Mysql的数据,人物中心的人脸识别数据回来了,但是在人物列表里不显示人脸照片。

经过多次索引和重新进行人脸识别后,找到了同时备份人物数据以及人脸识别照片的操作。

首先了解下威联通智能AI引擎的工作背景:

  • 从内容管理获取照片、视频
  • 对其进行索引
  • 生成略缩图
  • 人脸识别、物品识别、相似照片识别

这几个后台工作是同时进行的,这些工作会在2个地方写入数据,一个是系统的Mysql数据库,一个是本地图片缓存目录。

  1. Mysql数据库中记录了照片的路径、属性、标签、人像采集、略缩图位置等信息。
  2. 本地图片缓存目录有2个位置记录数据,在系统磁盘(默认是第一块磁盘)也是QuMagie的安装磁盘,记录人脸识别后的图片以及略缩图。

    /share/CACHEDEV1_DATA/.system/facedata/ #已识别的人脸图片
    /share/CACHEDEV1_DATA/.system/thumbnail/ #索引以及略缩图

如果要完整备份相册的数据,包括人像识别、照片标签等,需要同时备份这3处,等到恢复相册数据的时候才会完整,不会导致数据回来但是人脸照片不显示的问题:

以我的为例,40000个照片+视频大约300GB容量

  1. 备份照片的Mysql数据库 (备份数据大概150MB,压缩后40MB)
  2. 备份已识别的人像照片(备份数据大概350MB)
  3. 备份照片的略缩图目录(备份数据大概11GB,入口在Multimedia Console进入略缩图生成看到的是这个数据,这里的数据不用备份,可以重新生成)

什么情况下会导致照片人像数据丢失?

  • Multimedia Console,进入内容管理选项,对QuMagie和Photo Station同时取消勾选相册目录
  • Multimedia Console,进入索引选项,进行重新建立索引动作
  • Multimedia Console,进入AI引擎选项,进行人脸识别重新开始动作
  • 更换硬盘,导致Multimedia Console内容管理已标记的照片文件夹丢失
  • 对相册文件夹进行 非常规 重命名、添加、删除、移动照片或目录的操作
    在SMB挂载、威联通文件总管、相册管理App里对照片文件夹的操作都属于正常操作,非正常的操作例如用Winscp、SSH或第三方文件管理器对照片和文件夹进行移动、添加、删除等,不会唤醒照片处理程序,导致图片不在,略缩图还在却打不开的问题。

如何完整恢复人脸识别数据?

  1. 保持原来照片存放目录的共享名一致,例如相册存放目录名字为Photo,存在路径就是/share/Photo,不管这个目录是哪个磁盘都可以。
  2. 恢复Mysql数据库
  3. 恢复人脸识别图片

备份

  1. 备份MySQL数据库
    /usr/local/mariadb/bin/mysqldump --defaults-file=/usr/local/mariadb/my-mariadb.cnf -u root -pqnapqnap s01 > /share/备份/backup_s01_$(date +%Y-%m-%d-%H-%M-%S).sql
    
  2. 增量备份人脸识别数据
    rsync -azv /share/CACHEDEV1_DATA/.system/facedata/ /share/备份/facedata/
    

恢复

恢复操作需要有一定的编程基础,由此出现的数据丢失问题需自负

先建立原来的相册目录,将照片文件导入后,再进行下面操作

  1. 恢复人脸识别数据,一定要先删除/share/CACHEDEV1_DATA/.system/里面的facedata文件夹再恢复
    rsync -azv /share/备份/facedata/ /share/CACHEDEV1_DATA/.system/facedata/

  1. 恢复数据库MySQL备份

    /usr/local/mariadb/bin/mysql --defaults-file=/usr/local/mariadb/my-mariadb.cnf -u root -pqnapqnap s01 
  2. 在Multimedia Console中心->略缩图生成 进行重新生成略缩图操作

    注意

    恢复时,建议停用QuMagie和Photo Station服务,防止略缩图还未恢复完成,系统因为检测到没有略缩图,再次生成。再次生成的略缩图会跟之前备份的数据库记录不匹配,导致出现不可预知的问题。