游戏服务器宕机数据恢复

0.概述:

一般情况下,为了提高游戏速度,在线玩家的数据都会缓存在内存中。如果有数据更新的时候,只更新内存中的缓存数据,而不是直接更新数据库。缓存数据会定时写回到数据库中(比如:5分钟写入一次)。 当服务器宕机后,从上次更新数据库到宕机前的所有数据更新都将丢失,即所谓的回档。这部分数据永远也找不回来了,通常都是服务器重启后给予所有玩家一定的补偿。

1.引子:

MySQL在对数据表内容进行更新的时候,也不是直接更新数据表本身的数据,而是先写入日志,然后更新数据表本身的数据。日志文件由于是对文件的顺序追加,所以速度很快。但是MySQL的数据更新因为是对文件的随机访问,速度自然会比较慢。这种机制可以保证MySQL在宕机后可以通过日志进行数据恢复。

2.游戏服务器宕机恢复:

游戏服务器缓存的玩家数据一般都是每几分钟写入数据库一次。如果这里能够借鉴MySQL那种设计,在玩家数据每次更新的时候都先写入更新日志,然后更新缓存数据,都执行成功后回复客户端消息。这样的话玩家数据丢失只包含了未来得及写日志的部分,这在很大程度少减少了游戏的损失。目前我想到了两种实现的方式,都列举如下:

A.每次数据更新时将更新数据的操作转化为SQL直接保存到日志中,同时累加一个全局的日志号。每次定时将缓存数据同步到数据库时,都会将最新的日志号同步写入玩家数据库中。当发生宕机时把日志中的所有大于数据库中日志号以后的更新,重新执行一遍,数据就恢复了。

B.将改变数据状态的消息作为日志内容写入日志中,同时设定全局日志号。每次将玩家数据同步到数据库时,将全局日志号也同步到数据库中(每个玩家自己保存自己的全局日志号)。当发生宕机重启后,每个玩家登陆时检测是否有数据丢失,如果有数据丢失就从日志中读取宕机前未能保存的消息执行(注意:执行这些消息不能下发消息给客户端)。但是这种方式在重启后登入用户比较多时可能会卡,因为很多宕机用户需要恢复数据。优点时宕机后可以迅速重启并接受客户端请求。另一种方式是服务器重启后先将宕机未能保存的消息重新执行,将数据恢复到最新,然后再接受客户端请求。

时间: 2024-08-07 21:16:42

游戏服务器宕机数据恢复的相关文章

远离服务器宕机,腾讯WeTest正式推出服务器深度性能测试服务

WeTest 导读 随着城市发展趋向智慧化,不仅移动互联网应用正迅速融入出行.金融.医疗.娱乐等传统行业,跟随移动互联网成长起来的,还有用户对应用使用与消费的理性意识. 而在用户不断增加的同时,如何避免移动应用延迟.闪断.宕机等隐患给开发者们来了首当其冲的挑战.放眼国内外,每一年都会出现服务器宕机热门事件. 譬如在2017年间,微软Azure云服务.百度搜索移动端.新浪微博都曾由于用户访问量大以及其他不可控原因,出现系统故障.用户访问缓慢甚至无法使用的状况,不仅导致用户体验下降,造成用户流失,影

记一次服务器宕机处理过程

今天整理之前的运维资料,发现了自己整理的一次刀片服务器(运行的vmware虚拟化)事故处理流程,所有记录下,备忘. 一.事件处理过程 14:10 接到机房运维工程师通知,Opmanager监控系统上出现了多台服务器宕机现象,并且均为虚拟机. 14:12 通知机房运维工程师检查HP刀片服务器是否有告警,远程登录vcenter进行检查.远程查看发现ESX04(10.203.11.64)出现告警,告警信息如下图所示:  14:15 通知工程师ESX04出现告警,然后确认该刀片服务器是否存活,并进入机房

