Files
MoonBridge/docs/mariadb.md
T
layue13andClaude Opus 5.5 afea023bce build: 代理发行包改为单个可运行的 moonbridge.jar
发行包去掉 bin/ 启动脚本和 lib/ 下的 42 个依赖 jar,改为与其他代理服务端一样
用 java -jar moonbridge.jar 启动:
- proxy-core 用 shadow 打出含全部依赖的 moonbridge.jar(合并 META-INF/services,
  清单写入 Main-Class、Multi-Release 与 Enable-Native-Access: ALL-UNNAMED)
- 泄漏检测默认关闭改由 ProxyMain 在加载 Netty 前设置,显式 -D 仍优先
- 移除不再使用的 application 约定插件
- 安装包检查、烟测与基准脚本改用发行包根目录作 classpath;文档同步

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 15:00:14 +08:00

3.5 KiB
Raw Blame History

MariaDB 13.0.2 权限数据库

MoonBridge 的 SQL 存储位于原生 LuckPerms 平台插件:保存用户权限、组、继承、track 和管理记录,同时可提供 SQL 消息同步。生产目标为 MariaDB Server 13.0.2。新生成的 LuckPerms 配置默认选择 storage-method: mariadb;启用插件前需要配置共享数据库。代理核心没有另一个独立 JDBC 数据库。

LuckPerms 使用其原生 MariaDB 存储实现、表结构和连接工厂,按 data.address、数据库名及凭据生成 jdbc:mariadb: 连接。固定的官方上游版本由依赖管理器下载、校验和隔离 MariaDB Connector/J 3.5.2。这是 LuckPerms 自身管理的驱动,不是由 MoonBridge 普通 Gradle runtime 依赖打包的驱动;服务端版本 13.0.2 与驱动版本分别管理。

配置示例、插件数据目录和自动 SQL/可选 Redis 同步见 权限文档。远程部署使用 data.pool-settings.properties.sslMode: verify-full,并按 MariaDB TLS 文档 配置和验证数据库身份;本机开发示例及隔离验收显式使用 disable。

已有数据与部署

已有 config.yml 不会被默认资源覆盖。手动更新 storage-method: mariadb、数据库连接信息和 TLS 属性,保留原有 table-prefix 与权限数据。不要因为切换驱动删除表或创建一个空的权限数据库替代已有数据。

PDS、AetherShard 与 LuckPerms 可以使用同一台 MariaDB 服务,各自保留独立数据库/表与数据权威。多台 MoonBridge 代理使用同一个 LuckPerms 数据库和表前缀,各自设置不同的 server。

数据库服务迁移需要另行停写、备份、独立恢复并核验用户、组和继承数据,然后统一切换所有代理及共用该数据的 Bukkit LuckPerms。保留源数据库作为回退来源;禁止同时向两套数据库写入。本次代码适配不执行现有服务的数据迁移。

真实数据库验收

需要 JDK 25、Node.js 和 Docker。先初始化固定上游并构建分发包,普通 check 保留显式 H2 的离线内部验收:

git submodule update --init --recursive
bash ./gradlew clean check :proxy-core:distZip --no-daemon --max-workers=2
mkdir -p build/permission-network-classes
javac -cp 'proxy/core/build/install/moonbridge/*' -d build/permission-network-classes testing/smoke/PermissionNetworkAcceptance.java
node testing/smoke/permission-services.cjs start

运行下面两轮后,务必执行 stop(失败也需清理):

node testing/smoke/permission-network.cjs sql outage
node testing/smoke/permission-network.cjs redis outage
node testing/smoke/permission-services.cjs query
node testing/smoke/permission-services.cjs stop

fixture 只创建带本轮所有权标签的本机容器,固定使用 mariadb:13.0.2 并检查实际服务器版本。SQL 模式使用 MariaDB 原生自动 SQL messenger;Redis 模式仍使用 MariaDB 保存权限。测试执行双实例授权/撤销/组继承、上下文、临时权限、插件重启持久化,以及 MariaDB/Redis 停机恢复。普通构建不会自动执行这些外部服务测试。

stop 删除本轮容器和数据卷、移除凭据文件,并对保留的测试配置密码脱敏。当前验收记录 与早期 MySQL/H2/游戏客户端证据分别记录,避免将旧运行结果当成本次 MariaDB 联测。