Uploaded by sidax62051

test

advertisement
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
© Viet Anh Dang
0
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
© Viet Anh Dang
1
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
© Viet Anh Dang
2
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
Abkürzungsverzeichnis
1-wtp
Werkstatt-Terminplanungssoftware der acs Systemhaus GmbH
acs
acs Systemhaus GmbH
NFS
Network File System
CSS
Cascading Style Sheets
HTML
Hypertext Markup Language
JS
JavaScript
HTTP
Hypertext Transfer Protocol
MVC
Model View Controller
PHP
PHP: Hypertext Preprocessor
SMB
Server Message Block
SFTP
Secure File Transfer Protocol
RoR
Ruby on Rails
BASH
Bourne Again Shell
GUI
Graphical User Interface
VM
Virtuelle Maschine/Virtual Machine
HAML
HTML Abstraction Markup Language
UAT
User Acceptance Test
© Viet Anh Dang
I
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
Abbildungsverzeichnis
Anlage A1: Ressourcenplan .................................................................................................... i
Anlage A2: Lastenheft (Auszug) ............................................................................................. ii
Anlage A3: Pflichtenheft (Auszug) ......................................................................................... iii
Anlage A4: GUI-Entwurf ........................................................................................................ iv
Anlage A5: Migration zur Erstellung der Tabelle "backup_managements" .............................. v
Anlage A6 Datenbank-Backup RoR-Implementierung ........................................................... vi
Anlage A7: Datenbank-Backup BASH-Skript ........................................................................ vii
Anlage A8: Backup-Logs GUI .............................................................................................. viii
Anlage A9: Datenbank-Backup-Verwaltung GUI.................................................................... ix
Anlage A10: Backup-Log-Datei .............................................................................................. x
Anlage A11: Backup-Logs GUI .............................................................................................. xi
© Viet Anh Dang
II
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
Tabellenverzeichnis
Tabelle 1: Projektphasen Zeitplanung3
Tabelle 2: Kostenaufstellung5
© Viet Anh Dang
III
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
Bestätigter Zeitnachweis der Projektdurchführung
Datum
20.03.2023
Durchgeführte Arbeiten

Zeit
Analyse und Verfassen eines Lastenheftes mit spezifizierten 8 h
Funktionen
21.03.2023
22.03.2023

Entwurf der Datenbank-Backup-Verwaltung in Ruby on Rails

Entwurf für das GUI

Verfassen des Pflichtenheftes

Setup der Entwicklungsumgebung

Erstellen
und
Konfigurierung
8h
8h
der
Datenbank-Backup-
Verwaltung
23.03.2023
24.03.2023
27.03.2023
28.03.2023

Implementierung der Datenbank-Backup-Verwaltung

Erstellung der MVC-Komponenten

Implementierung der GUI

Schreiben der Migrationen, sowie erstellen der Datenbanken

Implementierung der Frontend-Validierung

Implementieren der Backend-Validierung

Implementieren des Sicherungsvorgangs

Implementieren
der
8h
8h
8h
8h
Datenbank-Backup-Ablagefunktionen
mittels SMB und NFS
29.03.2023

Implementieren
der
Datenbank-Backup-Ablagefunktionen 8 h
mittels SFTP und FTP

Bereitstellung des Projektes auf einem Testsystem

Erstabnahme durch den Projektbetreuer
31.03.2023

Verfassen der Projektdokumentation
8h
03.04.2023

Verfassen der Kundendokumentation
2h

Verfassen der Entwicklerdokumentation

