[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[OT]Re: Backup von einer postgreSQL mit 80 GByte?



Hallo, Michelle,

On Tue, 21 Jan 2003 18:17:06 +0200

Michelle Konzack <linux.mailinglists@freenet.de> wrote:

[...]
> Die Frage ist, wie soll ich die zusaetzliche Tabelle vernuenftig
> anlegen ? 
> 
> Einfach zwei Spalten (Tabelle + 0|1-Flag) ??? 
> 
[...]

Entschuldige bitte die verzögerte Antwort: Ich bin ein paar Tage nicht
an meine Mails gekommen.

Zur Tabelle für die Tabellennamen:
Du willst für eine inkrementelle Datensicherung den Überblick behalten,
welche Tabellen innerhalb eines bestimmten Zeitraums verändert wurden.
Dafür reicht es aus, die Tabellennamen zu kennen, also genügt eine
Tabelle mit einer einzigen Spalte, sagen wir, die heisst _modifiziert_.

Anlegen mit psql:
	CREATE TABLE _modifiziert_ ( tab_name VARCHAR(40) NOT NULL );

Wenn Du willst, kannst Du dir noch einen Zeitstempel eintragen lassen,
ich glaube, das geht mit TIMESTAMP - hab' ich aber noch nicht probiert.

Ein extra Flag ist nicht nötig, denn in der Tabelle sind nur
modifizierte Tabellen verzeichnet: Bei jeder Aktion, die Inhalte in der
Datenbank verändern, den Tabellennamen speichern mit	INSERT INTO
_modifiziert_ ( tab_name ) VALUES ( $tabellenname ); 
Für die Sicherung die Namen aus der Tabelle auslesen mit
	SELECT DISTINCT * FROM _modifiziert_;

Das DISTINCT bewirkt, das mehrfache Einträge nur einmal im Ergebnis
erscheinen. Ich würde die Ausgabe in eine Datei schreiben und mit dieser
Datei ein Skript füttern, dass die Tabellen mit pg_dump (siehe meine
erste Mail) sichert.

Nach dem Backup muss _modifiziert_ wieder leer sein:
	DELETE FROM _modifiziert_;
löscht alle Einträge.

Tabellen mit OID? Als binäres Objekt??? Warum? Interessant ist am Ende
doch nur, was in der Tabelle drinsteht und nicht der Verwaltungskram
drumrum, den Du dann mitschleppen musst...

Apropos Verwaltungskram: Der fällt weg, wenn Du die Datenbank mit
pg_dump sicherst. Es könnte sein, dass Dein Backup kleiner ausfällt als
die 80GB. Wär' vielleicht einen Versuch wert.(Ich habe hier eine
Datenbank, die auf dem Rechner etwas über 100MB belegt - keine
Optimierung gemacht, Indizees sind nicht angelegt - die Nutzdaten sind
ungefähr 15MB gross.)

Zu Deiner anderen Mail:
Die komplette Datenbank solltest Du mit pg_dump bzw. pg_dumpall sichern.
(Vielleicht hast Du ja Glück und alles passt auf eine CD... s.o.)

Mir fällt noch ein: 
Falls in der Datenbank viel gelöscht wird, musst Du Dir mal VACUUM
ansehen. PostgreSQL löscht Daten nicht unmittelbar, sondern markiert sie
nur als gelöscht. Mit VACUUM kriegst Du sie wohl los. (Hab' ich aber
auch nur nachgelesen, noch nicht probiert...)

Gruss

Peter



Reply to: