Ausfallserver: Unterschied zwischen den Versionen

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 22: Zeile 22:


  #min  hour                              daymo  month  daywk  usr  cmd
  #min  hour                              daymo  month  daywk  usr  cmd
  0    4,6,8,9,10,11,12,13,14,15,16,18  *      *      1-5    root  /root/spare.sh
  0    4,6,8,9,10,11,12,13,14,15,16,18  *      *      1-5    root  /etc/spare.sh


* Das Script verlanlasst den Server die Datenbanksicherung auf dem Share des Spare abzulegen
* Das Script verlanlasst den Server die Datenbanksicherung auf dem Share des Spare abzulegen
Zeile 28: Zeile 28:


  #!/bin/bash
  #!/bin/bash
  #  spare.sh (auf dem Client)
  #  
#
  # /etc/spare.sh (auf dem Client)
  #
  #
  BAND=$(date +%s)
  BAND=$(date +%s)
  ssh server /root/save.sh prod-db $BAND
  ssh server /etc/save.sh prod-db $BAND
  GBAK -R -P 16384 -USER SYSDBA -PASSWORD masterkey $BAND.fbak spare.fdb.tmp
  GBAK -R -P 16384 -USER SYSDBA -PASSWORD masterkey $BAND.fbak spare.fdb.tmp
  rcfirebird stop
  rcfirebird stop
Zeile 41: Zeile 41:


  #!/bin/bash
  #!/bin/bash
# save.sh (auf dem Server)
  #
  #
# /etc/save.sh (auf dem Server)
  #
  #
  umount /srv/mnt
  umount /srv/mnt

Version vom 26. Juni 2007, 09:46 Uhr

für eine OrgaMon-System-Installation mit einem Linux-System als FirebirdSQL Server ist es leicht möglich einen Ausfall Server zur Verfügung zu stellen, der eine "Spare" Datenbank ständig in Bereitschaft hält. Dabei sollte es sich wiederum um einen Linux Server handeln. Bei Ausfall des Hauptservers können die Clients direkt mit diesem "Spare" in Verbindung treten. Der Spare-Datenbank fehlen in diesem Fall die Änderungen an der Datenbank der letzten 40 Minuten.

Vorbereitungen

ssh-Automatisierung

Der Spare (genant Client) muss zunächst mit dem Hauptserver (genannt Server) bekannt gemacht werden, dies ist hier Linux.ssh beschrieben. Dies ist notwendig, da wir in der ersten Phase den Client veranlassen das Backup auf dem Server zu starten. Dazu muss sich der Client inerhalb eines Scripts in den Server "einloggen" um ein dortiges Script zu starten.

Samba auf dem Client

Der Client muss eine SMB-Freigabe anbieten, auf dem der Server sein .fbak (die Datensicherung) ablegen kann. Diese wird nicht umständlich nach der Erzeugung umkopiert, sondern direkt durchen firebird-Server auf dem Share, also direkt auf dem Plattenbereich des Spares angelegt. Zudem erreichen wir so, dass möglichst zeitnah eine Sicherung der aktuellen Datenbank auf einer anderen Platte (als die der Datenbank selbst) zur Verfügung steht.

FirebirdSQL auf beiden Systemen

Beide Systeme müssen einen FirebirdSQL-Dienst am laufen haben.

Sicherungs-Phasen

  • In der /etc/crontab des Spares wird ein Sicherungsscript "spare.sh" jede Stunde (zu den üblichen Arbeitszeiten) gestartet
#min  hour                              daymo   month   daywk   usr   cmd
0     4,6,8,9,10,11,12,13,14,15,16,18   *       *       1-5     root  /etc/spare.sh
  • Das Script verlanlasst den Server die Datenbanksicherung auf dem Share des Spare abzulegen
  • Danach wird die Datenbank vom Spare restored und online geschaltet (STOP/COPY/START).
#!/bin/bash
# 
# /etc/spare.sh (auf dem Client)
#
BAND=$(date +%s)
ssh server /etc/save.sh prod-db $BAND
GBAK -R -P 16384 -USER SYSDBA -PASSWORD masterkey $BAND.fbak spare.fdb.tmp
rcfirebird stop
rm spare.fdb
mv spare.fdb.tmp spare.fdb
  • Das Server Script mountet das Share frisch, damit keine Notwendigkeit besteht, dass das Spare 24 Stunden durchläuft.
#!/bin/bash
#
# /etc/save.sh (auf dem Server)
#
umount /srv/mnt
umount /srv/mnt
mount -t cifs //raib90/i\$ /srv/mnt -o user=Administrator,password=pass
/opt/firebird/bin/gbak -B -V -T -USER SYSDBA -PASSWORD masterkey $1.fdb /srv/mnt/fdb/sewa/$2.fbak
umount /srv/mnt

Notfall-Plan

  • Tritt der Notfall ein sollte man prüfen, ob auf einem Spare noch ein Restore läuft -> wenn JA, warten, bis dieses zu Ende gelaufen ist oder die Datenbank wegkopieren, und zunächst den aktuellen spare.fdb zur Verfügung stellen.
  • auf dem Spare den Cron-Job stoppen damit keine weiteren Versuche mehr unternommen werden -.fbaks zu ziehen oder den firebird Dienst zu unterbrechen.
  • Nachdem das spare bereitsteht, sich um das Server Problem kümmern, ev. dafür sorgen dass die Original DB wieder online geht, wenn nicht möglich das spare als neue Haupt DB einspielen.