Finale Abnahme durch den Projektbetreuer
30.03.2023
6h
Gesamt 80 h
© Viet Anh Dang
4
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
Inhaltsverzeichnis
Abkürzungsverzeichnis ............................................................................................................................. I
Abbildungsverzeichnis ............................................................................................................................. II
Tabellenverzeichnis ................................................................................................................................ III
1 Einleitung .............................................................................................................................................. 1
1.1 Projektbeschreibung ..................................................................................................................... 1
1.2 Projektziel ...................................................................................................................................... 1
1.3 Projektumfeld ................................................................................................................................ 2
1.4 Projektbegründung........................................................................................................................ 2
2 Planungsphase ...................................................................................................................................... 2
2.1 Projektphasen................................................................................................................................ 3
2.2 Ressourcenplanung ....................................................................................................................... 3
2.3 Entwicklungsprozess ..................................................................................................................... 3
3 Analysephase ........................................................................................................................................ 4
3.1 Ist-Analyse ..................................................................................................................................... 4
3.2 Lastenheft ...................................................................................................................................... 4
3.3 Wirtschaftlichkeitsanalyse............................................................................................................. 5
3.3.1 Projektkosten ......................................................................................................................... 5
3.3.2 Amortisationsrechnung .......................................................................................................... 5
3.4 Nicht-finanzielle Vorteile ................................................................................................................... 6
4 Entwurfsphase ...................................................................................................................................... 7
4.1 Entwurf der Backendstruktur in RoR ............................................................................................. 7
4.2 Entwurf der Datenbankstruktur .................................................................................................... 8
4.3 Entwurf des grafischen Benutzerinterfaces (GUI) ......................................................................... 8
4.4 Qualitätssicherung und Tests ........................................................................................................ 9
4.5 Pflichtenheft ................................................................................................................................ 10
5 Implementierungsphase..................................................................................................................... 10
5.1 RoR-Implementierung des Backends .......................................................................................... 10
5.2 Implementierung der Benutzeroberfläche ................................................................................. 11
5.3 Übernahme der bestehenden Backup-Routine in Controller ..................................................... 12
6 Abnahmephase................................................................................................................................... 13
6.1 Abnahme-Testverfahren ............................................................................................................. 13
6.2. Fehlerbehebung und Optimierung ............................................................................................. 13
6.3 Abnahme durch den Projektbetreuer ......................................................................................... 13
7 Fazit .................................................................................................................................................... 14
© Viet Anh Dang
5
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
Literaturverzeichnis ............................................................................................................................... 15
Glossar ................................................................................................................................................... 16
A Anhang .................................................................................................................................................. i
Anlage A1: Ressourcenplan .................................................................................................................. i
Anlage A2: Lastenheft (Auszug)............................................................................................................ii
Anlage A3: Pflichtenheft (Auszug) .......................................................................................................iii
Anlage A4: GUI-Entwurf ...................................................................................................................... iv
Anlage A5: Migration zur Erstellung der Tabelle "backup_managements" .........................................v
Anlage A6 Datenbank-Backup RoR-Implementierung ........................................................................ vi
Anlage A7: Datenbank-Backup BASH-Skript....................................................................................... vii
Anlage A8: Backup-Logs GUI ............................................................................................................. viii
Anlage A9: Datenbank-Backup-Verwaltung GUI ................................................................................. ix
Anlage A10: Backup-Log-Datei .............................................................................................................x
Anlage A11: Backup-Logs GUI ............................................................................................................. xi
Selbständigkeitserklärung .................................................................................................................. xii
Kundendokumentation...................................................................................................................
Inhaltsverzeichnis ................................................................................................................................ 1
Einführung ........................................................................................................................................... 2
Datenbank-Backup-Verwaltung-Interface .......................................................................................... 2
Backup aktivieren/deaktivieren .......................................................................................................... 2
Protokolle, Verbindung testen und manuelles Backup ....................................................................... 2
Wiederholen jeden .............................................................................................................................. 3
Weitere Einstellungen ......................................................................................................................... 3
Backup-Liste ........................................................................................................................................ 3
Änderungen speichern ........................................................................................................................ 3
Fazit ..................................................................................................................................................... 3
© Viet Anh Dang
6
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
1 Einleitung
Diese Projektdokumentation beschreibt das IHK-Abschlussprojekt, welches der Autor, Viet
Anh Dang im Rahmen seiner Ausbildung zum Fachinformatiker in der Fachrichtung
Anwendungsentwicklung durchgeführt hat. Der Ausbildungsbetrieb ist die acs Systemhaus
GmbH (acs), ein IT-Systemhaus mit Sitz in Glaubitz, welches sich als Dienstleister
vorwiegend auf Lösungen für Autohäuser spezialisiert hat.
1.1 Projektbeschreibung
1-wtp ist eine Softwarelösung, welche in Form einer Webanwendung als virtuelle Linux
Maschine im Intranet läuft. Es ist ein für Autohäuser entwickelter und vertriebener WerkstattTerminplaner der acs Systemhaus GmbH. Die Hauptfunktion von 1-wtp besteht darin, die
täglichen Abläufe und Prozesse der Mitarbeiter im Autohaus zu unterstützen.
1-wtp wurde auf Basis von PHP geschrieben. Vor einigen Jahren entschied sich acs auf
Ruby on Rails (RoR) ein serverseitiges Web-Anwendungs-Framework, welches in Ruby
geschrieben wurde, umzusteigen. RoR bringt aufgrund der spezialisierten Ausrichtung auf
Webanwendungen alle notwendigen Tools zur Entwicklung einer modernen Webanwendung
mit. Das verringert die Entwicklungszeit für neue Features und erleichtert das Schreiben von
gut strukturiertem Programmcode.
Infolge der täglichen Anwendung durch die Mitarbeiter des Autohauses wird eine
beträchtliche Menge an Datensätzen gespeichert und in Form von Anfragen an die
Datenbank von 1-wtp gesendet. Um einen Datenverlust vorzubeugen, welcher bei z.B. bei
einem plötzlichen Systemausfalls entstehen könnte, werden tägliche Sicherungen in der 1wtp virtuellen Maschine (VM) durchgeführt. Diese werden sowohl lokal auf dem Datenträger
der Linux VM, als auch auf einem externen Netzlaufwerk abgelegt. Dabei wird in den
meisten Fällen eine Windows-Dateifreigabe
angebunden
und die Sicherung dort
abgespeichert. Das Netzwerkprotokoll für diese Dateifreigabe ist dabei SMB. Um Platz zu
sparen werden die Sicherung ZIP-komprimiert.
1.2 Projektziel
Ziel dieses Projektes ist es, eine Datenbank-Backup-Verwaltung in 1-wtp zu entwickeln, über
welchen es autorisierten Nutzern erlaubt wird Datenbank-Backups einzurichten und zu
verwalten. Diese Verwaltung sollen über ein Graphical User Interface (GUI) bedienbar sein.
© Viet Anh Dang
1
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
Die Verwaltung der Datenbank-Backups soll zum einen das Definieren eines Ablageziels, die
Angabe der Uhrzeit zur Durchführung des Datenbank-Backups, die Anzeige vorhandener
Datenbank-Backups und das manuelle Starten eines Datenbank-Backups umfassen. Dabei
sollen für das Ablageziel unterschiedliche Protokolle wie z.B. NFS und SMB unterstützt
werden. Durch die Möglichkeit, dass Benutzer die Sicherungsparameter anpassen können,
ist ein reduzierter Supportaufwand zu erwarten, da nicht wie bisher ein Techniker
Anpassungen an Sicherungsparametern vornehmen muss.
1.3 Projektumfeld
Das Projekt wird in der Entwicklungsabteilung von acs durchgeführt. Verantwortlicher für
Vertrieb und Schulung ist Florian Bems und hat das Projekt in Auftrag gegeben.
Johannes Schuster Chefentwickler bei acs, wird das Projekt beaufsichtigen und leiten, sowie
die Projektabnahme durchführen.
Umgesetzt wird das Projekt im vorhandenen RoR-Framework.
1.4 Projektbegründung
Aktuell werden ein statischer Zielpfad, sowie Anmeldedaten über ein Skript in Form einer
Netzwerkfreigabe seitens Windows für das tägliche Datenbank-Backup hinterlegt, welches
bis zum jetzigen Zeitpunkt ausschließlich durch den 1-wtp Support geändert werden kann.
Fortan soll das Skript durch die Neuimplementierung in RoR abgelöst werden. Dies soll die
Wartung und Erweiterung der zu sichernden Daten vereinfachen. Ferner soll es möglich
sein, über eine graphische Oberfläche bereits existente Datenbank-Backups anzuzeigen, zu
verwalten und Backups manuell auszuführen. Autorisierten Personen soll es erlaubt werden,
die Einstellungen zu den Backups zu ändern. Bei Fehlschlag des täglichen DatenbankBackups soll zusätzlich eine Benachrichtigung an die autorisierten Benutzer gesendet
werden.
2 Planungsphase
Der folgende Abschnitt erläutert, wie das weitere Vorgehen bestimmt wurde. Hierfür wurden
die Projektphasen geplant, die benötigten Ressourcen ermittelt und der Entwicklungsprozess
festgelegt.
© Viet Anh Dang
2
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
2.1 Projektphasen
Für die Umsetzung des IHK-Abschlussprojektes standen dem Autor 80 Stunden zur
Verfügung. Um sicherzustellen, dass der vorgegebene Zeitrahmen eingehalten werden
konnte, ist ein Zeitplan für die einzelnen Projektphasen aufgestellt worden. Dazu wurde das
Projekt vor Beginn in einzelne Phasen unterteilt. Die geschätzte Zeitplanung der einzelnen
Phasen kann der Tabelle 1: Projektphasen Zeitplanung entnommen werden
Projektphasen
Geplante Zeit
Analyse
8 Std.
Entwurf
8 Std.
Implementierung
48 Std.
Abnahme und Test
8 Std.
Dokumentation
8 Std.
Gesamt
80 Std.
Tabelle 1: Projektphasen Zeitplanung
2.2 Ressourcenplanung
Um das Projekt durchführen zu können wurden diverse Hard- und Softwaretools benötigt.
Eine Auflistung dieser Ressourcen befindet sich im Anhang A1 auf S.i. Es wurde bei den
Software-Ressourcen darauf geachtet, dass sie entweder frei verfügbar waren oder acs
bereits über eine Lizenz für die entsprechenden Ressourcen verfügte, um unnötige Kosten
zu vermeiden.
2.3 Entwicklungsprozess
Um
sicherzustellen,
dass
der
geforderte
Funktionsumfang
den
Ansprüchen
und
Vorstellungen des Auftraggebers entsprach, hat sich der Autor für eine agile Entwicklung
entschieden. Dabei wurden kurze tägliche Meetings vereinbart, welche den aktuellen Stand
der Entwicklung kurz dokumentieren sollten.
Indem die Arbeitsschritte in kleinere Pakete aufgeteilt wurden, konnte die Planungsphase
vergleichsweise kurzgehalten werden. Das lag daran, dass viele Entscheidungen erst
© Viet Anh Dang
3
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
während der Durchführungsphase getroffen wurden, nachdem der Auftraggeber das
vorherige Arbeitspaket begutachtet hatte. Dabei wurde das Projekt in drei Phasen unterteilt:
1. Sicherungsskript in Ruby-Code überführen und Logik für Datenbank-Backup
implementieren
2. GUI-Entwicklung
3. Verknüpfung von GUI mit Backend
Als Abnehmer für die Phasen kamen jeweils unterschiedliche Personen in Frage. So wurde
definiert, dass Phase 2 durch Herrn Bems abgenommen wird, Phase 1 und 3 hingegen von
Herrn Schuster abgenommen werden.
3 Analysephase
Die Analysephase wurde durchgeführt, um die Wünsche des Fachbereichs zu ermitteln und
den derzeitigen Stand festzuhalten. Teil dieser Phase waren eine wirtschaftliche Betrachtung
und die Erstellung eines Lastenheftes.
3.1 Ist-Analyse
Wie in den Abschnitten 1.1 „Projektbeschreibung“ und 1.4 „Projektbegründung“ bereits
erwähnt, wurde eine effizientere Lösung als das derzeitige Datenbank-Backup-Skript
benötigt. Zuvor wurden täglich Datenbank-Backups durch ein Bourne-Again Shell (BASH)Skript, sowie Mount mit fest hinterlegten Daten ausgeführt. Änderungen an den Daten waren
ausschließlich durch einen Techniker möglich. Aufgrund der sich häufenden Supportanrufe
bzgl. Datenbank-Backups, entschied sich acs, die Funktionalität der Datenbank-Backups in
RoR zu implementieren. Mit der Möglichkeit, die Daten durch autorisierte Nutzer ändern zu
lassen,
somit lies sich der Supportaufwand für dieses Anliegen deutlich reduzieren und es Bedarf
keines Technikers zur Anpassung an den Datenbank-Backups mehr.
3.2 Lastenheft
Das Lastenheft wurde im Anschluss mehrerer Meetings der Entwicklungsabteilung von acs
erstellt. Diese umfassen die Spezifikationen und Anforderungen für die Umsetzung der
© Viet Anh Dang
4
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
Datenbank-Backup-Verwaltung. In der Anlage A2 Lastenheft (Auszug) ist ein Auszug aus
dem Lastenheft entnommen worden.
3.3 Wirtschaftlichkeitsanalyse
3.3.1 Projektkosten
Um einen Vergleich ziehen zu können, ob die Fortführung des bestehenden DatenbankBackup-Skriptes oder eine Neuentwicklung sich rentiert, mussten zunächst die Projektkosten
ermittelt werden. Da genauen Personalkosten aus datenschutzrechtlichen Gründen nicht
veröffentlicht werden dürfen, sind diese anhand durchschnittlicher Bruttostundenlöhne
angegeben und berechnet worden. Es wurde von Kosten von 11 € für einen Auszubildenden
und 22 € für einen Mitarbeiter ausgegangen. Für die Nutzung der Ressourcen wurde hier
von einem pauschalen Stundensatz von in Höhe von 14 € ausgegangen.
Daraus resultiert folgende Tabelle 2: Kostenaufstellung, welche alle Kosten auflistet.
Vorgang
Personal
Zeit
Durchgeführte 1 Auszubildender
Personalkosten Ressourcenkosten Gesamt
72 h
792 €
1008 €
1800 €
1 Mitarbeiter
4h
88 €
56 €
244 €
1 Auszubildender
4h
44 €
56 €
100 €
1 Mitarbeiter
4h
88 €
56 €
244 €
1 Auszubildender
4h
44 €
56 €
100 €
Entwicklung
Technische
Abnahme
Abnahme
Gesamtkosten des Projektes
2488 €
Tabelle 2: Kostenaufstellung
3.3.2 Amortisationsrechnung
Im folgenden Abschnitt soll ermittelt werden, ob und wann die Investition in die
Neuentwicklung und -implementierung des Datenbank-Backup-Skriptes in RoR sich
amortisiert. Anhand des ermittelten Zeitpunktes lässt sich anschließend einschätzen, wie
wirtschaftlich sinnvoll diese Investition ist.
© Viet Anh Dang
5
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
Der Autor hat zur Einschätzung Support-Tickets, die im Ticketsystem bei acs im
vergangenen Jahr in Bezug auf Anpassungen an Datenbank-Backups erstellt wurden
herausgesucht. Dabei konnten insgesamt 15 Tickets identifiziert werden, die im Schnitt drei
Stunden in Anspruch nahmen.
Für die Neuentwicklung der Datenbank-Backup-Verwaltung ging der Autor von einem
Wartungsaufwand von durchschnittlich einer halben Stunde je Monat aus. In dieser Zeit sind
sowohl Rückfragen durch Kunden bzgl. der Bedienung der Verwaltungsoberfläche, wie auch
kleinere Anpassungen an der eigentlichen Sicherungsroutine oder Fehlerbehebungen an
Benutzeroberfläche oder Sicherungsskript enthalten. Außerdem ist damit zu rechnen, dass in
der Anfangsphase nach Einführung der Oberfläche zur Verwaltung der Backups, die Kunden
von acs vermehrt darauf hingewiesen werden müssen, dass sie die Verwaltung eigenständig
durchführen können bzw. dass die Kunden bei Anpassungen kurze Unterstützung benötigen.
Daher wird damit gerechnet, dass der monatliche Supportaufwand im ersten Jahr nach
Umsetzung noch bei durchschnittlich eine Stunde pro Monat liegt, sich danach aber auf die
erwähnte halbe Stunde reduziert.
Die Kostenersparnis im ersten Jahr beläuft sich dabei auf 72 € je Monat (zwei Stunden *
(Stundensatz in Höhe von 22 € + Ressourcenkosten je Stunde in Höhe von 14 €)). Im
gesamten ersten Jahr ergibt sich damit eine Ersparnis von 864 €. Daraus folgt, dass das
Projekt nach einem Jahr noch nicht wirtschaftlich sinnvoll ist. Für die folgenden Jahre wird
mit den Restkosten in Höhe von 1624 € die Amortisationsdauer berechnet. Dafür teilt man
die Rest-Projektkosten in Höhe von 1624 € durch den monatlichen Rückfluss von 90 €,
welche sich aus dem Bruttostundenlohn und der benötigten Zeit (zweieinhalb Stunden *
(Stundensatz in Höhe von 22 € + Ressourcenkosten je Stunde in Höhe von 14 €)), um den
Vorgang zu bearbeiten, ergibt. Die Amortisationsdauer für die Restkosten beträgt nach der
Rechnung ca. 18 Monate. Daraus ergibt sich eine Gesamtamortisationsdauer von ca. 30
Monaten.
3.4 Nicht-finanzielle Vorteile
Es lassen sich positive Auswirkungen der Neuimplementierung des Datenbank-BackupSkriptes feststellen, welche unabhängig von monetären Aspekten sind.
Folgende Aspekte sprechen für die Neuimplementierung des Datenbank-Backup-Skriptes:

