Heim Datenbank MySQL-Tutorial 关于游戏合服的资料

关于游戏合服的资料

Jun 07, 2016 pm 05:42 PM
um 游戏 Material

原网址: 我们的游戏上个星期经历了第一个数据合服。简单说,就是把2个数据库合并在一个数据库,让2个服务器的玩家一起玩。 过程简直是惊心动魄,最终还是安全完成任务。 本文就分享下合服的各种技术细节。 需求说明: -------------------------- 要把2个服

原网址:  

我们的游戏上个星期经历了第一个数据合服。简单说,香港空间,就是把2个数据库合并在一个数据库,让2个服务器的玩家一起玩。

过程简直是惊心动魄,最终还是安全完成任务。

本文就分享下合服的各种技术细节。

 

需求说明:

--------------------------

要把2个服务器玩家合并,首先外部对玩家而言是不变的,包括了登陆游戏的URL,游戏中的角色等;但是物理上,确是一台服务器一个数据库。

简单的说,一服的玩家用一服入口登陆,玩一服账号;二服的玩家用二服入口登陆,玩二服账号;

即使我只有1个账号,但是不同入口登陆,依然能使用不同游戏账号进行游戏。

 

数据库设计

--------------------------

要实现合服,首先表主键必须全部使用代码生成,并用服务器编码作为前缀。

例如我的一服表主键就是 001GMxxxxxxxxxxxxxxxx。 二服就是002GMxxxxxxxxxxxxxxxx。这样合服的时候,就不需要对数据进行预处理了。直接导入。

 

其次,使用平台用户使用一个账号,登陆不同服,要获得不同账号,因此在游戏的玩家表,要通过服务器编码进行区分,例如:

Usr_Profile

:usercode 主键

:username 平台账号

:servercode 服务器编码

这样,根据传入的username+servercode就知道应该获取什么服务器账号了。

 

游戏中,玩家通过昵称识别对方,因此合服的时候,必须对昵称进行修正,防止重复,因此所有昵称都要添加后缀。我们最终方案就是添加 .x服 这个后缀。

 

有了这3方面保证,合服就变得简单了。(简单个屁。。。)

 

合服流程

--------------------------------

1. 数据库分析准备

做事前都要先准备。因此首先要对数据库表结构进行分析,判断什么表结构需要合服,什么可以忽略。

我们游戏有60多张表,其中仅仅27张表需要合并,其他的都是配置表、日志表,都不需要合并。

 

2. 数据备份

这部不用说了,首先要对数据库全备份,防止操作失误,导致数据丢失了。一般就在本机MySQL新建一个backup数据库, 然后使用bult insert进行复制,速度很快。当然,备份的时候,对于体积很大的日志表,可以跳过了。

 

3. 数据删减

这部分很重要,一个网页游戏有接近80%的账号是死号,因此合服的时候必须先过滤掉死号。规则如下:等级小于10级、没有充值、最近登录时间大于30天的,全部清除。

然后,就是上文提到的27张表中,与被淘汰账号相关的数据,也清除。

这个清除量实际上非常大的,我有张数据表接近30W数据,结果一清就清了20W,超级舒服。

 

4. 数据检测

这部分也很重要,因为我们第二个服务器当时配置错了,没有使用服务器编码作为主键,导致与一服数据存在冲突的可能,因此需要对27张表的主键进行检测,判断前缀是否002,如果不是,就要进行手动修正了。

 

5. 数据修正

这块主要针对存在主键冲突的数据进行修正,一般用SQL即可,大概耗时30~60分钟,我就用个SQL,例如 update xxx set pk = concat('001',substring(pk,4)),进行数据修复。

当然,修复前,需要对表结构进行分析,不能出现遗漏,香港服务器,特别是外键关联。

 

6. 数据导出

不要尝试使用代码等方式进行合服,速度太慢了。我使用SQLYog,对所有表进行导出,其中插入配置为Bult Insert,导入速度非常快。

 

7. 数据导入测试

最终导入的时候,要测试,看看导出的SQL是否存在问题。

 

8. 导入。

这部完成,合服成功了。

 

貌似非常简单的步骤,实际上却问题多多。接下来我将说明实际部署中存在的陷阱。

 

 

合服 生存大考验

------------------------------

1. 合服的表结构不匹配

