游戏数据库回档功能

游戏快接近上线了,开始做游戏回档功能了,做了一些总结与大家进行交流。
数据库(MariaDB 10.5)采用异地主从数据库模式,备份数据以从数据库作为数据源,近最大可能避免对正常的业务造成干扰。

数据备份频率

  1. 两天内的数据每个小时做一次备份
  2. 2天~7天的数据以每天的23点59分作为数据备份时间
  3. 7天之后的数据不再保留

数据库文件存储方式

  1. 备份文件将打包成gz压缩文件,通过自写的程序将文件传入云服务商OSS的私库中。
  2. 备份程序定时监测OSS上的数据文件是否过期,对过期的数据文件进行删除。

回档逻辑流程

  1. 后台管理平台发送指令给游戏服务器
  2. 游戏服务端收到回档指令,关闭服务器,在关闭完成之前发送消息指令给回档程序进行回档。
  3. 回档程序等待游戏服务端进程关闭,回档程序对指定游戏服务端数据库进行备份并上传备份文件到OSS;
  4. 回档程序从OSS拉取指定时间的数据库文件,并将该游戏服务端原数据改名,并导入历史数据文件;
  5. 回档程序启动游戏服务端
  6. 后台管理平台收到回档完成的异步通知
  7. 运营人员检查回档情况
  8. 运营人员通过后台管理平台确认回档完成,回档程序删除原数据库,并打开外部登陆端口

遗留问题

  1. 全量备份仅限于数据文件小的情况,我们1万人的全量数据打包后在100MB左右,压力不是太大。
  2. 回档程序和备份程序需要做崩溃等容错处理。
  3. 暂时还没想到,以后补充。

欢迎大家留言交流,谢谢

扫码关注微信公众号一起交流