suziwen / markdownxiaoshujiang

小书匠是一款本地优先,去中心化,分布式,支持选择性同步的全平台覆盖知识管理笔记软件。
http://soft.xiaoshujiang.com
1.53k stars 196 forks source link

C盘内存爆满后弹出本地端口关闭数据服务,本地数据库全部丢失 #1695

Open CodeEngieer opened 1 year ago

CodeEngieer commented 1 year ago

image C盘运行内存满了之后,继续读写就报错。不能保存,退出之后发现本地数据库的文章全部丢失,只保留最近10篇修改的文章,已经不止一次这样了。但是过几天本地数据库文章又全部回来了,反反复复这样都好几次了。

suziwen commented 1 year ago

你的 c 盘空间总共多大? 还剩多少空间?

小书匠的数据文件占用多少空间?

suziwen commented 1 year ago

可以试下修改数据文件的路径。


修改安装目录下的 package.json

把第 20 行改成 "chromium-args": "--user-data-dir=d:/xsjdata --enable-node-worker --disable-devtools",,启动后,就是在新数据目录下运行了 。

可以把原始数据目录文件拷贝到新的数据目录下(需要保持目录结构一致),这样就可以继续以前的文章操作了。

注意新数据目录的路径最好不要有空格和中文。

image


如果想避免每次系统升级小书匠客户端时,配置文件被重置的问题,可以通过命令行启动来修改数据目录的位置 Story-writer.exe --user-data-dir=d:/xsjdata, 把这个启动命令做成 bat 文件,以后点击这个 bat 文件就可以直接启动小书匠了。

CodeEngieer commented 1 year ago

C盘和D盘经常会爆满,满的时候就会弹出报错,无法保存数据。上一次爆满的时候丢失数据我就换了新地址,神奇的是之前的数据又全部回来了,现在C盘又满了,清理一遍后发现数据又丢了。

suziwen commented 1 year ago

磁盘空间满了后,应该是操作系统或者其他磁盘管理软件,清空了他们认为不需要的数据。小书匠这边不会去自动优化这种系统级的磁盘操作。

经常爆满的话,最好观察下数据, c盘,d盘空间大小,剩余多少,小书匠数据文件目录大小等。根据这些信息,自己腾出一定量的空间,用来存放数据。


你应该有使用小书匠的临时同步服务器,数据才会自动恢复最近修改的 10 篇;如果你在其他电脑上也配置同步,修改文章时,这些文章也就会同步过来。不想使用同步的话,或者想自己管理同步的话,可以到 小书匠主按钮>数据>同步 里配置下。

CodeEngieer commented 1 year ago

那怎么恢复之前的文章?即使是清理内存后,数据也没有回来,上一次也是这样,经过一段时间后,数据又莫名其妙全部回来了,怎样才能恢复之前的数据,另外能不能定期备份数据库。防止同样的问题出现。

suziwen commented 1 year ago

备份数据也是你那边要自己备份的,小书匠应用这边也不知道你具体想把数据备份到什么位置,对应的位置空间大小,读写性能等也会影响备份的时间。

最简单的方法,找个备份软件,定时执行,把数据目录复制到另一个位置上。

比较难一些的,就是配置个 couchdb 数据库或者小书匠天马版,通过 小书匠>数据>同步>自定义, 把数据同步到自己创建的 couchdb 数据库上.

难一些的,就是,在磁盘上做 raid 阵列等。

suziwen commented 1 year ago

尾号是 8802 的 qq 邮箱是你发的吗?

CodeEngieer commented 1 year ago

是的,上上周就出现这个情况了,莫名其妙又恢复了。这一周又出现这个情况,真不知道这一次数据什么时候能恢复。也不知道是不是Bug问题,请作者修复一下

suziwen commented 1 year ago

可以看一下邮箱里的回复,我有回复怎么抓取临时服务器数据的方法。抓取完后,可以看下数据目录的大小,磁盘剩余量。


这个暂时不能界定为小书匠的 bug. 磁盘满后的一些行为,并没办法确定是小书匠这边主动删除数据库文件的。

建议数据目录所在的磁盘留够足够多的空间,并且保证磁盘的稳定,定时检查磁盘剩余空间。

CodeEngieer commented 1 year ago

应该是磁盘不能正常读取数据,之前的标签页都还在有显示,但是不能读出来,上一次恢复我以为是完全删了。偶然间又回来了说明数据还在电脑上,只是读取不出来罢了,满了之后继续读写会报那个什么db_close 什么的。抓取临时服务器数据方法是哪一篇帖子求指路谢谢作者了。

CodeEngieer commented 1 year ago

希望作者在后续的版本中能考虑到电脑内存已满,数据清零的情况。现在标签卡还有,但是已经读取不出来了。也不知道什么时候会恢复,上一次是无意中恢复的。即使后面腾出内存来也恢复不了,之余能不能恢复看运气,心塞.....

CodeEngieer commented 1 year ago

问题已解决,作者标记一下相类似问题的处理方式,出现相类似的问题不要慌。数据是存在电脑上的只是暂时读取不出来罢了,大概四五天后数据就会自动回滚,数据一个也不会少,像这张图一样。