当时我合服的时候,发现表总是导不进去,提示主键重复。不可能的啊。。从一个不重复主键的表导入会提示重复?

检查了很久发现,服1的主键是21位,服2的主键是22位,结果导入的时候22位的主键自动省略了最后一位,自然会产生了主键重复。。。

 

2. SQLYog该死的bug

SQLYog改表结构竟然和实际表结构不对应。我明明修改了char(100),可是数据库一看,还是char(21). 最终只好用命令行修改。。

嗨。关键时候,这些工具总是找麻烦。

 

3.  SQLYog导入出错竟然没有提示

也是该死的工具问题,最后我使用navicat配合SQLYog进行操作。

 

4. 部分动态生成的数据,无法批量导入

例如竞技场排名,不允许出现相同排名。所以这块数据需要在玩家登陆的时候自动生成。此类型数据都是动态生成的,无法通过批量修正,都需要通过游戏逻辑进行补全。

因此,合服的时候,这块数据将不参与合并。

 

合服历险记

------------------------------

说了这么多理论知识,接下来就说说那天我合服的经过。本来在测试机上一切顺利的,不到2个小时就合并了。可是真正操作起来, 却用了8个小时。。。。

 

开始还顺利,3个多小时就做好了数据备份、删除、修正。可是导入的时候发现总是提示主键冲突,于是不断找原因,1个小时过去,才发现原来表结构不匹配。晕死。

 

接下来导完数据,4个小时过去了,开服。一运行,玩家就投诉了,说中文乱码、丢失装备、丢失武将。

 

丢失装备、武将问题,我又花了1个小时检查,原来是潜在部分主键仍然丢失最后1位,导致找不到。这个时候,我不能停机,因此我对比2个数据库有差异的表,生成一堆update的SQL,然后手动操作。可是发现SQL多了,SQLYog会卡死,游戏也会卡死。我只好开了10多个SQLYog,采用并行方法,把SQL拆分成50一组,进行手动操作。。累死了。

 

对于武将名字乱码,是当时生成SQL文件的时候,编码格式错误了。可是武将数据接近有3W条,不可能进行手动更新了,因此我写了个更新程序,进行后台更新。这块就花了1小时。

 

终于游戏Exception少了,本来可以歇口气了,结果运营说,玩家充值失败!我检查代码,原来充值接口没有使用servercode去区分玩家账号,又是疏忽。

 

第二天,运营又投诉说,商会采集资源失败,回去检查,才发现原来漏了对账号中商会主键进行修正,又是疏忽。

 

小结

----------------------------

本来已经提前预演了2天,没有问题,可是上到战场还是错漏百出。

如果准备过于详细,会导致发展缓慢。如果准备不充分,又会很多问题。这个是个进退两难的情况。最终,我偏向了迅速准备,快速修正的方案。

毕竟,预演的时候找不到的问题,网站空间,给再多的时间也不一定找到。还不如直接上战场,随机应变。

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie hoch sollte die CPU-Auslastung beim Spielen sein? Wie hoch sollte die CPU-Auslastung beim Spielen sein? Feb 19, 2024 am 11:21 AM

Es kommt häufig vor, dass Spiele Ihren Computer verlangsamen, weil sie viele Ressourcen verbrauchen. Es ist wichtig, die CPU-Auslastung beim Spielen zu kennen, um eine Überlastung zu vermeiden. Daher ist es wichtig, die angemessene CPU-Auslastung im Auge zu behalten, um ein reibungsloses Spielerlebnis zu gewährleisten. In diesem Artikel schauen wir uns die angemessene CPU-Auslastung an, die Sie erreichen sollten, während Ihr Spiel läuft. CPU-Auslastung beim Gaming Die CPU-Auslastung ist ein wichtiger Indikator für die Prozessorauslastung und hängt von den Leistungsspezifikationen der CPU ab. Leistungsstärkere CPUs haben im Allgemeinen eine höhere Auslastung. Eine CPU mit mehr Kernen und Threads kann die Gesamtleistung Ihres Systems verbessern. Die Multi-Threading-Unterstützung hilft dabei, das volle Potenzial Ihrer CPU auszuschöpfen. In Spielen hängt die CPU-Auslastung von der Prozessorauslastung ab, was sich auf das Spiel auswirken kann

NAT Boost vs. Qos für Spiele; was ist besser? NAT Boost vs. Qos für Spiele; was ist besser? Feb 19, 2024 pm 07:00 PM

