tm3   Terminmanagement Dokumentation

tm3-Doku » Import/Export » Update Datenbank

Update vom Hauptserver auf den Ersatzserver   21.06.2010

Übersicht Programme


^ Übersicht:

Der Hauptserver tm3-fuhrpark.de in Frankfurt bekommt vom Entwickler die neuesten Programmdateien per FTP (File Transfer Protocol). Das kann mehrfach am Tag sein. Und auf dem Hauptserver wird gearbeitet, seine Datenbank hat den neuesten Stand.

Weil Ersatzserver (z.B. USB-Sticks) nicht online sein müssen, können sie weder vom Entwickler noch vom Hauptserver erreicht werden. Sie müssen sich die neuen Programme und die neuen Daten also vom Hauptserver abholen.

Woher weiss ein Ersatzserver, welche Dateien und Daten auf dem Hauptserver neu sind? Er holt sich die Liste mit den Dateien und deren Datum und mit den Tabellen und derem letzen Änderungsdatum. Die vergleicht er mit seinem eigenen Stand und fordert dann die Dateien und Daten an, die ihm fehlen oder veraltet sind.

Achtung:

Tabellen- Definitionen werden nicht kopiert. Falls auf dem Hauptserver ein Tabellenfeld hinzugefügt wird, muss die Tabelle auf dem Ersatzserver manuell erweitert werden.


^ Notwendige Programme:

Auf dem Hauptserver:

/_erzeugen_dateiliste.php erzeugt die Datei /_dateiliste.txt auf dem Server. Sie enthält Namen und Kontrollsumme (md5) der Dateien.

/send_file.php mit Parameter infile sendet die als Parameter angegebene Datei an den Ersatzserver. Wenn die Parameter table, owner_id, kw und date angegeben werden, wird die entsprechende Datenbank- Tabelle als CSV- Datei gesendet.

/send_file.php protokolliert die Auslieferung in Datei /db/backup_logfile.txt.

/db/codiere_decodiere.php enthält Funktionen zum Codieren und Decodieren des Datenstroms.

Auf dem Ersatzserver:

p021.php (Update Programme und Dateien) lässt sich die Dateiliste vom Hauptserver schicken und stellt sie den eigenen Dateien gegenüber. Wenn die Prüfsumme der gegenübergestellten Dateien ungleich ist, wird die Hauptserver- Datei per Checkbox zum Kopieren angeboten. Bei Klick auf die Absende- Schaltfläche werden die ausgewählten Dateien kopiert.

p022.php (Update DB-Tabellen) lässt sich die Liste der Tabellen vom Hauptserver schicken und stellt sie den eigenen Tabellen gegenüber. Wenn die Satzanzahl oder das letzte Änderungsdatum -zeit der gegenübergestellten Tabellen ungleich ist, wird die Hauptserver- Tabelle per Checkbox zum Kopieren angeboten. Bei Klick auf die Absende- Schaltfläche werden die ausgewählten Tabellen kopiert.

Es kann noch gewählt werden, ob eine inkrementelle oder eine Komplattsicherung erfolgen soll. Bei der schnelleren inkrementellen werden lediglich diejenigen Sätze vom Hauptserver kopiert, deren Änderungsdatum größer ist als das letzte Datum/Zeit dieser Tabelle auf dem Ersatzserver. Hier gibt es Ungenauigkeiten


p021 Update Programmdateien

Wird auf dem Ersatzserver aufgerufen und holt die Dateiliste vom Hauptserver.. Ruft die Liste der Dateien ab, die auf dem Hauptserver vorhanden sind.eine Dateiliste vom Hauptserver ab. , und pro Datei eine Kontrjede Datei


Konzept.

tm3 läuft auf dem Hauptserver tm3-fuhrpark.de in Frankfurt. Wenn der ausfällt, kann auf den Ersatzserver tm3.osmer.de in Berlin weitergearbeitet werden.

Voraussetzung ist, dass sich der Ersatzserver vorher die aktuellen Programme und Daten vom Hauptserver zieht. Dafür gibt es auf dem Ersatzserver zwei Programme:

Es können weitere Ersatzserver eingerichtet werden, z.B. auf PCs oder auf USB- Sticks.


