FireworkPolymer
服务器最近因为主机出问题崩溃了几次,之后某些玩家的数据就会丢失,这使我感到忧虑,这个潜在的隐患会在我的新系统上线后变成一个定时炸弹,那时候再来这么几次崩溃就真的撑不住了
现在想知道的就是有什么方法可以保持数据在这种情况下崩溃后不丢失?或者使用什么备份方式让数据可以快速恢复?这个插件有数据库储存数据的模式,但是我没开启,需要开启吗?

结冰的离季
一个服务端的数据是各种各样的,每个插件数据保存形式、频率都不一样,没有一个通用的解决方案(但是高明的插件对于数据安全更上心,尽量选择优质插件)。
能够最大程度保存数据的方法是定时磁盘备份,类似阿里云的磁盘快照功能,备份整个磁盘,必要时回滚。
你也可以写一个脚本定时备份整个服务端和数据库,一切的前提是磁盘空间足够。

具体到某个插件的话得看这个插件是如何实现的。
一般而言直接往数据库存储(比如mysql)是不会有事的,但考虑到储存频率也可能造成IO阻塞的问题,有的插件会选择定时保存一次数据,那么在这段时间内有可能丢失数据。
所谓数据丢失就是发生在内存->磁盘之间。

主机出问题造成的崩溃是有可能发生在 数据写入磁盘的时候的,如果一个硬盘正在写入数据,这个时候断电了,那么这部分数据肯定是损坏了。这种情况的话只能由备份恢复了。

结论就是有数据库就用数据库(数据库也可开启定时备份),搞磁盘快照或者脚本备份。

Neige
你应该关心的不是机子炸了怎么办,而是你的机子为什么会炸

Falln
spigot.yml 有个 save-user-cache-on-stop-only,检查是否为true,如果为true,则代表服务器仅会在关闭时保存玩家数据,不建议设为true。
如果你用Paper,检查paper的自动保存开了没有,paper自动保存和默认值一样就行,能满足绝大多数需求。
再者,你是该检查为什么服务器会崩了。

FireworkPolymer
Neige 发表于 2023-8-10 23:11
你应该关心的不是机子炸了怎么办,而是你的机子为什么会炸

就是单纯崩溃了,突然死机那种

KAURUIGuo
FireworkPolymer 发表于 2023-8-11 09:49
就是单纯崩溃了,突然死机那种

那为何不直接备份环境,服务器,重装系统呢(

FallingCreams
不明白楼主指的玩家数据丢失是指整体数据(背包在内和插件数据)还是某个插件数据丢失

若是某个插件数据丢失,大概率是该插件的数据保存执行方式无法应对突**况(服务器宕机),而导致的数据丢失

若整体数据丢失,请检查玩家是否存在UUID变更并及时解决服务器异常崩溃问题

hello09x
正如楼上所说,你不应该找崩溃后的补救措施,应该尽可能的避免崩溃

strings
答案是换成 brtfs,默认 cow,即使断电也顶多丢失一段时间的数据而不会导致存档损坏。

而且自带快照功能,随时可打,无需服务商支持。