Derzeit haben wir eine leistungsstarke MySQL-Datenbank, in der einige stark frequentierte Django-basierte Websites sowie einige E-Commerce-Websites von angemessener Größe ausgeführt werden. Infolgedessen verfügen wir über eine große Anzahl großer Datenbanken, die sowohl InnoDB- als auch MyISAM-Tabellen verwenden.
Leider sind wir vor kurzem aufgrund des Datenverkehrs an eine Wand gestoßen, daher habe ich einen anderen Master-Server eingerichtet, um Lese- und Sicherungsvorgänge zu vereinfachen.
Im Moment benutze ich einfach mysqldump mit ein paar Argumenten und es hat sich als gut erwiesen. Bis jetzt. Offensichtlich ist mysqldump eine langsame, schnelle Methode, aber ich glaube, wir sind ihrer Verwendung entwachsen. Ich brauche jetzt eine gute Alternative und habe versucht, das Dienstprogramm mat -parallel-dump von Maatkits oder eine LVM-Snapshot-Lösung zu verwenden.
Kurze Kurzfassung:
- Ich habe eine ziemlich große MySQL-Datenbank, die ich sichern muss
- Die derzeitige Methode mit mysqldump ist ineffizient und langsam (verursacht Probleme).
- Schauen Sie sich etwas wie mk-parallel-dump oder LVM-Snapshots an
Alle Empfehlungen oder Ideen wären willkommen - da ich neu machen muss, wie wir Dinge tun, lasse ich es lieber richtig / am effizientesten machen :).
quelle
xtrabackup - zumindest für innodb.
quelle
Die häufigste Methode zur Lösung dieses Problems besteht darin, einen anderen MySQL-Server einzurichten, der sich sogar auf demselben Computer befinden kann, und die Master / Slave-Replikation auszuführen. Sie können dann die Sicherung auf dem Slave durchführen, ohne dass dies Auswirkungen auf den Master hat.
quelle
Auf EC2 EBS verwende ich gerade xfs_freeze. Ich möchte möglicherweise irgendwann auf xtrabackup umsteigen, aber als ich es zum ersten Mal testete, war es sehr, sehr CPU-hungrig.
quelle
Wenn Sie die Replikation einer Datenbank ausführen, die für mehrere Anwendungen gemeinsam genutzt wird, stellt sich offensichtlich die Frage, ob Sie die Leistung vieler Dinge, einschließlich Sicherungen, verbessern können, indem Sie Datenbankserver Apps zuweisen. Geteilt ist schön, bis es nicht mehr ist.
quelle
Wenn Sie Ihre MyISAM-Tabellen nur aus älteren Gründen aufbewahren (Sie haben sich nicht die Mühe gemacht, sie zu ändern), verwende ich Folgendes, um dies einfach zu beheben:
Sie können Datenbanken mit dem regulären Ausdruck awk ausschließen und einschließen, z. B. nur dbs, die in meinem obigen Beispiel mit einem Kleinbuchstaben beginnen. Dadurch werden die Tabellen natürlich während der Änderung gesperrt.
Verwenden Sie dann xtrabackup, um die gesamte Datenbank direkt auf einen anderen Server zu kopieren, ohne Tabellen zu sperren oder zu viel Festplatten-E / A zu verwenden (nach dem Einrichten von ssh rsa-Schlüsseln):
Anschließend können Sie den Schritt zum Anwenden des Protokolls vollständig trennen und Speicherplatz, E / A und CPU auf dem Produktionsserver sparen.
Perconas HowTO's für die Verwendung von xtrabackup
quelle