Wie kann die schnelle Sicherung und Wiederherstellung von 500-GB-Datenbanken mit mysqldump erhöht werden?

10

Es gibt eine Datenbank mit einer Größe von 500 GB. Tabellen in Datenbank A enthalten sowohl MyISAM- als auch INNODB-Tabellen. MyISAM-Tabellen sind Mastertabellen und Innodb-Tabellen sind Haupttransaktionstabellen.

Sichern und Wiederherstellen mit MySQL-Dump, das lange oder tagelang beendet wird.

  • max_allowed_packet = 1G
  • Foreign_key_checks = 0
  • auto_commit = aus
Martin
quelle
1
Ich möchte nur sicherstellen, dass Sie --opt mit dem Dienstprogramm mysqldump verwenden. Dies ist eine enorme Zeitersparnis beim Nachladen. ohne es erstellt mysqldump die SQL-Datei Zeile für Zeile. --opt funktioniert: Fügt Sperren hinzu, löscht und erstellt sie neu, wobei alle Erstellungsoptionen aktiviert sind, deaktiviert vorübergehend die Schlüssel für ein schnelles Neuladen und schaltet die Schlüssel am Ende wieder ein, um die Indizes nach dem Schreiben neu zu erstellen. Es verkettet mehrere Zeilen in Einfügungen, um die Dateigröße UND die Analysezeit jeder Anweisung um bis zu 70% zu reduzieren, und ermöglicht es --quick, die Belastung der Dumping-Datenbank beim Ausführen zu verringern. reduziert die Ladezeit um 80%
ppostma1

Antworten:

5

Der Link empfiehlt jedoch auch XtraBackup von Percona, das schneller ist, keine Sperren für bereits verwendete Tabellen aufweist und keine Zeit für die Wiederherstellung benötigt. Für 500 GB Daten bevorzuge ich, dass Percona XtraBackup schnell und effizient ist, es sei denn, Sie möchten sie in das Modell innodb_file_per_table konvertieren, wenn es nicht vom vorhandenen DB-Server stammt. Der folgende Link erklärt, wie Sie vorgehen müssen.

http://www.percona.com/doc/percona-xtrabackup/innobackupex/creating_a_backup_ibk.html

Mannoj
quelle
1
Das Problem mit Percona Xtrabackup ist, dass mysqld gestoppt werden muss, um eine Datenbank wiederherzustellen.
Dr01
2

Schauen Sie sich mydumper an. Es ist viel schneller als mysqldump: Die neue Version mydumper 0.6.1 bietet Leistungs- und Benutzerfreundlichkeitsfunktionen

Sie können von hier herunterladen: https://github.com/maxbube/mydumper

Was ist mydumper? Warum?

  • Parallelität (daher Geschwindigkeit) und Leistung (vermeidet teure Konvertierungsroutinen für Zeichensätze, insgesamt effizienter Code)
  • Einfachere Verwaltung der Ausgabe (separate Dateien für Tabellen, Speicherauszugsmetadaten usw., einfache Anzeige / Analyse von Daten)
  • Konsistenz - behält den Snapshot über alle Threads bei, bietet genaue Master- und Slave-Protokollpositionen usw.
  • Verwaltbarkeit - unterstützt PCRE zum Festlegen von Einschlüssen und Ausschlüssen für Datenbanken und Tabellen
Silas Palmer
quelle
1

Ich denke, die Frage ist, wie man schneller aus mysqldumps Ceated-Dump-Dateien und nicht aus einer anderen Backup-Lösung wiederherstellt.

Sie können dies unter anderem tun, indem Sie Gruppen von Tabellen in Ihrem Schema erstellen und für jede Gruppe einen separaten DB-Benutzer erstellen. Verwenden Sie die MySQL-Berechtigungen, um das Einfügen von Tabellen in alle außer einem DB-Benutzer zuzulassen.

Dies ist eine bewährte, schnelle, fast parallele Technik, aber nicht 100% sicher, wie lange die Wiederherstellung von 500G dauern wird. Aber imho, du brauchst etwas Paralleles. Ein Beispiel finden Sie unter dem folgenden Link.

Schnelle, parallele Wiederherstellung von SQL-Dumps (mysqldump) für MySQL

syed
quelle
1

Versuchen Sie Folgendes mit innobackupex:

innobackupex --parallel=7 --rsync  /var/mysql/backup

Sie können die Nummer des parallelen Prozesses beliebig ändern. Da Sie erwähnt haben, dass Sie Myisam-Tabellen haben, hilft der Parameter "rsync" dabei, die Sicherung dieser zu beschleunigen.

Haluk
quelle