In der heutigen Situation, in der fast alle Spiele online stattfinden, ist es nicht ratsam, die Optimierung des Heimnetzwerks außer Acht zu lassen. Fast alle Router sind mit NATBoost- und QoS-Funktionen ausgestattet, die das Spielerlebnis der Benutzer verbessern sollen. In diesem Artikel werden die Definition, Vor- und Nachteile von NATBoost und QoS untersucht. NATBoost vs. Qos für Spiele; welches ist besser? NATBoost, auch bekannt als Network Address Translation Boost, ist eine in Router integrierte Funktion, die deren Leistung verbessert. Dies ist besonders wichtig für Spiele, da es dazu beiträgt, die Netzwerklatenz zu reduzieren, also die Zeit, die für die Datenübertragung zwischen dem Spielgerät und dem Server benötigt wird. Durch die Optimierung der Datenverarbeitungsmethode innerhalb des Routers erreicht NATBoost eine schnellere Datenverarbeitungsgeschwindigkeit und eine geringere Latenz und verändert so die

Nvgpucomp64.dll führt zum Absturz von Windows-PC-Spielen; Nvgpucomp64.dll führt zum Absturz von Windows-PC-Spielen; Mar 26, 2024 am 08:20 AM

Wenn Nvgpucomp64.dll dazu führt, dass Ihr Spiel häufig abstürzt, können Ihnen die hier bereitgestellten Lösungen helfen. Dieses Problem wird normalerweise durch veraltete oder beschädigte Grafikkartentreiber, beschädigte Spieledateien usw. verursacht. Das Beheben dieser Probleme kann Ihnen dabei helfen, Spielabstürze zu beheben. Die Datei Nvgpucomp64.dll ist mit NVIDIA-Grafikkarten verknüpft. Wenn diese Datei abstürzt, stürzt auch Ihr Spiel ab. Dies geschieht normalerweise in Spielen wie LordsoftheFallen, LiesofP, RocketLeague und ApexLegends. Nvgpucomp64.dll stürzt Spiele auf Windows-PCs ab, wenn N

NVIDIA führt RTX HDR-Funktion ein: Nicht unterstützte Spiele nutzen KI-Filter, um wunderschöne visuelle HDR-Effekte zu erzielen NVIDIA führt RTX HDR-Funktion ein: Nicht unterstützte Spiele nutzen KI-Filter, um wunderschöne visuelle HDR-Effekte zu erzielen Feb 24, 2024 pm 06:37 PM

Laut Nachrichten dieser Website vom 23. Februar hat NVIDIA gestern Abend die NVIDIA‏‏-Anwendung aktualisiert und gestartet und bietet Spielern ein neues einheitliches GPU-Kontrollzentrum, das es Spielern ermöglicht, wunderbare Momente durch das leistungsstarke Aufzeichnungstool des In-Game-Floating festzuhalten Fenster. In diesem Update hat NVIDIA auch die RTXHDR-Funktion eingeführt. Die offizielle Einführung ist wie folgt beigefügt: RTXHDR ist ein neuer KI-gestützter Freestyle-Filter, der die großartigen visuellen Effekte von High Dynamic Range (HDR) nahtlos in Spiele einführen kann, die dies ursprünglich nicht tun unterstützt HDR. Sie benötigen lediglich einen HDR-kompatiblen Monitor, um diese Funktion mit einer Vielzahl von DirectX- und Vulkan-basierten Spielen nutzen zu können. Nachdem der Player die RTXHDR-Funktion aktiviert hat, läuft das Spiel auch dann, wenn es HD nicht unterstützt

Einführung in das Herunterladen und Installieren des Superpeople-Spiels Einführung in das Herunterladen und Installieren des Superpeople-Spiels Mar 30, 2024 pm 04:01 PM

Das Superpeople-Spiel kann über den Steam-Client heruntergeladen werden. Die Größe dieses Spiels beträgt normalerweise eineinhalb Stunden. Hier ist ein spezielles Download- und Installations-Tutorial. Neue Methode zur Beantragung globaler geschlossener Tests 1) Suchen Sie nach „SUPERPEOPLE“ im Steam-Store (Steam-Client-Download) 2) Klicken Sie unten auf der „SUPERPEOPLE“-Store-Seite auf „Zugriff auf geschlossene SUPERPEOPLE-Tests anfordern“ 3) Nachdem Sie auf geklickt haben Schaltfläche „Zugriff anfordern“. Das Spiel „SUPERPEOPLECBT“ kann in der Steam-Bibliothek bestätigt werden. 4) Klicken Sie auf die Schaltfläche „Installieren“ in „SUPERPEOPLECBT“ und laden Sie es herunter

