备份文件在仓库里躺了一年,真到回档时发现恢复出来的是坏档,这种事故没有任何技术手段能事后补救。备份恢复演练每月跑一次:随机抽三个时间点恢复到演练库,抽样 200 个角色比对三类数据,差异必须为零,演练不过备份等于没有。演练的另一层价值是让回档流程保持熟练,真事故时整套动作是肌肉记忆而不是临场摸索。
演练前从在线与存档名册混合抽样 200 个角色,逐个记录等级基线,名单与基线打包成比对清单交给演练库。
local pool = { "裁决收藏家", "沙城老李", "祖玛猎人" }
local function buildPlan(sampleN)
local plan = {}
for i = 1, math.min(sampleN, #pool) do
local nm = pool[i]
local p = getplayerbyname(nm)
if p and isplayer(p) then
plan[nm] = getbaseinfo(p, 6)
end
end
return plan
end
演练库导出的恢复数据回传后逐名比对等级,任何一个差异都算演练失败,报告按邮件送达运维与经理双通道。
local function compare(plan, restoreTab)
local bad, total = 0, 0
for nm, lv in pairs(plan) do
total = total + 1
if (restoreTab[nm] or -1) ~= lv then
bad = bad + 1
end
end
if bad > 0 then
sendmail("#运维老张", 912, "恢复演练差异报告",
"抽样 " .. total .. " 个,差异 " .. bad .. " 个,演练判不通过", "")
end
return bad
end
演练流程验证抽样、恢复、比对、报告四段衔接;故意篡改演练库一条数据核对差异报告生效;演练库用后清场,防止演练数据被当成生产数据引用。三个随机时间点用固定种子生成并留档,下月演练可复现上月的抽样集。监控每次演练的差异个数与耗时,差异恒为零、耗时稳定在一小时内为健康基线。
抽样名单最初只从在线玩家取,离线角色的存档路径从来没被演练覆盖过,某次坏档恰恰坏在离线数据段,名单改成在线与存档名册混合抽样。演练库与线上引擎版本差了一个小版本,字段格式不同制造出两百条假差异,演练库版本锁定与线上同步升级。比对只看等级太粗,等级相同的存档可能丢了行会金库,比对字段扩成等级、行会、金库三项。演练库清场靠人工,有一台演练机被人当测试服用了两周,清场动作改成演练脚本收尾自动执行。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 装备回收商 NPC 每天按评分收购玩家的装备,裁决之杖、骨玉权杖按攻击、持久加权打分,榜上只要前五名。数…
实战应用:用在哪里 沙巴克攻城是全服行会战的最高舞台:攻方砸开城门、抢占皇宫,守方依托城墙与复活点反打。规则设计的关键是节奏…
实战应用:用在哪里 影分身玩法给法师职业补上生存短板:危急时刻召唤四个影分身分担仇恨,敌人需要在六格范围内分辨真身,猜错就浪…
实战应用:用在哪里 组队邀请、行会宣战这类关键信令丢了没有兜底,玩家只能反复手点,高峰期体验很差。重试机制给信令加确认回执:…
实战应用:用在哪里 新资料片上线首日预约量常是日常十倍,一口气全开会让数据库与登录网关同时过载。滚动开区把开区动作排成队列:…
实战应用:用在哪里 百人同屏的沙巴克外围战场,每个玩家每秒跑动会触发数次位置更新,全部即时下发时广播量随人数平方增长,网关先…