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