ungoliant599
Anmeldungsdatum: 13. Juni 2019
Beiträge: 23
|
Hallo, ich habe mehrere große mysql Datenbanken und möchte diese über mysqldump sichern; Jedoch ist die Backupdatei um vieles kleiner als die Datenbank an sich.. ☹ Unter /var/lib/mysql steht:
| root@p2f-ubuntu-domU:/var/lib/mysql# du -sh * | grep "area"
7,5G area1_fischer4you
15G area1_fischer_lab
27G area1_fronius
83G area1_keba
312G area1_trumpf
368G area1_trumpf_h264
54G area1_wacker
8,2M attentive_area1
|
Wenn ich nun mit:
| mysqldump -u p2f-admin -p area1_fischer4you --single-transaction --quick --lock-tables=false > /mnt/net/backup/db-server/area1_fischer4you-backup.sql
|
Meine Datenbank sichere hat sie im Ausgabeordner folgende Größe: | root@p2f-ubuntu-domU:/mnt/net/backup/db-server# du -sh * | grep "area"
2,7G area1_fischer4you-backup.sql
|
An was kann das nur liegen? Ich hab absolut keinen Dunst ☹ cheers ungoliant
|
homer65
Anmeldungsdatum: 8. November 2005
Beiträge: 549
Wohnort: bochum, germany
|
Weiss nicht genau was bei den Parametern gesichert wird. Aber ein Parameter --all-databases sollte für eine komplette Sicherung schon sein.
|
ungoliant599
(Themenstarter)
Anmeldungsdatum: 13. Juni 2019
Beiträge: 23
|
ich habe auch versucht mittels:
| mysqldump -u p2f-admin -p –-all-databases > /mnt/net/backup/db-server/full-db-backup.sql
|
alles zu sichern; aber selbes Ergebniss; die Ausgabedatei ist um ein vielfaches kleiner als die Datenbank an sich..
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11179
Wohnort: München
|
Je nachdem wie deine Datenbank aufgebaut ist, könnten z.B. Felder mit einem leeren String bzw. NULL im Dump wesentlich weniger Speicherplatz belegen als als CHAR-Feld mit einer festen Länge. Außerdem schrumpft eine Datenbank nicht automatisch, wenn man Einträge löscht, die Optimierung muss man von Hand anstoßen: https://dev.mysql.com/doc/refman/8.0/en/optimize-table.html - wie viel Speicherplatz dadurch zu gewinnen wäre, kann man z.B. so ermitteln (vgl. https://stackoverflow.com/a/21169120):
| SELECT table_schema "database name", sum( data_length + index_length ) / 1024 / 1024 "database size in MB", sum( data_free )/ 1024 / 1024 "free space in MB" FROM information_schema.TABLES GROUP BY table_schema;
|
|
ungoliant599
(Themenstarter)
Anmeldungsdatum: 13. Juni 2019
Beiträge: 23
|
Ok das könnte evtl möglich sein das viele leere Felder in der DB vorhanden sind.. Ums Optimieren geht es mir ja gar nicht.. erstens mal rein nur um einen erfolgreichen Dump.. free space in MB bedeudet dann wohl das ich 163 MB einsparen könnte?!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 | MariaDB [(none)]> SELECT table_schema "area1_fischer4you", sum( data_length + index_length ) / 1024 / 1024 "database size in MB", sum( data_free )/ 1024 / 1024 "free space in MB" FROM information_schema.TABLES GROUP BY table_schema;
+--------------------+---------------------+------------------+
| area1_fischer4you | database size in MB | free space in MB |
+--------------------+---------------------+------------------+
| area1_fischer4you | 7268.92187500 | 163.00000000 |
| area1_fischer_lab | 11853.01562500 | 23.00000000 |
| area1_fronius | 25842.40625000 | 87.00000000 |
| area1_keba | 67318.64062500 | 4895.00000000 |
| area1_trumpf | 302318.84375000 | 83.00000000 |
| area1_trumpf_h264 | 347783.98437500 | 79.00000000 |
| area1_wacker | 53661.28125000 | 1311.00000000 |
| attentive_area1 | 1.96875000 | 0.00000000 |
| information_schema | 0.17187500 | 0.00000000 |
| mysql | 2.14478016 | 4.00077438 |
| performance_schema | 0.00000000 | 0.00000000 |
+--------------------+---------------------+------------------+
11 rows in set (2.62 sec)
|
|
homer65
Anmeldungsdatum: 8. November 2005
Beiträge: 549
Wohnort: bochum, germany
|
Soviel Freespace ist das ja gar nicht. Das kann nicht als Erklärung dienen. Versuch doch mal den Dump in ein anderes leeres Datenbanksystem zu laden. Mal schaun, was dabei rauskommt.
|
ungoliant599
(Themenstarter)
Anmeldungsdatum: 13. Juni 2019
Beiträge: 23
|
hmm ja das schaut schon besser aus:
| p2f@p2f-ubuntu-domU:/var/lib/mysql$ sudo du -sh * | grep test
7,1G test
|
aber sie hat trotzdem 0,4G weniger als die Originale.. Aber ich lass das mal überprüfen ob grundsätzlich der Inhalt der selbe ist..
|
homer65
Anmeldungsdatum: 8. November 2005
Beiträge: 549
Wohnort: bochum, germany
|
Na das ist ja erfreulich ☺ Trotzdem würde ich dir den Tipp von seahawk1986 mit dem "optimze" der Tabellen ans Herz legen. Solltest du in deinen Wartungsplan mit aufnehmen.
|
ungoliant599
(Themenstarter)
Anmeldungsdatum: 13. Juni 2019
Beiträge: 23
|
Hallo ihr ☺ so ich muss dass ganz leider noch mal aufrollen! So wie es aussieht dauert der dump einfach ewig lange und ist deshalb auch unvollständig. Also mein dump startet um 22:00 Uhr und ist um 8 Uhr morgens immer noch nicht fertig; Da die DB nicht beschreibbar sind während des dumpingprozesses suche ich nun eine andere Methode um meine Daten zu sichern.. Ist jemand ein andere Methode bekannt die auch auf mein Szenario anwenden kann? Snapshop from LV z.B.? mfg ungoliant
|
homer65
Anmeldungsdatum: 8. November 2005
Beiträge: 549
Wohnort: bochum, germany
|
Wir haben mal: https://www.percona.com/software/mysql-database/percona-xtrabackup getestet. Hat auch funktioniert. Blockiert nicht; macht aber einen Dump der Rohdaten. Ich weiss nicht was passiert, wenn man per Update eine neuere Version untergeschoben bekommt und dann den Backup zurückspielt. Gruß Christian
|
ungoliant599
(Themenstarter)
Anmeldungsdatum: 13. Juni 2019
Beiträge: 23
|
Danke werde ich mir anschauen! Ich überlege ob rsnapshop einen Sinn macht wenn ich nur /var/lib/mysql sichere?
|
Cranvil
Anmeldungsdatum: 9. März 2019
Beiträge: 990
|
ungoliant599 schrieb: Ist jemand ein andere Methode bekannt die auch auf mein Szenario anwenden kann? Snapshop from LV z.B.?
Schau dir mal die Optionen --single-transaction und --quick in der mysqldump-manpage an. Vielleicht helfen dir die bereits aus. In dem Zusammenhang kannst du vielleicht auch ein --flush-logs sinnvoll unterbringen, dazu kann ich aber keine Erfahrungen aus dem Produktivumfeld nennen. Wenn du mit Dateisystem-Snapshots arbeiten willst und das System es verkraftet, dass der MySQL-Server kurzzeitig offline ist und die Caches danach kalt sind, dann Server stoppen, Snapshot anfertigen, Server starten. Das bereits angesprochene Percona XtraBackup scheint recht vielversprechend zu sein, wenn du wirklich sowohl Online-Backups machen willst als auch keinen SQL-Dump, sondern "einfach" nur die Datenbankdateien wegschreiben. Keine Ahnung, ob und wie gut sich das mit einem Snapshot-fähigen Dateisystem integriert. Aber an einen anderen Speicherort musst du die Snapshots ja eh irgendwann mal verbringen.
|
ungoliant599
(Themenstarter)
Anmeldungsdatum: 13. Juni 2019
Beiträge: 23
|
Server kann von ca 22:00 Uhr bis 05:00 Uhr Offline sein das ist egal.. Ok ich habe jetzt mal xtrabackup und rsnapshot eingerichtet und werde das mal so stehen lassen und schauen was sich tut! Im diesen Sinne schönes Wochenende und Danke für eure Unterstützung!
|