Erhöhung der Kundenzufriedenheit durch Möglichkeit der Anpassung der Backups
durch den Kunden selbst

Entlastung des Kundensupports bei acs
© Viet Anh Dang
6
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
4 Entwurfsphase
In der Entwurfsphase werden die grundlegenden Strukturen und Elemente der DatenbankBackup-Verwaltung konzipiert. Hierzu zählen der Entwurf der Backendstruktur in Ruby on
Rails (RoR) und der Entwurf des Graphical User Interfaces (GUI) für die Anwendung.
Ziel dieser Phase ist es, eine solide Grundlage für die anschließende Implementierung zu
schaffen.
4.1 Entwurf der Backendstruktur in RoR
Im Backend und dem Model-View-Controller (MVC)-Prinzip von RoR folgend soll die Logik
und die Ausführung der Backups über den Controller gesteuert werden. Zum Speichern der
Einstellungen wird ein Model notwendig sein.
Es werden folgende Daten benötigt, um den Anforderungen gerecht zu werden:

Uhrzeit der Ausführung

Tage der Ausführung

Netzwerkprotokoll, sowie Version für Ablage der Sicherungen

Zugangsdaten (Benutzer, Passwort, Speicherort) für die Sicherungsablage
Zur Anbindung des Frontends werden im Controller weiterhin mindestens folgende
Methoden benötigt, um Daten zu liefern bzw. zu speichern:

