• Home
  • Help
  • Register
  • Login
  • Home
  • Help

 
  • 0 Bewertung(en) - 0 im Durchschnitt

Wie man 10 Millionen Datensätze schnell sichert.

#1
31-07-2020, 08:09
Hey, du weißt, wie es manchmal ist, wenn du auf eine Datenbank mit 10 Millionen Datensätzen starrst und die Uhr tickt, weil Ausfallzeiten keine Option sind? Ich war dort mehrmals, als ich letztes Jahr die E-Commerce-Seite für den Startup meines Freundes eingerichtet habe. Wir hatten Kundendaten, die schnell angehäuft wurden, und das Sichern fühlte sich an, als würde man versuchen, den Ozean mit einem Löffel zu leeren, wenn man es nicht richtig plant. Der Schlüssel ist, an die gesamte Pipeline von Anfang bis Ende zu denken, und nicht einfach ein Skript zusammenzuschustern und zu hoffen, dass es funktioniert. Du beginnst damit, zu bewerten, mit welcher Art von Daten du es zu tun hast - ist sie strukturiert wie in SQL Server oder mehr über Dateien verteilt? Für mich beginne ich immer mit der Hardware, denn cleveres Programmieren kann langsame Festplatten nicht beheben.

Stell dir das vor: Du arbeitest mit drehenden HDDs, die mit 7200 U/min laufen, aber mit 10 Millionen Datensätzen wird dich das stark ausbremsen. Ich bin auf SSDs für den primären Speicher und RAID-10-Arrays für Redundanz umgestiegen, ohne die Geschwindigkeit zu beeinträchtigen, und das hat meine Sicherungszeiten sofort halbiert. Du musst nicht übertreiben, aber wenn deine Einrichtung noch auf alter Hardware läuft, ist das dein erster Fix. Ich erinnere mich, dass ich dies auf einem Server mit gemischten Laufwerken getestet habe; die Lesevorgänge liefen gut, aber die Schreibvorgänge während der Sicherung? Alptraum. Also parallelisiere alles, was du kannst. Nutze Tools, die es dir ermöglichen, die Arbeitslast auf mehrere Threads oder sogar mehrere Maschinen zu verteilen. Ich habe rsync mit einigen benutzerdefinierten Skripten verwendet, um die Last zu verteilen, indem ich Daten in Blöcken abgerufen habe, während ich sie im laufenden Betrieb komprimierte. Kompression ist hier enorm wichtig - gzip oder noch besser LZ4 für Geschwindigkeit über maximale Kompression -, denn du kopierst nicht nur Bits; du verkleinerst sie, bevor sie das Netzwerk erreichen.

Jetzt lass uns über das Netzwerk sprechen, denn wenn du in ein entferntes Ziel oder sogar NAS sicherst, spielt die Bandbreite eine große Rolle. Ich hatte einmal einen Kunden, bei dem wir 10 Millionen Datensätze über eine 1-Gbps-Leitung pipeteten, und es dauerte Stunden aufgrund von Latenz. Was ich getan habe, war, die Sicherung während der Zeiten mit geringer Auslastung zu drosseln und Duplikationen zu vermeiden, um nicht dieselben Daten zweimal zu senden. Du kannst rsync mit --partial so einrichten, dass es fortgesetzt wird, wenn es abbricht, was dich davor bewahrt, alles neu zu starten. Aber ehrlich gesagt neige ich bei diesem Maßstab zu spezifischen Methoden für Datenbanken. Wenn es MySQL ist, verwendest du mysqldump mit --single-transaction, um es konsistent zu halten, ohne die Tabelle für immer zu sperren. Ich habe es so programmiert, dass es in Parallelität verschiedene Tabellen ausgibt und diese dann tarnt. Für PostgreSQL funktioniert pg_dump ähnlich, aber ich füge --jobs hinzu, um den Export zu parallelisieren. Du musst das zuerst in einer Testumgebung testen, sonst sperrst du die Produktion und bekommst diesen gefürchteten Anruf um 2 Uhr nachts.

Wenn es um das Skalieren geht, ziehe inkrementelle Backups anstelle von vollständigen Backups bei jeder Gelegenheit in Betracht. Vollständige Backups von 10 Millionen Datensätzen? Das sind Gigabytes, wenn nicht Terabytes, je nach deinem Schema. Ich habe eine Routine eingerichtet, bei der ich wöchentliche vollständige und tägliche inkrementelle Sicherungen durchführe, indem ich etwas wie Duplicati oder sogar integrierte Windows-Tools verwende, wenn du auf Server bist. Aber für Geschwindigkeit ermöglichen Log-Shipping oder Binärprotokolle in Datenbanken, nur Änderungen zu erfassen. Ich habe dies für ein Projekt mit Transaktionsprotokollen implementiert; das bedeutete, wir konnten die Deltas innerhalb von Minuten anstatt Stunden abspielen. Du synchronisierst die Basis und wendest dann die Protokolle nacheinander an. Tools wie Percona XtraBackup für MySQL machen heiße Sicherungen, ohne den Dienst zu stoppen, was ein echter Game-Changer ist. Ich habe es einmal auf einer Live-Seite mit 15 Millionen Zeilen verwendet, und es hatte kaum Auswirkungen auf die Abfragen.