Domino服务器宕机后无法启动的解决办法——仅出现版本信息

 [背景] 用户domino邮件服务器宕机后,启动时仅出现几行版本信息: Lotus Domino (r) Server, Release 8.5.2, August 10, 2010 Copyright (c) IBMCorporation 1987, 2010. All Rights Reserved. 然后就停住了,等了1个多小时都没反应. [问题跟踪] 尝试过很多办法: 删除log.nsf 用复本替换names.nsf 重新覆盖安装domino 服务器还是无法启动. [解决办法] 服

Linux服务器宕机案例一则

案例环境 操作系统 :Oracle Linux Server release 5.7 64bit 虚拟机 硬件配置 : 物理机型号为DELL R720 资源配置 :RAM 8G Intel(R) Xeon(R) CPU E5-2690 8核 案例描述 早晨发现桂林那边一台Linux服务器(虚拟机)网络无法ping通,于是联系那边的系统管理员通过Lync共享桌面给我,通过他的电脑VMware vSphere Client登录后,发现在控制台亦无响应.无法登录.无法操作,输入操作无响应.也就是说系统

Web服务器宕机诊断方法

如果你正面临Web服务器宕机的问题,下面几招可以帮你解决燃眉之急并避免再次出现此类事故. 过去20年里,网络已成为文明的重要部分.从社会需求层次看,网络需求排名仅低于饮用水与可靠电力供应,网络为人类社会提供了更多的生产力,个人娱乐以及整体生活质量改善在过去半个世纪的发展,是以往任何时期都无法比拟的. 通过访问网站满足需求已经被许多现代用户接受:可以通过Web进行学术研究.个人致富和订披萨,用户可以在舒适的家里完成这一切操作.为了竞争,最有信誉的企业也投身到世界级网站建设中,一般说来,就是深入We

Nginx配置服务器宕机策略

Nginx解决服务器宕机问题,Nginx配置服务器宕机策略,如果服务器宕机,会找下一台机器进行访问        配置nginx.cfg配置文件,在映射拦截地址中加入代理地址响应方案 location / { #秒为单位 proxy_connect_timeout 1; proxy_send_timeout 1; proxy_read_timeout 1; proxy_pass http://backserver; index index.html index.htm; } 加入三行代码,在访问

nginx解决服务器宕机、解决跨域问题、配置防盗链、防止DDOS流量攻击

解决服务器宕机 配置nginx.cfg配置文件,在映射拦截地址中加入代理地址响应方案 location / { proxy_connect_timeout 1; proxy_send_timeout 1; proxy_read_timeout 1; proxy_pass http://backserver; index index.html index.htm; } proxy_connect_timeout 1; :连接超时1秒 proxy_send_timeout 1; :请求超时1秒 pr

日活上百万时,腾讯产品如何提前规避服务器宕机风险?

众所周知,优异的应用性能是良好用户体验的坚实基础,而服务器响应缓慢.卡顿.崩溃的产品,即便设计再精美也无法留住用户的心. 2017年2月28日,百度就和用户们开了一个不大不小的玩笑,从当天的20点54分到21点24分左右,百度搜索整整宕机了30分钟,众多网友戏言那30分钟成为了百度最有存在感的30分钟,但是从后来百度的公关文章中,可以看到其提到了"错过了大家上亿次的搜索请求",从这个体量来看,这无论如何都是一次很大的影响了. 无独有偶,今日头条也在今年的1月出现了宕机现象,系统超过30

由于某IP大频率提交评论导致服务器宕机

早上突然收到dnspod的宕机通知(好久没收到了,有点手足无措). 服务器在上午10:40时达到85%.uptime显示cpu利用率达到35.不宕才怪. 按照之前的经验,应该是触发一个特别耗CPU的处理,把php-cgi重启就能立马恢复,之后再查看日志. 重启后立刻ok. 查看日志,调出那一时刻的日志一条一条的过,重点放在反应时间上.正常的处理时间应该在1秒内,发现很多在几十秒以上的日志,慢慢回溯,发现了最开始异常的记录,是多个提交comment的日志. 发现一连串的来自同一IP的高频率的浏览文