index – Zum Laden aller Einstellungen aus der Datenbank aus dem erwähnten Model

update – Zum Speichern und Aktualisieren aller Einstellungen in der Datenbank

backup_job – Zum Ausführen eines manuellen Backups

test_connection – Zum Testen der Sicherungsablage, um zu prüfen, ob Sicherungen
mit den angegebenen Zugangsdaten im Sicherungspfad abgelegt werden können.
Evtl. ergeben sich im Rahmen der Implementierung weitere notwendige Methoden.
Die Backups werden die Datenbank von 1-wtp und nutzergenerierte Inhalte enthalten. Dazu
werden die Pfade aus dem bisherigen BASH-Skript übernommen werden müssen.
Da ein Backup sowohl anhand des eingestellten Zeitrahmens als auch manuell über das GUI
gestartet werden kann, macht es Sinn die Logik für das eigentliche Backup in ein separates
Modul auszulagern, sodass es keine Code-Duplizierung geben wird.
© Viet Anh Dang
7
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
4.2 Entwurf der Datenbankstruktur
Um die Backup-Einstellungen und -Informationen effizient zu speichern und zu verwalten,
wird
eine
geeignete
Datenbankstruktur
"backup_managements" wird
verwendet,
entworfen.
um
die
Die
Datenbanktabelle
erforderlichen Informationen
und
Einstellungen für das Backup-System zu speichern.
Die Tabelle "backup_managements" enthält folgende Spalten:
 id: Eindeutige Identifikationsnummer für jeden Datensatz (Primärschlüssel)
 active: Boolescher Wert, der angibt, ob das Backup aktiviert ist oder nicht
 backup_time: Textfeld zur Speicherung der Uhrzeit für das geplante Backup
 monday: Boolescher Wert zur Speicherung des Wochentag Montag
 tuesday: Boolescher Wert zur Speicherung des Wochentag Dienstag
 wednesday: Boolescher Wert zur Speicherung des Wochentag Mittwoch
 thursday: Boolescher Wert zur Speicherung des Wochentag Donnerstag
 friday: Boolescher Wert zur Speicherung des Wochentages Freitag
 saturday: Boolescher Wert zur Speicherung des Wochentag Samstag
 sunday: Boolescher Wert zur Speicherung des Wochentag Sonntag
 server_address: Textfeld zur Speicherung der IP-Adresse des Backup-Ziels
 path: Textfeld zur Speicherung des Pfads auf dem Zielgerät
 port: Ganzzahl zur Speicherung des verwendeten Ports
 protocol: Textfeld zur Speicherung des verwendeten Protokolls (SMB, SFTP)
 version: Textfeld zur Speicherung der Protokollversion (vorerst nur relevant für SMB)
 username: Textfeld zur Speicherung des Benutzernamens für die Sicherungsablage
 password: Textfeld zur Speicherung des Passworts für die Sicherungsablage
 created_at: Zeitstempel zur Speicherung des Erstellungsdatums des Datensatzes
 updated_at: Zeitstempel zur Speicherung des letzten Aktualisierungsdatums des
Datensatzes
Für
eine
detaillierte
Darstellung
der
Migration,
die
die
Datenbanktabelle
"backup_managements" erstellt, siehe Anlage A5.
4.3 Entwurf des grafischen Benutzerinterfaces (GUI)
Der Entwurf des GUI zielt auf eine benutzerfreundliche Oberfläche für die DatenbankBackup-Verwaltung ab. Bei der Entwicklung der Benutzeroberflächen innerhalb von 1-wtp
© Viet Anh Dang
8
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
werden HTML, CSS, JS (JavaScript), die JavaScript-Bibliothek jQuery und das CSSFramework Bootstrap eingesetzt. Diese Technologien ermöglichen eine ansprechende und
responsive Gestaltung des GUI.
Die Hauptfunktionen des GUI sind:
 Übersichtliche Darstellung vorhandener Datenbank-Backups: Liste mit BackupDatum, Größe und Ablageziel.
 Möglichkeit zum sofortigen Starten eines Datenbank-Backups: Schaltfläche für
