游戏数据库回档功能
游戏快接近上线了,开始做游戏回档功能了,做了一些总结与大家进行交流。
数据库(MariaDB 10.5)采用异地主从数据库模式,备份数据以从数据库作为数据源,近最大可能避免对正常的业务造成干扰。
数据备份频率
- 两天内的数据每个小时做一次备份
- 2天~7天的数据以每天的23点59分作为数据备份时间
- 7天之后的数据不再保留
数据库文件存储方式
- 备份文件将打包成gz压缩文件,通过自写的程序将文件传入云服务商OSS的私库中。
- 备份程序定时监测OSS上的数据文件是否过期,对过期的数据文件进行删除。
回档逻辑流程
- 后台管理平台发送指令给游戏服务器
- 游戏服务端收到回档指令,关闭服务器,在关闭完成之前发送消息指令给回档程序进行回档。
- 回档程序等待游戏服务端进程关闭,回档程序对指定游戏服务端数据库进行备份并上传备份文件到OSS;
- 回档程序从OSS拉取指定时间的数据库文件,并将该游戏服务端原数据改名,并导入历史数据文件;
- 回档程序启动游戏服务端
- 后台管理平台收到回档完成的异步通知
- 运营人员检查回档情况
- 运营人员通过后台管理平台确认回档完成,回档程序删除原数据库,并打开外部登陆端口
遗留问题
- 全量备份仅限于数据文件小的情况,我们1万人的全量数据打包后在100MB左右,压力不是太大。
- 回档程序和备份程序需要做崩溃等容错处理。
- 暂时还没想到,以后补充。
欢迎大家留言交流,谢谢