草帽路飞UU 发表于 2017-6-26 11:52:58

合服测试

前言
合服,为什么要合服,当一个服务器数据下滑后,其一为了节省服务器硬件成本就需要合服;其二是玩家需要一定的热度环境。
合服最好的做法是数据结构等上线前都设计好,也准备好,尤其是账号角色重名处理等,这里会分几段讲。
没啥时间写,另外在研究新东西,这个也是拿我之前自己博客里改的。

内网预演

1)提前在内网进行一些业务的预演。2个服的数据准备,不同的服务地址来区分,信息方面比如等级or积分排行榜信息,pvp数据,pve关卡排名等(需要check本次合服到上次合服是否有信息添加,来源是数据库表)。<--根据实际游戏业务来
2)在内网环境,数据库建立起码2个库,从库到主库,执行脚本合并。
3)预演几次后,如果已经成熟的1次就可以,脚本失败后,再次执行是否数据出现异常。
4)提前准备好外网所需要用到的区服账号,记录roleid,区服信息,渠道账号、密码。
5)数据检查字段名数据正确,不为空;删除账号规则变更后脚本修改,没有变更则需要改时间戳

合服逻辑操作

1)归集合并的游戏库到同一个mysql服务器,假设是1,2,3三个区合并, 数据库名字分别是gm1,gm2,gm3.
2)建立和现有游戏库相同结构的空库,空表. (检测每个库表结构一致)该库作为合并后的新库.
3)脚本.sql默认会去合并名"sr"的库, gd1的库名改为sr,执行脚本合并到新库.
4) gm2的库名改为sr,然后也是这样合并.依次累推。合并成功1个区的库后需要检查1次。

脚本.sql

delete from db_表;
replace into db_表(字段1, 字段2, 字段3,字段4,…)
select 字段1, 字段2, 字段3,字段4,…;
测试需要提前配置账号,检查哪些表,验证delete from 是否干净(内网就是1),外网预登陆也要检查次)
容易出现错误的地方:
合服后,发送奖励礼包,不能还是以之前服务器数量来发,以一组区服来发。要不会合并后的服务器,每个人可以多领到合并前服务器数量的礼包。
合并前没有检查是否之前的脏数据,内网测试量较少不一定发现,需要区域比对下,如果有这类解决不难,会影响维护时间
删除账号业务,时间戳甚至错误。
带附件的系统邮件和带交易缓存的交易行等,合区前会强制物品下到玩家空间内,合服这部分要重置后,才可以上架交易。

jingzizx 发表于 2017-6-26 13:11:55

游戏测试考虑还是比较多啊

八戒你干嘛 发表于 2017-6-26 14:35:34

还没经历过一款成功的上线游戏项目,这些先储备着

悠悠小仙仙 发表于 2017-6-26 14:36:21

比较容易出现BUG的地方: 跨服的操作 ,比如跨服公会战之类的,因为我们这合服的话,server1和server2合并到一个server1上,那么server2的 id会变,所以重点是server2上的数据 ,比如公会战、邀请好友之类的 容易出问题

草帽路飞UU 发表于 2017-6-26 14:37:19

悠悠小仙仙 发表于 2017-6-26 14:36
比较容易出现BUG的地方: 跨服的操作 ,比如跨服公会战之类的,因为我们这合服的话,server1和server2合并 ...

是啊,所以在合区前,版本内容要详细测清楚,带跨服的要清空,主从合的顺序要检查,先要准备每个区1个账号,合完后在登陆。至于邀请好友是指什么问题哇,交流下。
页: [1]
查看完整版本: 合服测试