manuelles Datenbank-Backup.
 Einstellungen um Datenbank-Backups anzupassen: Bereich für autorisierte Nutzer,
um Datenbank-Backup-Parameter wie Ablageziel, Zeitpunkt und Protokolle zu
ändern.
Die wichtigsten Elemente des Benutzerinterfaces sind:
 Aktiv-Schalter zum Aktivieren/Deaktivieren des Datenbank-Backups
 Buttons zum Anzeigen von Protokollen, Testen der Verbindung und Ausführen eines
manuellen Backups
 Auswahl von Wochentagen, Uhrzeit und Sicherungsablage-Informationen
 Einstellungen für Protokoll (SMB, SFTP), Version und Anmeldedaten
 Tabelle zur Anzeige bestehender Datenbank-Backups
Für eine detaillierte Darstellung des GUI-Entwurfs siehe Anlage A4.
4.4 Qualitätssicherung und Tests
In diesem Abschnitt wird die Qualitätssicherung für die Datenbank-Backup-Verwaltung
erläutert. Hierfür hat sich der Autor für die testgetriebene Entwicklung entschieden. Das
anschließende Testen des gesamten Projektes soll sicherstellen, dass alle im Lastenheft
stehenden Anforderungen erfüllt wurden.
In diesem Projekt wurden funktionale Tests eingesetzt. Dabei wurde sich im Rahmen des
Projektes auf 4 konkrete Testszenarien konzentriert:

Test, dass Validierung der gesendeten Daten aus dem GUI durchgeführt wird (nur
valide Daten sollen gespeichert werden).

Verbindungstest mit validen und invaliden Zugangsdaten soll entsprechend der
Validität Erfolg oder einen Fehler zurückgeben.
© Viet Anh Dang
9
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp

Mit validen Zugangsdaten ein Datenbank-Backup ausführen und prüfen, dass eine
neue Backup-Datei auf dem angegebenen Zielpfad erstellt wurde.

