对我们的研发团队来说,做视频行业,除了需要关注传输速率的问题之外,视频数据的存储也是一个重要问题,视频的数据是庞大的,保证视频数据的安全和存储我们同样要重视。
有的用户可能会问:这么庞大的数据,怎么保证数据不丢失呢?数据丢失了又该怎么办?恰巧,我们在做EasyCVR的使用测试时,就对此问题进行了测试,多少还是暴露出了一些问题,但我们也对此问题进行了比较妥善的解决。
我们测试发现,在EasyCVR程序正在运行中时,如果按Ctrl+C强制退出,数据库中偶尔会有数据丢失,比如添加的设备和通道没有了。比较麻烦的做法就是将视频重新上传,但总要找到问题所在才能更好解决。
我们按以下步骤进行了检查和修改:
1、开启数据库操作的log
首先查看数据库log日志,将上图中的代码 false 改为true;
2、我们可以通过log定位出最后操作的相关数据指令;
3、添加调试代码在数据库操作的函数中添加panic函数让程序强制崩溃,生成堆栈信息。从堆栈信息中定位出,问题出现在CVR模块stop函数中误操作执行了数据删除操作。
找到了原因,我们即刻纠正了这类错误,在往后的正式版本中,将不会有在用户的正常操作情况下而产生的数据丢失的情况。