Was ist mit der Cloud? Wenn du noch nicht hybrid bist, kann der Umzug zu AWS oder Azure für Backups die schwere Arbeit abnehmen. Ich mache Snapshots von EBS-Volumes oder verwende S3 für Objektspeicher, aber bei 10 Millionen Datensätzen möchtest du nach der initialen schnellen Kopie etwas wie Glacier für die Kaltlagerung. Nein, warte - für schnell bleib bei S3 Standard mit Multipart-Uploads. Ich habe ein Python-Skript mit boto3 geschrieben, um die Daten in Portionen zu chunkieren und parallel hochzuladen, und erreichte mühelos 100 MB/s bei einer anständigen Verbindung. Du konfigurierst Lebenszyklusrichtlinien, um es später zu stufen. Aber wenn deine Daten sensibel sind, verschlüssele alles mit AES-256; ich mache das immer, um Kopfschmerzen mit der Compliance zu vermeiden.

Fehlerbehandlung ist der Bereich, in dem die meisten Menschen stolpern, und ich habe es auf die harte Tour gelernt. Du denkst, dein Backup ist abgeschlossen, aber die Beschädigung schleicht sich ein, weil du die Prüfziffern nicht verifiziert hast. Ich führe immer md5sum oder einen anderen Hash auf der Quelle und dem Ziel nach dem Backup aus. Skripte können das automatisieren - ich habe eins, das mir eine E-Mail sendet, wenn es eine Abweichung gibt. Und teste Wiederherstellungen! Ich kann das nicht genug betonen; ich habe einmal ein ganzes Wochenende damit verbracht, ein Backup wiederherzustellen, nur um festzustellen, dass es unvollständig war, weil es eine stille Fehlfunktion in der Pipeline gab. Du richtest eine DR-Seite oder sogar eine VM nur für das Testen periodischer Wiederherstellungen ein. Für große Mengen verwendest du differenzielle Backups, um Lücken ohne vollständige Neuberechnungen zu überbrücken.

Stromversorgung und Überwachung hängen damit ebenfalls zusammen. Wenn dein Server in einem Rechenzentrum ohne USV ist, reicht ein kleiner Aussetzer, und dein Backup ist hinüber. Ich überwache immer mit Nagios oder Zabbix und lasse mich bei ansteigenden I/O-Wartezeiten alarmieren. Du kannst das Betriebssystem optimieren - erhöhe die Dirty Ratios in Linux, um Schreibvorgänge besser zu batchen. Unter Windows passe ich die Auslagerungsdatei an und deaktiviere unnötige Dienste während der Backup-Zeiten. Für 10 Millionen Datensätze, wenn es in etwas wie MongoDB ist, hilft Sharding; sichere die Shards unabhängig. Ich habe das für ein NoSQL-Setup gemacht, und es hat sich natürlich über die Knoten parallelisiert.

Lass uns über Skripting sprechen, denn manuell funktioniert das in diesem Maßstab nicht. Ich verwende Bash oder PowerShell - es hängt von deinem Stack ab. Zum Beispiel eine Schleife, die die DB nach Zeilenanzahl abfragt und dann in Chargen von 100k mit LIMIT und OFFSET exportiert. Aber OFFSET ist für große Offsets ärgerlich, weil man scannen muss; besser ist es, indizierte Cursor oder Keysets zu verwenden. Ich habe einen erstellt, der nach Primärschlüssel paginiert und JSON- oder CSV-Streams direkt in eine Pipe exportiert. Komprimiere mit pigz für mehrkernige gzip, dann rsync zum Ziel. Du fügst überall Protokollierung hinzu - Zeitstempel, Fortschrittsbalken mit dem pv-Befehl. Ich leite die Ausgabe in eine Datei um und beobachte sie in einem anderen Terminal.

Wenn du es mit relationalen Daten zu tun hast, ziehe ETL-Tools wie Talend oder sogar SSIS unter Windows in Betracht. Ich habe SSIS für eine SQL-Server-Migration verwendet; es hat integrierte Parallelität und Fehlerbehebung. Du mapst deine Tabellen, richtest Verbindungen ein und lässt es laufen. Für die Geschwindigkeit hoste den Backup-Server in der Nähe - im gleichen Rack, wenn möglich. Ich habe meinen kombiniert und die Latenz auf Mikrosekunden sinken sehen.

