• Bitte schaltet eure Ad Blocker aus. SLinfo kann nur betrieben werden, wenn es durch Werbung Einnahmen erzielt. Vielen Dank!!
  • Wir freuen uns, wenn du dich in unserem Forum anmeldest. Bitte beachte, dass die Freigabe per Hand durchgeführt wird (Schutz vor Spammer). Damit kann die Freigabe bis zu 24 Stunden dauern.
  • Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf unsere Website zu analysieren. Sie geben Einwilligung zu unseren Cookies, wenn Sie unsere Webseite weiterhin nutzen.

MySql-Backup

argus Portal

Freund/in des Forums
Hallo

Ich setze im Osgrid für mein Land mysql ein. In der Datenbank ist eine Menge binäres enthalten. Wenn ich nun mittels mysqldump ein backup zurückspiele, oder von einem Rechner auf einen anderen Rechner übertrage um die Installation zu spiegeln, werden dann alle überflüssig gewordenen Daten (also die, die im Backup nicht mehr vorkommen) gelöscht ?

Beispiel: Ich habe auf zwei Rechnern eine identische Installation meiner osgrid-sims. Wenn ich nun auf einem der Rechner an einer sim arbeite und dabei dort einiges lösche und danach ein mysql-backup anlege, welches ich dann auf dem anderen Rechner zurückspiele: Werden dort die überflüssig gewordenen (weil gelöschten, und im Backup nicht mehr enthaltenen) Daten
wirklich gelöscht, oder ist es so, wie z.b. unter Windows mit der Registry: Dort werden gelöschte Daten nicht wirklich gelöscht, sondern quasi nur "ausgeblendet".

Ich habe das bisher so gemacht und es funktioniert. Aber ein ungutes Gefühl habe ich dennoch, solange ich nichts genaueres über den Mechanismus weiss.

Bei Windows ist bekannt, das eine zunehemend aufgeblähte Registry mit einer Unzahl an obsoleten Daten Probleme machen kann.



Gruss
 
Gelöscht wird beim einspielen des "Backup" nichts. Es sei denn du leerst die zweite Datenbank vor dem einspielen, dann wird natürlich nur das übernommen was im Backup ist.

Je nach Backupverfahren (einfach formuliert) wird automatisch gelöscht bzw. geleert durch das einspielen.
 
Wenn du dein mysqldump Backup mal anschaust dann siehst du "DROP TABLE IF EXISTS" bei jeder Tabelle, was soviel heist wie lösche die Tabelle wenn sie existiert. Danach wird die tabelle neu angelegt und mit den aktuellen Daten gefüttert, d.h. es bleiben keine reste mehr übrig von früher.
 
Also da gibt es zwei Sachen zu unterscheiden: einfach Objekte in der Datenbank, die man mit sich rumschleppt, aber (vielleicht?) nicht mehr benutzt - die bleiben auch normal weiterhin in der Datenbank. OS ist eine einzige Datensenke, momentan gibt es noch nicht wirklich effektive eingebaute Mechanismen, die Datenbank auch kleiner zu halten, da muss man anders aktiv werden.

Die zweite Sache ist die interne Fragmentierung der Datenbankdateien: das bedeutet ich lösche einen Datensatz in der Datenbank. Der ist dann für die Datenbank nicht mehr vorhanden, aber der Platz in der Datei ist nun als Lücke vorhanden. Dem kann man mit Hilfe eines "mysqlcheck datenbank --optimize" zur Leibe rücken, das ist der Neuaufbau der Datenbankdatei minus den Löchern durch die interne Fragmentierung. Je nach Größe der Datenbank aber dauert das auch natürlich entsprechend, da er im Prinzip die Datei komplett neu aufbaut, in manchen Datenbankumgebungen wird das einmal die Woche nachts laufen gelassen. Das Analogon dazu bei Postgres wäre übrigens VACUUM.

Wenn man eine wirklich schlanke (?) Datenbank erzeugen will, dann sichert man sich sein eigenes Inventar per IAR und die Sim per OAR, macht dann die Datenbank der Region platt und spielt das danach zurück. So wird man am meisten Müll los.

Ansonsten gelten die alten Grundregeln für Datenbanken eben: gibt es mehr Reads oder Writes, wie ist das Verhältnis zwischen den Beiden? Je mehr RAM man der Datenbank spendiert, umso besser sowieso, weil sie dann mehr cachen kann, übrigens Cache - die Speichergrößen der Caches sollte man auch entsprechend einrichten.

mysqltuner.pl ist dafür ein nettes Programm, das einem brauchbare Anhaltspunkte liefern kann, sofern die Datenbank mindestens 1-2 Tage produktiv lief.
 
Also da gibt es zwei Sachen zu unterscheiden: einfach Objekte in der Datenbank, die man mit sich rumschleppt, aber (vielleicht?) nicht mehr benutzt - die bleiben auch normal weiterhin in der Datenbank. OS ist eine einzige Datensenke, momentan gibt es noch nicht wirklich effektive eingebaute Mechanismen, die Datenbank auch kleiner zu halten, da muss man anders aktiv werden.

Tja, da sind sich viele der Devs einig, für Datenbank verwaltung soll es externe Tools geben die nicht von der OS selbst die verwaltung übernehmen. Problem ist das diese auch erst von jemanden gemacht werden müssen. Ich habe zumindest für die Bereinigung eine liste an mysql Befehlen im OSG gepostet die noch ausbaufähig sind: osgrid.org • View topic - Nebs Useful list of sql queries

Ich muss aber auch sagen, dass ich froh bin das die OS nicht so viel selbst in der DB macht und das sowas langfristig über externe tools laufen wird wenns die mal gibt. Das liegt aber eher daran das ich alle meine +60 Regionen in 1 zentralen Datenbank habe auf die alle meine server und sims zugreifen. Wenn ich mir da vorstelle das die OS selbständig alles löscht was nicht in der eigenen Regionliste der aktuellen Sim ist, dann wär meine DB leer. Zudem ist manches an "Müll" hilfreich bei der Fehlersuche oder Reparatur wenn es Probleme gibt. So gesehn ist ein externes DB-Verwaltungstool das die individuellen Bedürfnisse erfüllt am ende doch die bessere Lösung als es in der OS zu integrieren.
 

Users who are viewing this thread

Zurück
Oben Unten