Verifizierung, dass im Anschluss eines Datenbank-Backups (erfolgreich oder
fehlerhaft) eine Protokolldatei über den Datenbank-Backupverlauf erstellt wurde.
Die Funktionstests müssen vor der Abnahme fehlerfrei laufen. Bei der Abnahme
werden Tests in Form von manuellen Eingaben durch einen Benutzer über das GUI
durchgeführt und somit die korrekte Funktion des GUI verifiziert.
4.5 Pflichtenheft
Das Pflichtenheft ist ein essenzieller Bestandteil der Entwurfsphase, in dem alle notwendigen
Funktionen und Anforderungen, die für den erfolgreichen Abschluss des Projekts zwingend
umgesetzt werden müssen, festgehalten sind. In der Anlage A3 Pflichtenheft (Auszug) kann
eingesehen werden, welche Funktionen gefordert wurden. Damit wird sichergestellt, dass
alle Projektbeteiligten ein gemeinsames Verständnis der Projektziele und -anforderungen
haben.
5 Implementierungsphase
Die Implementierungsphase des Projekts konzentriert sich auf die Umsetzung der im
Entwurfs- und Planungsprozess entwickelten Konzepte und Strukturen. Dies beinhaltet die
Integration des bestehenden BASH-Skriptes in das Ruby on Rails (RoR) Projekt, die
Erstellung
der
erforderlichen
Datenbankstrukturen
und
die
Implementierung
der
Benutzeroberfläche. Ziel ist es, ein funktionsfähiges und benutzerfreundliches BackupSystem zu schaffen, das sowohl automatisierte als auch manuelle Backups ermöglicht und
dabei eine einfache Verwaltung der Datenbank-Backup-Einstellungen bietet.
5.1 RoR-Implementierung des Backends
Die RoR-Implementierung des Backends umfasst die Erstellung eines Controllers, eines
Models und eines Views, um das bestehende BASH-Skript in das bestehende RoR-Projekt
zu integrieren.
1. Controller (BackupManagementController): Der Controller ist zuständig für die
Verwaltung der Backup-Einstellungen, die Ausführung von manuellen DatenbankBackups und die Kommunikation zwischen der Benutzeroberfläche und dem
© Viet Anh Dang
10
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
Backend. Er enthält die Aktionen index, update, backup_job und test_connection,
welche ohne Änderungen laut Entwurfsphase implentiert wurden.
2. Model (BackupManagement): Das Model ist die Schnittstelle zu den gespeicherten
Daten in der Datenbank. Die Migration wurde entsprechend des Anhangs A5:
Migration zur Erstellung der Tabelle "backup_managements" umgesetzt.
3. View (index): Die View stellt das Formular für alle Einstellungen zur Verfügung und
ermöglicht die Anzeige und Bearbeitung der Datenbank-Backup-Einstellungen in der
Benutzeroberfläche.
5.2 Implementierung der Benutzeroberfläche
Die Implementierung der Benutzeroberfläche umfasst die Erstellung einer interaktiven und
benutzerfreundlichen Oberfläche, die es den Nutzern ermöglicht, Datenbank-BackupEinstellungen anzupassen, manuelle Backups auszuführen und eine Übersicht über
vorhandene Datenbank-Backups zu erhalten. Dabei wird die Kombination aus HAML (HTML
Abstraction Markup Language), CSS, JavaScript und der JavaScript-Bibliothek jQuery sowie
dem CSS-Framework Bootstrap verwendet.
Die Benutzeroberfläche besteht aus verschiedenen Elementen, die den Nutzern eine
einfache Interaktion mit dem Datenbank-Backup-System ermöglichen:
1. Aktivierungsschalter: Ein LC-Switch zur Aktivierung oder Deaktivierung des Backups.
Standardmäßig ist das Backup aktiviert.
2. Buttons: Drei Buttons für Protokolle, Verbindung testen und Datenbank-Backup
ausführen, die jeweils entsprechende Funktionen auslösen.
3. Wochentage und Uhrzeit: LC-Switches für jeden Wochentag und ein Formularfeld für
die Uhrzeit, um den Zeitpunkt des automatisierten Datenbank-Backups festzulegen.
4. Verbindungsparameter: Formularfelder für IP-Adresse, Pfad, Port und Protokoll
(SMB, SFTP), um das Ablageziel und die Verbindungsart zu spezifizieren.
5. Authentifizierung: Eingabefelder für Benutzername und Passwort, um sich am
Ablageziel zu authentifizieren.
6. Datenbank-Backup-Übersicht: Eine Tabelle, die vorhandene Backups anzeigt, mit
Informationen wie Bezeichnung, Erstellungsdatum und Größe sowie einem
Löschbutton.
Die Implementierung der Benutzeroberfläche erfolgt in Übereinstimmung mit dem im
Abschnitt 4.3 „Entwurf der grafischen Benutzeroberfläche“ beschriebenen Design (siehe
© Viet Anh Dang
11
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
Anlage A4 GUI-Entwurf). Die Verwendung von Bootstrap sorgt für eine ansprechende und
responsive Gestaltung, die sich an verschiedene Bildschirmgrößen und Geräte anpasst. Die
JavaScript- und jQuery-Elemente ermöglichen eine dynamische und reaktionsschnelle
Interaktion mit den Nutzern, um eine angenehme Benutzererfahrung zu gewährleisten.
Im Anhang A9 Datenbank-Backup-Verwaltung GUI ist ein Screenshot der vollständig
entwickelten GUI zu finden, wie sie in 1-wtp integriert wurde.
5.3 Übernahme der bestehenden Backup-Routine in Controller
In diesem Abschnitt wird die Neuimplementierung des Backup-Skriptes in das RoRSchnittstellenprojekt näher beschrieben. Wie bereits im Abschnitt 3.1 „Ist-Analyse“ erwähnt,
wurde das Datenbank-Backup zuvor durch ein BASH-Skript ausgeführt. Dieses Skript wurde
auch überwiegend für die Neuimplementierung in RoR übernommen, was man den Anhänge
A6 Datenbank-Backup RoR-Implementierung und A7 Datenbank-Backup BASH-Skript
entnehmen kann.
Dabei wurde das eigentliche Ausführen des Datenbank-Backups in ein separates Modul
ausgelagert. Diese Auslagerung ermöglicht es, die Funktion des Datenbank-Backups sowohl
bei Klick auf den Button im GUI als auch beim zeitgesteuerten Ausführen identisch zu
gestalten. Diese Modularisierung ermöglicht auch eine bessere Wartbarkeit des Codes, da
sich der Code nicht wiederholt.
Die Sicherung der Datenbank erfolgt mittels mysqldump. Bei der Sicherung wird immer ein
temporäres Verzeichnis erstellt, in welches dann die Datenbanksicherung abgelegt wird.
Zusätzlich werden diverse nutzergenerierte Inhalte, wie beispielsweise eigene Checklisten in
diesem Ordner abgelegt. Im Anschluss wird der temporäre Ordner komprimiert und danach
gelöscht.
Im Rahmen des Datenbank-Backups wird beim Aufruf aus dem GUI bei Fehlern bei der
Durchführung der Sicherung ein HTTP Status Code „404 Not Found“ zurückgegeben. Diese
Fehlermeldung wird mittels JavaScript ausgewertet und eine Fehlermeldung angezeigt. Bei
der Ausführung über die Zeitplanung wird eine Benachrichtigung für alle Administratoren
erstellt, wenn ein Fehler auftritt.
Bei der Ausführung der Datenbank-Backups wird eine Protokolldatei erstellt. Diese Log-Datei
kann aus dem GUI heruntergeladen werden und Screenshots der Ansichten und einer LogDatei können den Anhängen A10 Backup-Logs GUI und A12 Backup-Log-Datei entnehmen.
© Viet Anh Dang
12
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
6 Abnahmephase
In der Abnahmephase wurde das fertiggestellte Datenbank-Backup-Management-System
von den Stakeholdern überprüft und getestet, um sicherzustellen, dass es den
Anforderungen und Erwartungen entspricht. Diese Phase ist entscheidend, um die Qualität
und Zuverlässigkeit des Systems zu gewährleisten und eventuelle Probleme oder
Verbesserungsmöglichkeiten zu identifizieren.
6.1 Abnahme-Testverfahren
Für die Abnahme wurde folgendes Vorgehen festgelegt. Es wurden zum einen die in
Abschnitt 4.4 „Qualitätssicherung und Tests“ festgelegten Funktionstests umgesetzt und
ausgeführt. Nachdem diese Erfolgreich waren, wurden die Benutzerakzeptanztests (UAT)
durchgeführt. Diese führte Herr Florian Bems durch, weil dieser durch den ständigen
Kundekontakt im Rahmen des Vertriebs und der Schulung sicherstellen konnte, dass die
Bedienung
benutzerfreundlich
ist.
Im
Anschluss
führte
Herr
Johannes
Schuster
abschließende Tests durch, welche verifizierten, dass die Sicherungsdateien auf dem
angegebenen Zielsystem und -pfad abgelegt wurden.
6.2. Fehlerbehebung und Optimierung
Basierend auf den Ergebnissen der Abnahmetests wurden diverse, jedoch kleine, Probleme
identifiziert und behoben. Dabei wurden kleine Designanpassungen zur Verbesserung der
Benutzerfreundlichkeit laut Herrn Bems umgesetzt. So wurde eine Statusmeldung nach
Abschluss eines manuellen Backups eingebaut. Auch wurde festgestellt, das die Auflistung
der Sicherungen standardmäßig nach Datum sortiert sein sollte. Dies wurde entsprechend
umgesetzt.
6.3 Abnahme durch den Projektbetreuer
Durch die ständige Kommunikation mit dem Auftraggeber, war dieser bei der Abnahme
bereits vertraut mit der Benutzeroberfläche, sodass der Fokus der Abnahme auf den im
Pflichtenheft beschriebenen Funktionalitäten lag. Bei der Abnahme wurde noch festgestellt,
dass das Hinzufügen einer Fortschrittsanzeige in das GUI sinnvoll wäre, damit der Anwender
sehen kann, wie weit ein Backup ist und bei welchem Schritt es sich gerade befindet. Diese
Funktion war nicht im Lasten- oder Pflichtenheft definiert und wird zu einem späteren
Zeitpunkt nicht im Rahmen dieses Projektes hinzugefügt.
© Viet Anh Dang
13
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
Ansonsten verlief die Abnahme reibungslos, da alle im Pflichtenheft beschriebenen
Funktionen ordnungsgemäß funktioniert haben und es keine unerwarteten Fehler gab.
7 Fazit
Während der Durchführung des Projekts hat der Autor seine Kenntnisse über die Struktur
von 1-wtp vertieft. Dabei konnte der Autor seinen Wissensschatz in RoR festigen und
vertiefen.
Auch konnte der Autor bezüglich Planung und Durchführung von Projekten viele Erfahrungen
sammeln. Besonders bedeutsam war, dass die ständige Kommunikation und Rücksprache
für den erfolgreichen Abschluss des Projektes von großer Bedeutung waren.
Durch die Einführung von täglichen Meetings konnte das Projekt in kurzer Zeit erfolgreich
abgeschlossen werden. Außerdem bot sich die Möglichkeit, erweiterte Funktionalitäten aus
dem RoR-Framework zu nutzen. Ferner hat der Kontakt zu erfahrenen Kollegen einen
enormen Beitrag zum Verständnis der Konzepte geleistet und half, grundlegende Fehler zu
vermeiden.
Durch die komfortable und simpel gehaltene Benutzeroberfläche fällt es vertrauten als auch
neuen Benutzern leicht, sich in der Benutzeroberfläche zurechtzufinden.
Die Bewertung des Projektes fällt sehr positiv aus. Dem Autor hat die Umsetzung viel Freude
bereitet und er hat in kurzer Zeit sehr viel Wissen erworben. Der Autor freut sich schon auf
die zukünftigen Entwicklungen und Erweiterungen der aktuellen Anwendung.
© Viet Anh Dang
14
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
Literaturverzeichnis
Ruby on Rails Guides (v4.2.11.3), Abrufdatum: 31.03.2023
URL: https://guides.rubyonrails.org/v4.2/
Sys-Filesystem (v1.4.3) Stand: 31.03.2023
URL: https://rubygems.org/gems/sys-filesystem/versions/1.4.3
Ruby-SMB (v3.2.5), Abrufdatum: 31.03.2023
URL: https://rubygems.org/gems/ruby_smb
Net-SFTP (v2.1.2), Abrufdatum: 31.03.2023
URL: https://rubygems.org/gems/net-sftp/versions/2.1.2?locale=de
Net-FTP (v0.2.0), Abrufdatum: 31:03.2023
URL: https://rubygems.org/gems/net-ftp
NFS-Rb (v1.0.2), Abrufdatum: 31.03.2023
URL: https://rubygems.org/gems/nfs-rb
Seite „Amortisationsrechnung“. In: Wikipedia, Die freie Enzyklopädie,
Bearbeitungsstand: 16. Oktober 2022 19:10 Uhr UTC
URL: https://de.wikipedia.org/wiki/Amortisationsrechnung (Abrufdatum: 31.03.2023)
MariaDB (v 10.1.48), Abrufdatum: 03.04.2023
URL: https://mariadb.org/
Projektdokumentation Fachinformatiker für Anwendungsentwicklung 2018 von Björn
Theuerkauf, Abrufdatum: 31.03.2023
URL: https://s3.eu-central1.amazonaws.com/fiae/Beispiele/ProjektdokumentationFachinformatikerAnwendungs
entwicklung2018BjoernTheuerkauf.pdf
© Viet Anh Dang
15
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
Glossar
Begriff
Definition / Erklärung
acs
acs Systemhaus GmbH
1-wtp
ein Werkstatt-Terminplaner für Autohäuser
RoR
Ruby
on
Rails
serverseitiges
(kurz
Rails)
stellt
ein
Webanwendungs-Framework
dar, welches unter der MIT-Lizenz in der
Programmiersprache Ruby verfasst wurde.
PHP
eine Skriptsprache mit einer an C und Perl
angelehnten Syntax
MVC
Das Model-View-Controller ist ein SoftwareEntwurfsmuster, das weit verbreitet für die
Gestaltung
von
Benutzeroberflächen
eingesetzt wird. Es gliedert die dazugehörige
Programmlogik
in
drei
eng
miteinander
verknüpfte Elemente auf.
GUI
GUI steht für "Graphical User Interface" und
bezieht sich auf die visuelle Darstellung von
Programmen und Anwendungen.
HTTP
HTTP (Hypertext Transfer Protocol) ist ein
Kommunikationsprotokoll,
das
zur
Übertragung von Daten im Internet verwendet
wird. Es dient zum Abrufen von Webseiten
und anderen Ressourcen, die im Internet
bereitgestellt werden, wie die Anmeldung an
eine Webseite.
BASH
Bash ist eine Kommandozeilenschnittstelle,
die
es
Benutzern
einzugeben,
ermöglicht,
Programme
und
Befehle
Skripte
auszuführen.
© Viet Anh Dang
16
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
ZIP
ZIP ist ein komprimiertes Dateiformat zur
Speicherung
und
Übertragung
von
mehreren Dateien in einer einzelnen Datei.
LC-Switch
LC-Switch
welches
ist
eine
jQuery-Bibliothek,
Checkbox-Felder
und
Radio-
Buttons in Form eines Schalters darstellen.
Mysqldump
Mysqldump ist ein Befehlszeilen-Tool, mit
dem
eine
MySQL-Datenbank
in
eine
Textdatei exportiert werden kann, um sie zu
sichern oder auf eine andere Datenbank zu
importieren.
jQuery
jQuery ist eine JavaScript-Bibliothek zur
Vereinfachung von JavaScript-Code.
Bootstrap
Bootstrap ist ein Framework für das Design
von
responsiven
Webseiten
mit
vorgefertigten Komponenten und Vorlagen.
Framework
Ein
Framework
ist
Softwaregerüst,
Entwicklungsprozess
ein
vorgefertigtes
das
vereinfacht
den
und
beschleunigt.
© Viet Anh Dang
17
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
A Anhang
Anlage A1: Ressourcenplan
Hardware