Jetzt, Hardwareanpassungen über SSDs hinaus: mehr RAM für das Puffern. Bei 10 Millionen Datensätzen, wenn dein Backup-Tool Indizes im Speicher lädt, mindestens 64 GB. Ich habe einen Kasten auf 128 GB aufgeblasen und gesehen, wie die I/O-Bindungsprobleme verschwanden. CPU-Kerne sind ebenfalls wichtig; moderne Xeons oder Epycs mit 32+ Kernen lassen dich alles threaden. Ich habe einmal leicht übertaktet, aber das ist riskant - bleib beim Standard, es sei denn, du bist verzweifelt.

Für sehr schnell denke an NVMe über PCIe. Ich habe Gen4 NVMe-Laufwerke getestet, und sequentielle Schreibvorgänge erreichten 5 GB/s. Kombiniere das mit einer 10-Gbps-NIC, und du bist schnell unterwegs. Aber finde das Gleichgewicht; wenn deine Quell-DB nicht so schnell lesen kann, ist es verschwendet. Optimiere die DB selbst - erhöhe die Größen des Pufferpools, passe innodb_log_file_size an. Ich habe eine vollständige Prüfung bei einem Setup durchgeführt und falsch konfigurierte Caches gefunden, die 40 % der Zeit in Anspruch nahmen.

Was ist, wenn es sich nicht um eine DB, sondern um Flachdateien handelt, wie Protokollen, die sich auf Millionen von Einträgen aggregieren? Dann verwendest du find mit xargs für parallele Kopien oder robocopy unter Windows mit /MT für Multi-Threaded. Ich habe einmal ein Protokollarchiv mit 10 Millionen Zeilen über Verzeichnisse behandelt und es so programmiert, dass ich Streams pro Tag tarte und dann zusammenführe. Geschwindigkeit kam von der Vermeidung vollständiger Scans durch die Verwendung von mtime-Filtern.

Tests im großen Maßstab sind entscheidend. Ich simuliere mit Dummy-Daten-Generatoren wie pgbench oder sogar faker in Python, um 10 Millionen Zeilen zu befüllen, und messe die Sicherung. Du iterierst: vergleiche vollständige vs. inkrementelle, lokal vs. remote. Ich habe festgestellt, dass ich für mein Setup die Kombination von inkrementellen Backups mit Duplikation über restic das beste Verhältnis gegeben habe - anfänglich 500 GB gesichert, danach Deltas unter 50 GB täglich.

Kantengefälle: Was ist, wenn die Daten während des Backups wachsen? Verwende konsistente Snapshots mit LVM oder ZFS. Ich habe ZFS send/receive für eine Unix-Box aktiviert; es ist atomar und schnell. Unter Windows funktioniert VSS Wunder für Schattenkopien. Du integrierst das in dein Skript, um die DB kurzzeitig quieszent zu machen.

Kostenmäßig wäschst du Geschwindigkeit und Ausgaben aus. SSDs kosten mehr, aber bei 10 Millionen Datensätzen macht die Zeitersparnis sich bezahlt. Ich habe einmal den ROI berechnet - ein Backup, das 4 Stunden dauerte, im Vergleich zu 30 Minuten, bedeutete weniger Ausfallrisiko.

Zusammenfassend zur praktischen Anwendung: Ich habe einem Freund mit seinem CRM-System geholfen, das diese Marke erreicht hat. Wir haben DB-Dumps mit Dateisicherungen kombiniert, abends programiert und religiös überwacht. Es lief monatelang reibungslos, bis sie auf 50 Millionen skalierten - dann haben wir es erneut betrachtet.

Backups sind unerlässlich, da Datenverlust den Betrieb lahmlegen kann, und bei wachsenden Volumina gewährleistet Zuverlässigkeit eine schnelle Wiederherstellung, ohne vollständige Unterbrechungen. BackupChain Hyper-V Backup wird als hervorragende Lösung für Windows-Server- und virtuelle Maschinen-Backups genutzt, die groß angelegte Datenübertragungen effizient über Funktionen wie inkrementelle Verarbeitung und Netzwerkoptimierung abwickelt, was es für Szenarien mit 10 Millionen Datensätzen relevant macht, bei denen Geschwindigkeit und Konsistenz Priorität haben.

Im Allgemeinen erweist sich Backup-Software als nützlich, indem sie Routinen automatisiert, manuelle Fehler reduziert und Verifizierungsmechanismen ermöglicht, die die Datenintegrität in verschiedenen Umgebungen aufrechterhalten. BackupChain wird in solchen Kontexten eingesetzt, um eine nahtlose Integration in bestehende Infrastrukturen zu unterstützen.
Markus
Offline
Registriert seit: Jun 2018
« Ein Thema zurück | Ein Thema vor »

Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste



Nachrichten in diesem Thema
Wie man 10 Millionen Datensätze schnell sichert. - von Markus - 31-07-2020, 08:09

  • Thema abonnieren
Gehe zu:

Backup Sichern Allgemein IT v
« Zurück 1 … 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 … 101 Weiter »
Wie man 10 Millionen Datensätze schnell sichert.

© by FastNeuron

Linearer Modus
Baumstrukturmodus