设为首页收藏本站
  • 官方微信
    lmkj_wx 微信公众号 添加方式:
    1:扫描左侧二维码
  • 手机访问
    lmkj_sj
  •  找回密码
     立即注册

    QQ登录

    只需一步,快速开始

    查看: 22|回复: 0

    介绍一下传奇版本服务端的数据库备份和恢复方法

    [复制链接]
    avatar
    • 打卡等级:魔龙套勇士
    • 打卡总天数:130
    • 打卡月天数:23
    • 打卡总奖励:14868
    • 最近打卡:2025-08-23 00:38:01

    7082

    主题

    150

    回帖

    8648

    积分

    管理员

    本站站长

    积分
    8648
    online_admin 发表于 2025-7-17 17:32:07 | 显示全部楼层 |阅读模式
    以下是传奇服务端数据库备份与恢复的核心方法,结合主流 GOM 引擎特性和行业最佳实践,提供从基础操作到高级修复的全流程指南:
    一、核心数据库文件定位
    1. 关键数据存储路径
    角色数据:DBServer\FDB\Hum.DB(角色装备 / 等级)、DBServer\FDB\Mir.DB(角色扩展属性)
    账号数据:LoginSrv\IdDB\ID.DB(账号密码 / 注册信息)
    行会数据:Mir200\Envir\Castle\SabukW.txt(沙巴克占领记录)、GuildBase\Guilds(行会成员 / 仓库)
    日志数据:DBServer\Log\TradeLog_*.txt(交易记录)、M2Server\Log\GameLog.txt(游戏行为日志)
    2. 引擎版本差异
    GOM 引擎:默认使用 DBC2000 管理本地数据库,需通过控制面板配置数据库别名(如 HeroDB)指向Mud2\DB目录
    SQL Server 版本:数据存储于MudDB等数据库,需通过 SSMS 或 Navicat 进行备份
    二、基础备份方法
    1. 手动备份(DBC2000 环境)
    全量备份:
    停止服务端程序(M2Server、DBServer 等)
    复制以下目录至安全位置:
    DBServer\FDB(角色数据)
    LoginSrv\IdDB(账号数据)
    Mir200\Envir\Castle(行会数据)
    GuildBase(行会仓库)
    建议使用 7-Zip 压缩并加密,命名规则:Backup_20250717_Full.7z
    增量备份:
    每日复制DBServer\FDB中修改时间在 24 小时内的文件
    结合DBServer\Log\UpdateLog.txt确认数据变更范围
    2. 自动化备份脚本
    Windows 计划任务:
    bat
    @echo off
    REM 全量备份
    robocopy "D:\mirserver\DBServer\FDB" "D:\Backup\FDB\%date:~0,4%-%date:~5,2%-%date:~8,2%" /MIR /Z
    robocopy "D:\mirserver\LoginSrv\IdDB" "D:\Backup\IdDB\%date:~0,4%-%date:~5,2%-%date:~8,2%" /MIR /Z
    REM 清理7天前备份
    forfiles /p "D:\Backup\FDB" /s /m *.* /d -7 /c "cmd /c del @path"

    将脚本保存为AutoBackup.bat,通过计划任务每日凌晨 3 点执行
    SQL Server 作业(适用于 SQL 版本):
    在 SSMS 中创建维护计划
    配置全量备份(每周日)和事务日志备份(每小时)
    存储路径建议使用 RAID 10 阵列或云存储(如 AWS S3)
    三、恢复操作流程
    1. 常规恢复(DBC2000)
    角色 / 账号恢复:
    停止服务端
    删除目标目录下的现有文件(如DBServer\FDB\Hum.DB)
    覆盖备份文件并重启服务端
    使用@moninfo命令验证怪物属性,@CheckItem检查装备数据完整性
    行会数据恢复:
    直接替换Mir200\Envir\Castle\SabukW.txt和GuildBase\Guilds目录文件,需重启 M2Server 生效
    2. 数据库损坏修复
    日志文件丢失:
    停止 SQL Server 服务
    复制.mdf文件至新目录
    在 SSMS 中执行:
    sql
    CREATE DATABASE NewDB ON (FILENAME='D:\Backup\MudDB.mdf') FOR ATTACH_REBUILD_LOG

    使用 DBCC CHECKDB 修复一致性错误
    表结构异常:
    通过 DBC2000 的 “修复数据库” 功能重建索引
    对比备份文件与当前文件的二进制差异,使用 UltraEdit 修复损坏字段
    3. 版本回退
    引擎升级失败:
    恢复!Setup.txt和!serverinfo.txt的历史备份
    替换M2Server.exe等核心程序为旧版本
    重新编译脚本文件(如 QFunction-0.txt)适配旧引擎接口
    四、高级恢复策略
    1. 跨平台迁移
    DBC2000 转 SQL Server:
    使用 Navicat 的数据传输功能导入表结构
    编写 ETL 脚本转换数据格式(如将 Paradox 的 BCD 类型转为 SQL 的 DECIMAL)
    配置!Setup.txt中的数据库连接参数:
    ini
    [GameSetup]
    SQLDB=MudDB
    SQLUSER=sa
    SQLPASS=YourPassword

    测试存储过程和触发器兼容性
    2. 云备份方案
    七牛云存储:
    安装七牛云 CLI 工具
    编写同步脚本:
    bash
    qshell qupload --bucket legend-backup --src D:\Backup\FDB\*.db

    结合云函数实现异地容灾
    3. 增量日志恢复(SQL Server)
    事务日志应用:
    还原全量备份:
    sql
    RESTORE DATABASE MudDB FROM DISK='D:\Backup\MudDB.bak' WITH NORECOVERY

    按时间顺序还原事务日志:
    sql
    RESTORE LOG MudDB FROM DISK='D:\Backup\MudDB_Log_20250717_01.trn' WITH NORECOVERY
    RESTORE LOG MudDB FROM DISK='D:\Backup\MudDB_Log_20250717_02.trn' WITH RECOVERY

    验证数据一致性
    五、常见问题排查
    备份文件不可用:
    检查压缩包 CRC 校验值是否匹配原文件
    使用 DBC2000 的 “导入 / 导出” 功能尝试修复损坏的 DB 文件
    恢复后数据缺失:
    对比DBServer\Log\UpdateLog.txt中的操作记录
    使用@RestoreItem命令手动回补丢失装备
    行会数据异常:
    检查SabukW.txt中的OWNERGUILD字段是否正确
    修复GuildBase\Guilds目录下的成员列表文件权限
    六、安全与合规
    权限控制:
    限制只有管理员可访问备份目录
    在 SQL Server 中启用加密连接(TLS 1.2)
    定期修改数据库账号密码(如每季度一次)
    合规审计:
    保留至少 6 个月的备份文件
    记录每次备份 / 恢复操作的时间、人员、原因
    使用 Elasticsearch+Kibana 构建日志审计系统

    通过以上方法,可构建覆盖日常运维、灾难恢复、版本迁移的全生命周期数据管理体系。建议每月进行一次恢复演练,模拟服务器崩溃场景以验证备份策略的有效性,确保在突发情况下可快速恢复服务。实际操作中需根据引擎版本(如 GOM 2.0 与 3.0 的差异)和数据库类型(DBC2000/SQL Server)灵活调整步骤。

    您需要登录后才可以回帖 登录 | 立即注册 qq_login

    本版积分规则

    QQArchiver 手机版 小黑屋 39传奇素材网 ( 蜀ICP备2022016510号-3 )

    快速回复 快速发帖 返回顶部 返回列表