Laptop
Software

Betriebssystem – Windows 10 Enterprise LTSC

Betriebssystem – Debian 10.9

Entwicklungsumgebung für Ruby on Rails – JetBrains RubyMine 2019.9.5

Entwicklungsumgebung für PHP – JetBrains PhpStorm 2018.3.6

Datenbanksystem – MySQL

Datenbankverwaltung – phpMyAdmin

Erstellung von Mockups für GUI – Balsamiq (30 Tage Demoversion)

Versionsverwaltung – git

Bereitstellung virtueller Maschinen – PROXMOX Virtual Environment 6.2-10

Konsolenemulator für Windows – PuTTY

Laufzeitumgebung – Ruby 2.5.9-p229

Laufzeitumgebung – Rails 4.2.10
Virtuelle Maschinen

Debian 10.9 mit 4GB RAM

Windows 10 Enterprise LTSC mit 12GB RAM
Personal

Projektbetreuer und Auftraggeber des Projektes – Florian Bems

Programmierbetreuer und Abnahme des Codes – Johannes Schuster

Entwickler – Viet Anh Dang
© Viet Anh Dang
i
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
Anlage A2: Lastenheft (Auszug)
In dem nachfolgenden Auszug werden die grundlegenden Voraussetzungen für die
Entwicklung einer Datenbank-Backup-Lösung für die Datenbank beschrieben.
Anforderungen
Folgende Anforderungen müssen von der Datenbank-Backup-Verwaltung für die Datenbank
erfüllt werden:

