HintergrundDa historische Geschäftsdaten in MySQL gespeichert werden, gibt es eine Operationsdatensatztabelle namens video_log. Immer wenn ein Benutzer einen Datensatz erstellt, aktualisiert oder ein Prüfer einen Datensatz überprüft, wird dem entsprechenden video_log ein Protokoll hinzugefügt. Diese Protokolltabelle hat nur Einfügungen. Wie Sie sich vorstellen können, entspricht ein Video mehreren Protokollen. Bei 100.000 Videos pro Tag bedeuten durchschnittlich 5 Protokolle für ein Video 500.000 Protokolle pro Tag, 50 * 30 = 15 Millionen Datensätze pro Monat und 1500 * 12 = 180 Millionen Datensätze pro Jahr. Derzeit sind mehr als 200 Millionen Daten online. Da das Protokoll selbst nicht auf das C-Ende ausgerichtet ist und zur Abfrage von Problemen verwendet wird, kann eine leichte Verzögerung toleriert werden. Da es jedoch mit der Zeit zwangsläufig immer langsamer wird und die Effizienz beeinträchtigt, wurde die Idee einer Transformation vorgeschlagen. Lösung 1: Alte Daten sichernDa das Protokoll selbst nicht die kritischsten Daten sind, aber auch eine hohe Echtzeitleistung erfordern (für Echtzeitabfrageprobleme), bestand die ursprüngliche Idee darin, den grundlegenden Kernspeicher unverändert zu lassen und die älteren Daten auszulagern. Schließlich ist die Wahrscheinlichkeit, dass plötzlich Betriebsaufzeichnungen von vor einem Jahr abgefragt werden, sehr gering. Wenn Sie sie plötzlich überprüfen müssen, können Sie offline gehen. In Bezug auf das Design benötigen wir lediglich ein geplantes Skript, um täglich gegen 4 Uhr morgens (außerhalb der Geschäftszeiten) Daten zu extrahieren. Die extrahierten Daten können an einen Offline-Speicher gemeldet werden (im Allgemeinen verfügen Unternehmen über Hive-basierte Data Warehouses usw.), sodass die Online-Videoprotokolldaten nicht weiter wachsen. Option 2: Tabelle teilenAuch das Aufteilen von Tabellen ist eine Lösung. Der Vorteil gegenüber Lösung 1 liegt darin, dass alle Daten in Echtzeit abgefragt werden können. Der Nachteil besteht darin, dass der Code angepasst werden muss.
Der nächste Schritt besteht darin, den Code zu transformieren und das Problem des Lesens und Schreibens neuer und alter Daten zu lösen.
Lösung 3: Migration zu tidb Die Nachteile von Option 2 liegen auf der Hand. Was tun nach 3 Jahren? Den Zähler weiter demontieren? Ich habe das Gefühl, dass da immer eine historische Schuld ist. Wir haben uns also für tidb entschieden, eine verteilte Datenbank. Sobald wir eine Verbindung zu tidb hergestellt haben, müssen wir uns keine Gedanken mehr über das Sharding von Tabellen machen. Tidb erledigt das alles für uns und erweitert die Knotenkapazität selbstständig. Da es verteilt ist, ist der Primärschlüssel von tidb ungeordnet, was sehr wichtig ist.
Konzentrieren wir uns auf die Fallstricke bei der Synchronisierung alter Daten.Die Migration zu tidb scheint einfach, aber im Job-Skript sind tatsächlich einige Fallstricke versteckt.
Endgültige SynchronisierungsskriptlösungUnter Berücksichtigung der Datenduplizierung, der Effizienz des Jobneustarts und der Effizienz der gesamten Synchronisierung habe ich grob den folgenden Plan erstellt:
Abschließend wurde die Datenmigration durch die vier Umschaltschritte von Lösung 3 + effizientes Synchronisierungsskript reibungslos abgeschlossen. ZusammenfassenDies ist das Ende dieses Artikels über MySQL-Migrationslösungen und Fallstricke. Weitere relevante MySQL-Migrationslösungen und Fallstricke finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder lesen Sie die folgenden verwandten Artikel weiter. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: 25 CSS-Frameworks, Tools, Software und Vorlagen geteilt
1. Suchen Sie zunächst die Datendatei auf dem Mig...
Verwenden Sie Nginx, um einen Tomcat9-Cluster zu ...
In diesem Artikel wird der spezifische Code des b...
Inhaltsverzeichnis 502 Bad Gateway Fehlerbildung ...
Es ist sehr einfach, einen Kong-Cluster unter dem...
In diesem Artikel wird der spezifische Code von j...
Inhaltsverzeichnis einführen Vorbereiten Systemab...
Inhaltsverzeichnis 1. Was ist ein Proxy? 2. Wie w...
Generieren einer Zertifikatskette Verwenden Sie d...
Docker unterstützt die Ausführung auf den folgend...
Dieser Artikel wurde aus dem Blog „Usability Count...
1. Erstellen Sie eine Repo-Datei Lesen Sie die of...
registrieren Das Front-End verwendet Axios in Vue...
Inhaltsverzeichnis 1. Einführung in Nginx 2. Aufb...
Chatbots können viel manuelle Arbeit sparen und i...