输入至少两个字符

SQLite 与 MySQL

文档版本: v1.0.3

选择数据库#

类型 适用场景
SQLite 单服、无需外部数据库、维护成本低
MySQL 多台子服共享熔炉,或需要使用现有的 MySQL 备份体系

默认使用 SQLite,文件为 plugins/KaFurnace/furnaces.db。

准备 MySQL#

先在 MySQL 中创建数据库和专用账号:

CREATE DATABASE kafurnace CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'kafurnace'@'%' IDENTIFIED BY 'replace-with-a-strong-password';
GRANT ALL PRIVILEGES ON kafurnace.* TO 'kafurnace'@'%';
FLUSH PRIVILEGES;

然后填写 config.yml 中的 MySQL 连接信息,将 database.type 改为 mysql,最后完整重启服务器。插件会自动创建所需数据表。多服使用还需在每台子服设置 cross-server.enabled: true。

远程生产库应使用默认的 sslMode=VERIFY_IDENTITY 并提供受信任证书。只有同机、隔离的临时测试库可以把参数改为 sslMode=DISABLED。默认连接与读取超时较短,数据库故障时关键玩家操作仍可能等待数秒,因此必须在目标网络延迟下测试。

多服共用 MySQL 时,每台子服必须启用 cross-server.enabled。玩家切服时,新服会等待旧服保存完毕再加载数据;未启用时不要让多个 KaFurnace 实例同时连接同一个库,否则可能覆盖玩家数据。配置示例见跨服同步。

什么时候会保存数据?#

放入、取出物品及购买升级等重要操作会等待数据库确认。若保存失败,操作会取消并恢复原状态;MySQL 故障或连接延迟可能让这次点击等待数秒。因此请使用连接稳定、延迟较低的数据库。

购买时若已经扣款,但数据库保存失败,插件会尝试退款。退款也失败时,请管理员根据控制台 SEVERE 日志人工核对。

熔炼进度会在后台定期保存,完成熔炼和消耗燃料也会触发保存。

关闭熔炉界面或退出服务器时,也会提交最新数据;跨服切换会等旧服保存后再由新服加载。正常关服会等待保存完成,强制结束进程仍可能丢失尚未保存的后台进度。checkpoint-seconds 默认为 30,表示定期保存间隔,不代表保证零数据丢失。

首次使用某种数据库时,插件会下载并校验对应驱动;下载失败或文件不匹配时,请检查控制台错误。

切换数据库#

切换类型不会自动搬迁数据。应先确保所有玩家取空虚拟物品,再停服、备份旧数据库、修改配置并启动新后端。

KaFurnace 不会自动将旧数据库里的熔炉或物品搬到新数据库。切换前应备份并规划人工迁移,否则新数据库中的玩家熔炉会看起来是空的。

备份#

SQLite 应在服务器停止后备份 furnaces.db。MySQL 使用现有的定时备份或 mysqldump 流程。数据库中包含玩家物品,不应只依赖世界备份。