备份、升级与回退
升级前先确认当前服务由哪个 SFMC 安装和工作目录管理,并为数据与世界制作可恢复的冷备份。本指南给出操作顺序;实际路径以本机配置为准。
1. 数据安全与冷备份标准
必须纳入备份的核心资产清单
严禁在运行状态下直接拷贝 SQLite
SFMC 的 db-server 默认工作在 SQLite WAL(预写式日志,Write-Ahead Logging) 高性能并发模式。数据在写入主数据库前会暂存在同级的 .db-wal 与 .db-shm 文件中。
严禁在 db-server 处于运行状态时直接强行拷贝 .db 文件,否则极易导致数据库页损坏(SQLITE_CORRUPT)。
标准备份流程操作
推荐在例行维护窗口(或通过计划任务脚本)执行标准化冷备份:
挂起数据库写入并安全停机
安排维护窗口,在管理该实例的 sfmc 控制台停止服务,并确认 BDS 与 db-server 进程均已退出:
执行打包归档
使用系统原生打包工具将关键资产压缩为带时间戳的归档。下面的 BDS_DIR / $bdsDir 必须先替换为当前实例实际的 BDS 目录;不要假定目录名为 BedrockDedicatedServer。归档须放在被备份目录之外,且空间足够。若数据库位于 data/ 之外,应另行纳入。
先检查 modules/packages/ 是否含符号链接或 Windows junction。 归档 modules/ 不等于备份链接目标:本机用 Compress-Archive 对 junction 的隔离验证中,归档只包含普通文件,漏掉了链接模块的内容。若存在链接,应逐个记录模块名与目标路径,确认目标可访问,并将实际源码目录另行归档;恢复演练时要连同链接关系一起验证。目标已丢失的链接应先查明原因,不能把它记作已备份。下面的简例仅适用于模块目录内没有链接的实例。
恢复服务拉起
检查归档可打开、关键文件齐全,并记录归档路径与哈希。若此次只做例行备份,可重新启动服务;若准备升级,保持停机直至升级与部署完成:
2. 组件升级指引
SFMC 平台的各层组件相互解耦,可按需分别升级:
① 升级 SFMC CLI 与平台运行时
pnpm v11 起默认要求新版本发布满 24 小时才参与无版本号解析。升级当天请先运行 pnpm view @sfmc-bds/sfmc version,然后安装该精确版本。
升级 CLI 不会自动升级已安装模块或已部署的行为包。先确认 SFMC_ROOT 指向目标实例,再按下文更新模块并重新构建、部署,最后启动服务验收。
② 升级 Bedrock Dedicated Server
SFMC 内置了版本检测与升级命令,支持直接从 Mojang 官方源下载:
文件保留与配置处理
升级过程中,系统会依据 configs/bds_updater.json 中的 preserve 清单,在覆盖前保留以下文件/目录,覆盖完成后自动恢复:
server.properties(服务端配置)whitelist.json/permissions.json(原生白名单)worlds/(所有世界存档与已安装的行为包)
恢复 server.properties 后,平台会自动将常用配置注释翻译为简体中文说明,并在保留服主既有配置值的前提下补全 EULA 遥测项(emit-server-telemetry=true)。
涉及数据库 Schema 迁移时,先在隔离副本上演练,并保留迁移前冷备份。不要假定新版本写入的数据可由旧版直接读取。
③ 升级业务功能模块
当上游模块作者在 npm 发布了新版本时:
3. 灾难恢复与回滚方案(Rollback)
如果在升级后发现版本兼容性问题或异常,可按以下方式实施应急回滚:
服务日志与异常堆栈保存在 <SFMC_ROOT>/.sfmc/logs/ 目录下(db.log、qq.log、bds.log)。在排查或反馈问题时,请附带该目录下的相关诊断日志。