Es soll eine moderne Benutzeroberfläche gestaltet werden. Das Design soll analog
zu der aktuell für Neuentwicklungen vorgegebenen Richtlinie entworfen werden.

Autorisierte Nutzer sollen in der Lage sein, eigenständig und jeder Zeit, Einstellungen
über die Benutzeroberfläche an den Datenbank-Backup durchführen zu können, wie
z.B. Anmeldedaten, Passwort.

Eine Benachrichtigung soll den Nutzer in Kenntnis setzen, wenn am Ablageort der
Backups der Speicherplatz unzureichend ist.

Bereits erstellte Datenbank-Backups sollen in der Benutzeroberfläche dargestellt
werden.

Über eine Schaltfläche sollen die eingetragenen Verbindungsdaten überprüft werden
können.

Eine Benachrichtigung soll den Administrator in Kenntnis setzen, wenn ein
Datenbank-Backup nicht erfolgreich ausgeführt werden konnte.

Eine Löschung der bereits erstellten Datenbank-Backups soll ebenfalls über die
Benutzeroberfläche möglich sein.
© Viet Anh Dang
ii
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
Anlage A3: Pflichtenheft (Auszug)
Der folgende Auszug aus dem Pflichtenheft beschreibt die geplante Umsetzung aus dem
Lastenheft beschriebene Anforderungen:
Folgende Punkte werden zwingend umgesetzt:

Es soll das vorherige Bash-Skript ersetzt und in RoR neu implementiert werden.

Als Sicherungsziel müssen mindestens SFTP und SMB unterstützt werden.

Sämtliche Vorgänge des Datenbank-Backups werden in Form von Log-Files
protokolliert und können eingesehen werden.

Die Datenbank-Backups sollen in komprimierter Form abgelegt werden.

Die Datenbanksicherung wird wie bisher mittels des Tools mysqldump durchgeführt.

Bei Verbindungsproblemen mit dem Ablagepfad des Datenbank-Backups wird
trotzdem ein lokales Datenbank-Backup durchgeführt.
© Viet Anh Dang
iii
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
Anlage A4: GUI-Entwurf
© Viet Anh Dang
iv
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
Anlage A5: Migration zur Erstellung der Tabelle
"backup_managements"
class CreateBackupManagement < ActiveRecord::Migration
def change
create_table :backup_managements do |t|
t.string :server_address
t.integer :port
t.string :username
t.string :password
t.string :protocol
t.string :version
t.string :path
t.string :backup_time
t.boolean :active
t.boolean :monday
t.boolean :tuesday
t.boolean :wednesday
t.boolean :thursday
t.boolean :friday
t.boolean :saturday
t.boolean :sunday
t.timestamps null: false
end
end
end
© Viet Anh Dang
v
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
Anlage A6 Datenbank-Backup RoR-Implementierung
begin
puts "Backup starting"
# create target dir if it doesn't exist yet
unless Dir.exists? backup_dir
FileUtils.mkdir_p(backup_dir)
end
# generate temporary dir to put all files to backup into
if Dir.exists? tmp_dir
FileUtils.rm_r tmp_dir
FileUtils.mkdir_p tmp_dir
else
FileUtils.mkdir_p tmp_dir
end
# get all databases except for Database, information_schema, performance_schema, mysql
and test
exclude_databases = "Database|information_schema|performance_schema|mysql|test"
# push remaining database names into an array
databases = `mysql -u#{db[:username]} -p'#{db[:password]}' --host #{db[:host]} -e 'SHOW
DATABASES;'| tr -d '| ' | egrep -v '#{exclude_databases}'`.split("\n")
begin
# loop over each database
databases.each do |dbs|
log_file = "#{tmp_dir}/dbs_#{dbs}_#{day_of_week}.log"
db_file = "#{tmp_dir}/dbs_#{dbs}_#{day_of_week}.sql"
# create log file unless it already exists
if !(File.exist?(log_file))
f = File.new(log_file, "w+")
f.puts "#{day_of_week}, #{date} #{current_time}"
f.puts "backing up #{dbs} to #{db_file}"
else
# open log file and append logs to file
File.open(log_file, "a") do |file|
file.puts "\n\n"
file.puts "#{day_of_week}, #{date} #{current_time}"
file.puts "backing up #{dbs} to #{db_file}"
end
end
# dump database into desired path
`mysqldump -u#{db[:username]} -p'#{db[:password]}' --skip-lock-tables --logerror=#{log_file} --host #{db[:host]} #{db[:database]} > #{db_file}`
end
rescue Exception => e
log_text = "dumping database failed: #{e.message}"
log_list.push(log_text)
puts log_text
end
© Viet Anh Dang
vi
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
Anlage A7: Datenbank-Backup BASH-Skript
#!/bin/bash
echo "backup starting"
# target dir of backup zip file
BACKUP_DIR=/srv/www/htdocs/eins/backups
TMP_DIR=/tmp/1-wtp_backup
LOG_FILE=1-wtp_backup.log
# create target dir if it doesn't exist yet
mkdir -p $BACKUP_DIR
# date suffix to use at the end of backup zip files
DATE_SUFF=$(date +"%A")
# generate temporary dir to put all files to backup into
rm -r $TMP_DIR/ > /dev/null 2>&1
mkdir -p $TMP_DIR
LOG_FILE=$TMP_DIR/$LOG_FILE
echo > $LOG_FILE
exclude_databases="Database|information_schema|performance_schema|mysql|test"
databases=`mysql -uroot -e "SHOW DATABASES;" | tr -d "| " | egrep -v $exclude_databases`
for db in $databases; do
db_file="$TMP_DIR/$db-`date +%Y%m%d`.sql"
echo "backing up database: $db to $db_file" 2>&1 | tee -a $LOG_FILE
mysqldump -uroot --skip-lock-tables --log-error=$LOG_FILE --databases $db > $db_file
done
© Viet Anh Dang
vii
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
Anlage A8: Backup-Logs GUI
© Viet Anh Dang
viii
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
Anlage A9: Datenbank-Backup-Verwaltung GUI
© Viet Anh Dang
ix
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
Anlage A10: Backup-Log-Datei
© Viet Anh Dang
x
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
Anlage A11: Backup-Logs GUI
© Viet Anh Dang
xi
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
Selbständigkeitserklärung
© Viet Anh Dang
xii
Datenbank-Backup-Verwaltung
Implementierung einer Datenbank-Backup-Verwaltung in 1-wtp
© Viet Anh Dang
xiii
0
Download