WICHTIG:   Auf einem Ersatzserver dürfen Daten nicht verÄndert werden. Jeder verÄnderte Datensatz erhÄlt automatisch das aktuelle Datum und vereitelt damit die übernahme von Älteren DatensÄtzen des Hauptservers. Zur Kontrolle, ob Daten korrekt übernommen wurden, auf dem Ersatzserver nur Listen anschauen!

Erst dann, wenn der Hauptserver ausfÄllt und nicht wieder anlÄuft, einen Ersatzserver für alle Mitarbeiter bestimmen.

Vorhandene tm3Tee emm drei Server:

Beginn der Servertabelle

 

wo?

Beschreibung

verantwortlich für Updates

1

tm3-fuhrpark.de HAUPTSERVER bei internic, Frankfurt am Main Karl-Heinz

2

tm3.osmer.de/2008 Ersatzserver bei terions, Berlin Nico

3

offline Ersatzserver auf Verbatim usb_drive 08021203704G002468AA
System: XAMPP für Windows
Karl-Heinz

4

offline Ersatzserver auf SONY 2GB 07807EDD
System: XAMPP für Windows
Nico

Ende der Servertabelle


_dateiliste.txt

./000/p000.php 2008-04-23 21:11:30
./000/p000_de.htm 2008-04-30 11:10:00
./000/p001.php 2008-04-23 08:40:06
...
# TABELLEN:
# DB personen 2008-05-06 09:27:45
# DB anwesenheit 2008-05-06 09:46:19
# DB events 2008-04-23 10:34:15
...

Sicherheit:

Jede Sendung wird vom Hauptserver codiert und vom Ersatzserver wieder decodiert. Die Speicherung der Programmdateien erfolgt zunÄchst unter einem temporÄren Dateinamen, falls die Verbindung wÄhrend der übermittlung getrennt wird. Erst wenn die übermittlung erfolgreich war, wird die alte Datei gelöscht und die neue erhÄlt den ursprünglichen Dateinamen.


Schritt 1: Ersatzserver ruft Dateiliste ab

Jedesmal, wenn nach dem Login eines Benutzers das Menü (p000) aufgerufen wird, prüft p000, ob die Liste der Dateien von heute ist. Wenn ja, wurde dieser Ersatzserver heute bereits aktualisiert, es erfolgt keine weitere AktivitÄt.

Wenn die Liste fehlt oder Älter ist als heute, wird sie vom Hauptserver abgerufen.

Dabei besteht die Möglichkeit, dass der Hauptserver nicht erreichbar ist. Für diesen Fall wurden die Ersatzserver eingerichtet. Sie arbeiten dann mit dem vorhandenen, vielleicht veralteten Programm- und Datenstand.

Also (zumindest bei erwarteten ProgrammÄnderungen) einaml am Tag die Ersatzserver per Login aktivieren.

Abruf der _dateiliste.txt:   http://tm3-fuhrpark.de/send_file.php?infile=_dateiliste.txt


Schritt 2: Hauptserver sendet Dateiliste

Bei einer Anfrage nach _dateiliste.txt prüft der Hauptserver in seinem Verzeichnis, ob diese Datei von heute ist. Wenn ja, wird sie unverÄndert gesendet.

Wenn diese Datei fehlt oder Älter ist als heute, wird sie vor dem Senden neu erstellt. Sie enthÄlt die Dateinamen und DB- Tabellen des Projekts und deren Datum.

Der Hauptserver erstellt die Dateiliste nur einmal am Tag, versendet sie aber beliebig oft. Wenn keine Anforderung von einem Ersatzserver kommt, wird die Liste auch nicht erzeugt.


Schritt 3: Ersatzserver ruft Dateien und Daten ab

Alle Dateien und Daten aus der Liste, die dem Ersatzserver fehlen oder deren Datum aktueller ist als das Datum der eigenen Dateien, werden einzeln vom Hauptserver abgerufen und gespeichert.

Abruf der Adressen, die seit dem 05.05.2008 geÄndert wurden:   http://tm3-fuhrpark.de/send_file.php?table=personen&date=2008-05-05



Sonderprogramm p901 - Update erzwingen (am selben Tag mehrfach)

Wenn eine Datensicherung pro Tag nicht ausreicht, können weitere Updates von einem Administrator erzwungen werden. Er meldet sich auf dem betreffenden Ersatzserver an und ruft Programm p901 auf. Dort kann ein Update gestartet werden.

