84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
打算用一个php脚本完成合服功能,目前数据的备份、过滤以及玩家id的更新已经都完成,就是数据导入时,一些表的主键是自增id,目前没有想到特别好的方案。请各位高手给我一些建议,如何能兼容性很好的解决这个问题?
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
既然会合一次,就会合第二次,建议直接一次到位改成UUID,方便以后再合服
先写一个[表,id,服务器]=>[UUID]的转换,然后先把原来的表全都按照UUID重新写一遍,然后让生产环境原来写一份的改成写两份(旧表和UUID新表),然后慢慢把读切换到新表上,最后旧表上只有写没有读了就可以丢掉了。这时候就无论怎么合服都丝般顺滑毫无风险了
曾经帮助运帷大哥合服,遇到同样的问题。我们的解决方案是写了一个小程序 先SELECT出来,再INSERT进去。
A服的最大自增ID是100的话,就把B服的所有自增ID增加100。
没实践过,以前在哪看到过这种方案,目测是可行的,实际上的情况不太清楚。
仅供参考。。
最简单的方案是以大区id作为前缀。或者是以物理服务器的id作为前缀,每个数据库的id肯定是不同的。还有一种方案,是根据服务器建表,把不同服务器的玩家数据打散到不同的表中(虽然是在一个数据库里),虽然管理上比较麻烦,但是数据不会冲突
不使用自增型数字id作为主键了,直接使用uuid作为主键。不管你是合服还是做分布式,都是最简单的方式。
既然会合一次,就会合第二次,建议直接一次到位改成UUID,方便以后再合服
先写一个[表,id,服务器]=>[UUID]的转换,然后先把原来的表全都按照UUID重新写一遍,然后让生产环境原来写一份的改成写两份(旧表和UUID新表),然后慢慢把读切换到新表上,最后旧表上只有写没有读了就可以丢掉了。这时候就无论怎么合服都丝般顺滑毫无风险了
曾经帮助运帷大哥合服,遇到同样的问题。我们的解决方案是写了一个小程序 先SELECT出来,再INSERT进去。
A服的最大自增ID是100的话,就把B服的所有自增ID增加100。
没实践过,以前在哪看到过这种方案,目测是可行的,实际上的情况不太清楚。
仅供参考。。
最简单的方案是以大区id作为前缀。
或者是以物理服务器的id作为前缀,每个数据库的id肯定是不同的。
还有一种方案,是根据服务器建表,把不同服务器的玩家数据打散到不同的表中(虽然是在一个数据库里),虽然管理上比较麻烦,但是数据不会冲突
不使用自增型数字id作为主键了,直接使用uuid作为主键。不管你是合服还是做分布式,都是最简单的方式。