Wo ist Spider Solitaire in Win11? Wie spielt man das Spider Solitaire-Spiel in Win11? Wo ist Spider Solitaire in Win11? Wie spielt man das Spider Solitaire-Spiel in Win11? Mar 01, 2024 am 11:37 AM

Freunde, die genug AAA-Meisterwerke und Handyspiele gespielt haben, möchten Sie die Computerspiele Ihrer Kindheit noch einmal erleben? Dann lasst uns gemeinsam nach Spider Solitaire in Windows 11 suchen! Klicken Sie auf der Benutzeroberfläche auf das Startmenü und dann auf die Schaltfläche „Alle Apps“. Suchen und wählen Sie „MicrosoftSolitaireCollection“, die Spieleanwendung der Solitaire-Serie von Microsoft. Nachdem der Ladevorgang abgeschlossen ist, rufen Sie die Auswahloberfläche auf und suchen Sie nach „Spider Solitaire“. Wählen Sie „Spider Solitaire“. Obwohl sich die Benutzeroberfläche geringfügig geändert hat, ist sie immer noch dieselbe wie zuvor

Thrustmaster-Bedienfeld funktioniert nicht oder wird nicht richtig angezeigt [Behoben] Thrustmaster-Bedienfeld funktioniert nicht oder wird nicht richtig angezeigt [Behoben] Feb 19, 2024 am 10:45 AM

Thrustmaster ist ein Unternehmen, das sich auf die Herstellung von Gaming-Rädern und anderem Gaming-Zubehör spezialisiert hat. Seine Lenkradprodukte erfreuen sich in der Gaming-Community großer Beliebtheit. Thrustmaster-Radeinstellungen können über das Thrustmaster-Bedienfeld installiert und angepasst werden. Wenn Sie Probleme damit haben, dass das Bedienfeld nicht funktioniert oder nicht angezeigt wird, kann dies Ihr Spielerlebnis beeinträchtigen. Daher müssen Sie in diesem Fall überprüfen, ob die Verbindung normal ist und sicherstellen, dass der Softwaretreiber korrekt installiert und auf die neueste Version aktualisiert ist. Darüber hinaus können Sie auch versuchen, das Gerät neu zu starten oder das Gerät erneut anzuschließen, um mögliche Fehler zu beheben. Wenn Sie auf Probleme stoßen, können Sie die offizielle Website von Thrustmaster besuchen oder sich für weitere Hilfe an den Kundendienst wenden. So greifen Sie auf Thrustma zu

ASUS veröffentlicht BIOS-Update zur Verbesserung der Spielestabilität auf Intels Prozessoren der 13./14. Generation ASUS veröffentlicht BIOS-Update zur Verbesserung der Spielestabilität auf Intels Prozessoren der 13./14. Generation Apr 20, 2024 pm 05:01 PM

Laut Nachrichten dieser Website vom 20. April hat ASUS kürzlich ein BIOS-Update veröffentlicht, das Instabilitäten wie Abstürze beim Ausführen von Spielen auf Intel-Prozessoren der 13./14. Generation verbessert. Diese Seite berichtete zuvor, dass Spieler Probleme gemeldet hätten, unter anderem, dass beim Ausführen der PC-Demoversion von Bandai Namcos Kampfspiel „Tekken 8“ das System abstürzte und eine Fehlermeldung über unzureichenden Speicher ausgab, selbst wenn der Computer über ausreichend Arbeits- und Videospeicher verfügte. Ähnliche Absturzprobleme traten auch in vielen Spielen wie „Battlefield 2042“, „Remnant 2“, „Fortnite“, „Lord of the Fallen“, „Hogwarts Legacy“ und „The Finals“ auf. RAD veröffentlichte im Februar dieses Jahres einen langen Artikel, in dem erklärt wurde, dass das Spielabsturzproblem eine Kombination aus BIOS-Einstellungen, hoher Taktfrequenz und hohem Stromverbrauch von Intel-Prozessoren ist.

See all articles