p901 erfordert mindestens das Benutzerrecht 7 (Administrator)   mehr



Diskussion

nach oben

Eine Datensicherung kann auf vielfache Weise erfolgen, jede Art hat Vor- und Nachteile. Um das optimale Verfahren zu finden, sind hier einige Gedanken bei der Planung und Entwicklung festgehalten.

Vorweg: In tm3 wird ein Backup- Verfahren verwendet, das mehrere Ersatzserver unabhÄngig voneinander einsatzbereit hÄlt. Das bedeutet, bei Ausfall des Hauptservers ist kein besonderes Verfahren nötig (etwa restore), um einen Ersatzserver in Betrieb zu nehmen, er ist schon fertig und in Bereitschaft.


Dauer der Datensicherung 27.05.2008

Zur Zeit wird vom Ersatzserver eine Tabelle als CSV- Datei angefordert und abgearbeitet. Danach wird die nÄchste Tabelle angefordert usw.

Problem: WÄhrend des Abarbeitens einer Tabelle können andere Tabellen auf dem Hauptserver verÄndert werden. Folgende Tabellen passen dann vom Datenstand nicht mehr zu den bereits gesicherten.

Aufgabe: Die Arbeit auf dem Hauptserver muss gesperrt werden, solange die Datensicherung lÄuft. Dies müsste programmtechnisch umgesetzt werden.

Alle Tabellen müssen gemeinsam angefordert und danach in Ruhe abgearbeitet werden. Ein langsamer USB- Stick als Server würde den Hauptserver sonst eine unbestimmte Zeit (halbe Stunde?) lahmlegen.



DatensÄtze löschen oder als gelöscht markieren? 27.05.2008

Als gelöscht markierte DatensÄtze belegen weiterhin einen Schlüssel in der Datenbank. Dadurch kann eine Neuerfassung unmöglich werden, wenn sie denselben Schlüssel beansprucht. Etwa bei versehentlichem Löschen und Neueingabe des selben Personensatzes. Also müssen DatensÄtzliche tatsÄchlich aus der DB entfernt werden.

Nicht zwingend. Die als gelöscht markierten könnten bei Neueingabe auch "wiederbelebt" werden. Das ist im Moment allerdings nicht machbar. Wir haben z.Z. 73 PHP- Programme (mit include- Dateien), allen INSERTs müsste eine Abfrage vorgeschaltet werden, ob dieser Datensatz vielleicht schon vorhanden ist. Wenn ja, ist ein UPDATE zu machen statt INSERT.

Eine Löschmarkierung wÄre auch eine KonzeptÄnderung. Bei jedem Lesevorgang müsste die Löschkennung abgefragt werden. Änderungs- und Testaufwand drei Wochen vor Messetermin nicht machbar.

Gelöschte DatensÄtze sind allerdings spurlos verschwunden. Wie könnten sie beim Ersatzserver ein Löschen ihres Zwillings bewirken? Indem die ID-Nummern aller vorhandener SÄtze übermittelt werden. Der Ersatzserver vergleicht mit seinen eigenen und löscht die, die auf dem Hauptserver fehlen:

$csv_felder (CSV):      $row_id   Aktion
=====================   =======   =============

ID  feld1  feld2  ...   ID
--  -----  -----  ---   --
01  feld1  feld2  ...   01        UPDATE
(fehlt)                 02        DELETE
03                      03        (keine Aktion)
04  feld1  feld2  ...   (fehlt)   INSERT
06                      06        (keine Aktion)

Gelöschte DatensÄtze können auch nicht mehr herangezogen werden, um den Zeitpunkt ihrer Löschung zu ermitteln. Der aktuellste Datensatz nach der Löschung könnte Tage oder Wochen alt sein und eine Datensicherung als unnötig erscheinen lassen.

Zum Glück gibt es für jede MySQL- Tabelle einen Status, der Update_time enthÄlt, also den Zeitpunkt der letzte DatenÄnderung. Der wird herangezogen, um zu entscheiden, ob ein Update erforderlich ist.

Update_time gilt für die gesamte Tabelle, wird also auch verÄndert bei Änderungen eines anderen Mandanten in dieser Tabelle. Dann erfolgt ein Update eventuell unnötig.


tm3tm3   Doku update_dateien © 2008   www.osmer.de