Forum: PC Hard- und Software Datenbank - Failsave gestalten?


von Tom (Gast)


Lesenswert?

Hallo Leute!

Ich hab bei mir eine kleine Datenbank 200mb auf einem Server (SQL 
Express) in meinem kleinen Netz laufen. Läuft auch alles soweit sogut.


Nun bin ich aber manchmal nicht da und nur jemand mit wenig bis gar 
keiner Computer Erfahrung vor Ort. Gebe es ein Möglichkeit die Datenbank 
irgendwie auf einem zweiten physischen Server zu spiegeln und wenn der 
erste Ausfällt übernimmt der zweite?


Oder wie kriege ich das ganze Failsave?

Danke Gruß

von (prx) A. K. (prx)


Lesenswert?

Backup reicht nicht?

von Thomas (Gast)


Lesenswert?

Wie wäre es mit einem NAS-System und Raid?

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Kann die APP immer gleich in zwei Datenbanken schreiben?

von Tom (Gast)


Lesenswert?

Hi,

ja ein NAS ist vorhanden. Mir geht es nicht darum das da was verloren 
geht sondern das ohne mich das niemand wiederherstellen kann.

Leider kann die APP das nicht.

Gruß

von oszi40 (Gast)


Lesenswert?

Tom schrieb:
> irgendwie auf einem zweiten physischen Server zu spiegeln

Wenn Du nur spiegelst, kann der gleiche Befehl auch den Spiegel 
zerstören. Du solltest besser mehrere Backups mit verschiedenen Ständen 
haben.

von ich (Gast)


Lesenswert?

Für SQL Server gibt es "Fail Over Cluster".
Allerdings nicht für die Express Version. Das geht erst ab der Standard 
Version vom SQL Server.
Fail Over kann genau deine Anforderungen erfüllen - 2 Server mit dem 
selben Datenbestand und der 2. übernimmt, wenn der erste Probleme hat.
https://docs.microsoft.com/en-us/sql/sql-server/failover-clusters/windows/always-on-failover-cluster-instances-sql-server?view=sql-server-2017

von Tom (Gast)


Lesenswert?

oszi40 schrieb:
> Tom schrieb:
>> irgendwie auf einem zweiten physischen Server zu spiegeln
>
> Wenn Du nur spiegelst, kann der gleiche Befehl auch den Spiegel
> zerstören. Du solltest besser mehrere Backups mit verschiedenen Ständen
> haben.

Hi
wie gesagt mir fällt da nix ein! Wie kriege ich es hin einen Server mit 
Backup so laufen zu lassen das wenn er mal ausfällt trotzdem jemand ohne 
viel Computer Ahnung ihn wieder zum laufen kriegt.

von Ein Name (Gast)


Lesenswert?

Der Suchbegriff dazu ist auto failover.

Bei SQL Express findest du aber nur den Ratschlag - SQL Server 
High-Availability Solutions kaufen.

Selbst schreiben ist gar nicht so einfach. Sobald du in Urlaub bist, 
passiert irgend etwas, an das du nicht gedacht hast. Die 
Datenbankhersteller haben Jahrzehnte gebraucht, bis das bei allen Arten 
von Fehlern zuverlässig läuft.

Ein Vorschlag wäre: Anschauen wie die Mysql das macht und überlegen, ob 
du das für die SQL Express nachbauen willst.

von Tom (Gast)


Lesenswert?

Danke!

Gibts da was von MySql also sprich kostenlos dann baue ich meine 
Datenbank einfach auf MySql um.

von Tom (Gast)


Lesenswert?

Ja das mit SQL Server kannte ich nur halt muss man da gut Geld für 
blechen. Reicht da überhaupt nur 1 Lizenz? Die kostet ja auch schon 
1000€

von (prx) A. K. (prx)


Lesenswert?

Tom schrieb:
> Gibts da was von MySql also sprich kostenlos

Ja, gibt es. Bei MySQL kann einen man einen Slave-Server als Replikat 
des Masters laufen lassen. Der fährt die Operationen des Masters nach.

https://www.thomas-krenn.com/de/wiki/MySQL_Replikation

: Bearbeitet durch User
von c.m. (Gast)


Lesenswert?

Tom schrieb:
> oszi40 schrieb:
>> Tom schrieb:
>>> irgendwie auf einem zweiten physischen Server zu spiegeln
>>
>> Wenn Du nur spiegelst, kann der gleiche Befehl auch den Spiegel
>> zerstören. Du solltest besser mehrere Backups mit verschiedenen Ständen
>> haben.
>
> Hi
> wie gesagt mir fällt da nix ein! Wie kriege ich es hin einen Server mit
> Backup so laufen zu lassen das wenn er mal ausfällt trotzdem jemand ohne
> viel Computer Ahnung ihn wieder zum laufen kriegt.

garnicht. je nach dem was ausfällt, von netz über serverhardware, 
betriebssystem, datenbank software, oder von nutzern erzeugte 
datenzerstörung braucht man jemanden der das analysieren und 
entsprechend reagieren kann.
dafür gibts admins.

bei oracle heisst eine failover database übrigens shadow database 
(prinzipiell ein einpielen der archive logs in eine zweite datenbank), 
oder RAC.
da mysql von oracle übernommen wurde haben die dort vielleicht auch 
inzwischen andere begrifflichkeiten eingeführt.
wenn es mysql ohne oracle und ohne lizenskosten sein soll, dann ist 
deren fork mariadb wohl die erste wahl.

von Tom (Gast)


Lesenswert?

Vielen Dank für den Input hat mir schonmal sehr weitergeholfen!

Beitrag #5682995 wurde von einem Moderator gelöscht.
Beitrag #5683021 wurde von einem Moderator gelöscht.
von Sheeva P. (sheevaplug)


Lesenswert?

Tom schrieb:
> Vielen Dank für den Input hat mir schonmal sehr weitergeholfen!

Nee, glaub' ich nicht. Einen sauberen HA-Cluster aufzusetzen, ist kein 
Kinderspiel und nicht mit einem Doppelklick auf Setup.EXE getan.

Das ganz unabhängig davon, ob man nun die mit Abstand leistungsfähigste 
OpenSource-Datenbank PostgreSQL benutzen will, MySQL oder seine Ableger 
MariaDB oder MaxSQL, Oracle, DB2, MSSQL oder whatever. Von mir aus DRBD 
zusammen mit <whatever>.

Was sind eigentlich ein Quorum oder ein Split-Brain? Nur so in den Raum 
gefragt. Die Replikation ist der einfachste Teil, spannend wird es mit 
Distributed Locking, Switch- und Failover, ... was davon ist in einem 
einfachen Master-Slave-Setup relevent, was vernachlässigbar? Was könnte 
dieses Ding mit dem Write-Ahead-Log sein?

Und dann: 200 MB? Wäre da nicht was anderes als ein RDBMS angemessen?

Welche Sicherheiten garantieren eigentlich RDBMS? Und wozu?

;-)

von (prx) A. K. (prx)


Lesenswert?

Sachte, lass ihn am Leben. ;-)

Vollautomatischer Failover scheint nicht erforderlich zu sein, manueller 
Failover reicht offenbar:

Tom schrieb:
> wenn er mal ausfällt trotzdem jemand ohne
> viel Computer Ahnung ihn wieder zum laufen kriegt.

Bei MySQL Replikation ist ein manueller Failover mit der Abschaltung des 
Masters und der Aktivierung einer sekundären IP-Adresse auf dem Slave 
erledigt. Das kriegt man per Script jedem beigebogen, der eine Tastatur 
bedienen kann. Notfalls bringt man der Hauskatze bei, ein Netzwerkkabel 
umzustecken.

Den Fallback kann er später selber machen, wenn er wieder da ist.

Nun kann er sich mal meinen Link oben anschauen und sich schläuen, ob 
das was für ihn sein könnte. Wenn ja, ist das kein Hexenwerk. Wenn er 
dann noch drauf achtet, die transaktionsfähige Engine zu verwenden, dann 
ist doch eine nicht sehr anspruchsvolle Sache.

: Bearbeitet durch User
von Tom (Gast)


Lesenswert?

A. K. schrieb:
> Sachte, lass ihn am Leben. ;-)
>
> Vollautomatischer Failover scheint nicht erforderlich zu sein, manueller
> Failover reicht offenbar:
>
> Tom schrieb:
>> wenn er mal ausfällt trotzdem jemand ohne
>> viel Computer Ahnung ihn wieder zum laufen kriegt.
>
> Bei MySQL Replikation ist ein manueller Failover mit der Abschaltung des
> Masters und der Aktivierung einer sekundären IP-Adresse auf dem Slave
> erledigt. Das kriegt man per Script jedem beigebogen, der eine Tastatur
> bedienen kann. Notfalls bringt man der Hauskatze bei, ein Netzwerkkabel
> umzustecken.
>
> Den Fallback kann er später selber machen, wenn er wieder da ist.
>
> Nun kann er sich mal meinen Link oben anschauen und sich schläuen, ob
> das was für ihn sein könnte. Wenn ja, ist das kein Hexenwerk. Wenn er
> dann noch drauf achtet, die transaktionsfähige Engine zu verwenden, dann
> ist doch eine nicht sehr anspruchsvolle Sache.



Ja genau so habe ich mir das ganze vorgestellt, manueller Failover ist 
völlig ausreichend!

von Reinhard S. (rezz)


Lesenswert?

A. K. schrieb:
> Notfalls bringt man der Hauskatze bei, ein Netzwerkkabel
> umzustecken.

Irgendwelche Tips und Vorschläge dazu? :)

von (prx) A. K. (prx)


Lesenswert?


: Bearbeitet durch User
von stnv (Gast)


Lesenswert?

Der MS SQL Server in der Express Version kann hier nicht viel. Er ist 
auch nicht unbedingt für solche Szenarien vorgesehen.

Die Spiegelung braucht mindestens eine Standard Version. Das muss aber 
auch die Anwendung mitmachen.

Mit einiges an scripten kann man eine SQL Express Version zum "Log 
Shipping" überzeugen. Damit kann man aber kein automatisches Failover 
umsetzen. Wenn die Datenbank mit ihren Daten bereits auf einem anderen 
Rechner "halb" läuft, kann man einiges an Zeit sparen.

Das ganze ist nicht ganz ohne...

von Stefan F. (Gast)


Lesenswert?

By the way: MySQL wurde durch MariaDB abgelöst - jedenfalls in der Welt 
jenseits von Oracle.

von (prx) A. K. (prx)


Lesenswert?

Sollte in dieser Frage aber genauso funktionieren.

von Axel S. (a-za-z0-9)


Lesenswert?

A. K. schrieb:
> Tom schrieb:
>> Gibts da was von MySql also sprich kostenlos
>
> Ja, gibt es. Bei MySQL kann einen man einen Slave-Server als Replikat
> des Masters laufen lassen. Der fährt die Operationen des Masters nach.

Besser wäre Galera Cluster (von MariaDB oder Percona Server). Da ist die 
Replikation synchron, man kann auf beide (bzw. alle) Nodes im Cluster 
schreiben und ein Proxy ist auch schon dabei.

Backups braucht man aber natürlich trotzdem noch. Der Cluster schützt 
nur vor einem Hardware-Ausfall, nicht vor einer amoklaufenden Anwendung, 
einem Hack oder dem DBA, der im Tran wichtige Daten löscht.


https://github.com/wenerme/wener/blob/master/articles/High%20Availability%20Solutions%20for%20the%20MariaDB%20and%20MySQL%20Database.md
https://www.slideshare.net/MariaDB/mariadb-high-availability-81651161

: Bearbeitet durch User
von TestX (Gast)


Lesenswert?

Das Problem bei Cluster Lösungen ist der Administrationsaufwand.....kein 
normaler IT support kann soetwas wieder in Betrieb nehmen nach zB einem 
Stromausfall....außerdem braucht es bei Multisynchronen Setups min. 5HW 
Nodes...das ist wahrscheinlich weit von dem entfernt was der TO möchte..

@TO bleib bei deinem Setup und fertige eine Doku an wie man das Backup 
einspielt. Dann such dir eine fähige IT Firma für den Notfall..das ist 
der einzig gangbare Weg - alles andere übersteigt deine Ressourcen bei 
weitem

von Nano (Gast)


Lesenswert?

Snapshots wären auch eine Lösung.

Wenn der DB Server ausfällt, einfach ein älteres Snapshot 
wiederherstellen.
Die Snapshots kann man auch in Intervallen automatisiert neu anlegen 
lassen.

Einen Datenverlust wird man in dem Fall aber dennoch haben, da ein 
Snapshot genau wie ein Backup auch, nur einen älteren Zustand der 
Datenbank wiederherstellen würde.
Will man neu hinzukommende Daten sichern, dann muss man bevor man zu 
einem älteren Sanpshot zurückgeht, die irgendwie wegsichern und dann 
manuell einpflegen.

Für Snapshots eignet sich ein Dateisystem wie ZFS.

von (prx) A. K. (prx)


Lesenswert?

Nano schrieb:
> Snapshots wären auch eine Lösung.

Wie man ohne IT Kompetenz kaputte Hardware mit Snapshots wieder ganz 
macht, wäre dann aber noch zu klären.

von Keep it simple and stupid (Gast)


Lesenswert?

> wäre dann aber noch zu klären.

Die Entwicklung der vergangenen Jahrzehnten ist total in die falsche 
Richtung gegangen. Wir haben tolle Cluster-Systeme, die niemand mehr 
korrekt konfigurieren und hochfahren kann.

Besser wäre, die Backup-Mechanismen stellen einfach eine konsistente 
Festplatte mit Betriebssystem, Programmen und aktuellen Daten zusammen. 
Wenn der Rechner nicht mehr funktioniert, einfach Platte raus ziehen und 
Backup-Platte rein schieben.

von Reinhard S. (rezz)


Lesenswert?

Keep it simple and stupid schrieb:
> Besser wäre, die Backup-Mechanismen stellen einfach eine konsistente
> Festplatte mit Betriebssystem, Programmen und aktuellen Daten zusammen.
> Wenn der Rechner nicht mehr funktioniert, einfach Platte raus ziehen und
> Backup-Platte rein schieben.

Nutzt aber nix, wenn der Fehler jenseits der Software oder Festplatte 
liegt...

von (prx) A. K. (prx)


Lesenswert?

Keep it simple and stupid schrieb:
> Die Entwicklung der vergangenen Jahrzehnten ist total in die falsche
> Richtung gegangen. Wir haben tolle Cluster-Systeme, die niemand mehr
> korrekt konfigurieren und hochfahren kann.

Ach?

Tatsächlich hat sich die Sache in der betrieblichen Praxis wesentlich 
vereinfacht. Etliche Cluster von PC-Servern wurden durch Virtualisierung 
abgelöst. Redundante VM-Hosts ersetzen diverse Individuallösungen 
früherer ressourcenfressender Hardware-Cluster. Viel Knowhow braucht das 
nicht - beim Storage-Cluster evtl schon, aber das brauchte man vorher 
auch schon.

(1) In vielen Fällen reicht es bereits aus, wenn beim Crash eines Hosts 
die VMs auf den anderen Hosts neu gestartet werden. Der Service ist 
wenige Minuten weg und muss dafür nur aus einem VM-Crash heraus neu 
starten können. Spart zudem an Lizenzen und redundanter Hardware.

(2) Reicht das nicht, kann man einen sekundären Server als permanent 
bzgl RAM synchronisiertes Replikat auf einem anderen Host betreiben. 
Fliegt der Host des ersten weg, übernimmt das Replikat fliegend.

In einer solchen Umgebung sind automatisch alle Server durch (1) gegen 
HW-Ausfall abgedeckt, ein paar besonders zeitkritische evtl durch (2). 
Egal was für Server das sind, mit egal welchem Betriebssystem. Ein 
Knowhow für alles.

Unabhängig davon gibt es weiterhin recht umgängliche Lösungen innerhalb 
der Applications. MySQL/MariaDB Varianten wurden bereits genannt. 
Microsoft Exchange repliziert die DB selbst, Active Directory und DHCP 
ebenso.

: Bearbeitet durch User
von Nano (Gast)


Lesenswert?

A. K. schrieb:
> Nano schrieb:
>> Snapshots wären auch eine Lösung.
>
> Wie man ohne IT Kompetenz kaputte Hardware mit Snapshots wieder ganz
> macht, wäre dann aber noch zu klären.

Ah sorry, habe das gestern Nacht nicht richtig gelesen.
Dachte es ging nur um den Datenbankserver wenn dieser als Software 
Probleme macht.

Wenn die HW ausfällt, dann ist das natürlich nicht mehr so einfach.
Aber hier könnte man die Snapshots auf einem NAS machen.
Den Datenbankserver auf eigener HW und die Daten kann man dann per nfs 
einbinden oder kopieren.
Fällt der erste DBS aus, dann könnte ein anderer einspringen und die 
Daten vom NAS per nfs einbinden.
Falls die Daten auf dem NAS wegen dem ersten DBS kaputt sind, kommt der 
Snapshot ins Spiel.
Das ganze ist natürlich etwas komplizierter und es bräuchte wirklich 
einen Admin, der erst einmal analysisert, was genau kaputt ist.
Umsonst gibt es da nichts.

Insofern, wie wäre es mit ssh und Remoteadministration wenn man vor Ort 
nicht da sein kann?

von (prx) A. K. (prx)


Lesenswert?

Nano schrieb:
> Wenn die HW ausfällt, dann ist das natürlich nicht mehr so einfach.
> Aber hier könnte man die Snapshots auf einem NAS machen.

Damit verschiebst du die Verfügbarkeitsfrage vom DB-Server auf ein 
hochverfügbares NAS.

Mal ehrlich: Ist das einfacher als eine simple MariaDB-Replikation? Die 
hatte ich schon. Ist nicht weiter kompliziert und x-fach beschrieben. 
Der Fallback geht halt nur offline, weil dabei ein Backup der Slave-DB 
zurück kopiert werden muss, aber 200 MB sind Pillepalle.

> Das ganze ist natürlich etwas komplizierter und es bräuchte wirklich
> einen Admin, der erst einmal analysisert, was genau kaputt ist.
> Umsonst gibt es da nichts.

Exakt. Also nix für die Hauskatze. Die ist aber Vorgabe.

Bei der vorgeschlagenen Replikation muss man nur die IP-Adresse der 
Funktion übernehmen. Was manuell problemlos ist, weil man split brain 
nicht berücksichtigen muss, sondern ganz banal auf STONITH per Hauskatze 
setzt.

Wenn man sich die DB zerlegt hat und deshalb nichts mehr geht, dann 
hilft das natürlich nicht. Aber dafür einen katzentauglichen Weg zu 
finden, ohne sich der konkreten Anwendung zu nähern, dürfte im privaten 
Umfeld schwierig sein.

: Bearbeitet durch User
von Nano (Gast)


Lesenswert?

A. K. schrieb:
> Nano schrieb:
>> Wenn die HW ausfällt, dann ist das natürlich nicht mehr so einfach.
>> Aber hier könnte man die Snapshots auf einem NAS machen.
>
> Damit verschiebst du die Verfügbarkeitsfrage vom DB-Server auf ein
> hochverfügbares NAS.

Ja, das ist richtig.
Man müsste noch Redundanz einbauen und zwei NAS vorhalten.

Dann kann man sowohl HW Fehler als auch Softwarefehler schnell 
ausgleichen.
Aber die Analyse gehört trotzdem dazu, denn man muss ja wissen, wenn 
etwas mit der Software schief läuft, nicht das man mit kaputten Daten 
weiterarbeitet.

Durch die redundante HW wäre es aber zumindest administrativ per remote 
Zugang lösbar.



>
> Mal ehrlich: Ist das einfacher als eine simple MariaDB-Replikation? Die
> hatte ich schon. Ist nicht weiter kompliziert und x-fach beschrieben.
> Der Fallback geht halt nur offline, weil dabei ein Backup der Slave-DB
> zurück kopiert werden muss, aber 200 MB sind Pillepalle.

Backups haben halt das Problem, dass sie vielleicht nicht regelmäßig 
gemacht werden, dann hat man einen sehr alten Datenbestand der 
Datenbank.
Die Snapshots lassen sich automatisieren und bspw. auch stündlich 
machen.
Die Backups nur, wenn man die HW nicht abklemmt, aber dann ist das kein 
Backup mehr, da ein Backup streng genommen erst dann ein Backup ist, 
wenn im Falle eines Befalls von Schadsoftware des Servers das Backup 
davon nicht betroffen ist, also abgeklemmt wurde.
Eine Platte die dauerhaft dranhängt, selbst wenn sie die Daten spiegelt, 
kann somit kein Backup sein. Im Prinzip hat man dann damit dann sowieso 
so etwas wie ein NAS, nur eben in billig.
Insofern kann man auch gleich zwei externe NAS nehmen und Snapshots 
nutzen.
Backups ersetzen die allerdings auch nicht, aber ein Großteil der 
Crashszenarien wie HW Ausfall usw. kann man damit abdecken.

Das Zurückspielen aus einem Backup ist einfach, da stimme ich zu.

von oszi40 (Gast)


Lesenswert?

Nano schrieb:
> Das Zurückspielen aus einem Backup ist einfach, da stimme ich zu.

Kommt drauf an, ob man Ahnung hat, es an die richtige Stelle spielt UND 
es aktuell genug ist. Die Messwerte von Weihnachten bis heute könnten 
z.B. schon fehlen?

von (prx) A. K. (prx)


Lesenswert?

Nano schrieb:
>> Mal ehrlich: Ist das einfacher als eine simple MariaDB-Replikation? Die
>
> Backups haben halt das Problem,

Diese Replikation hat im Betrieb nichts mit einem Backup zu tun. Der 
Master liefert dem Slave (in der ursprünglichen Version) permanent und 
live alle relevanten SQL Statements, und der vollzieht sie ebenso live 
auf seiner eigenen DB nach.

Einen Backup - was dann auch eine offline Kopie des Filesystems sein 
kann - braucht man nur beim Fallback, also zurück von Slave auf Master. 
Und bei der Einrichtung der Replikation.

Nebenbei: Einen Bezug zum Backup gibts nur andersrum: Dieser 
Replikations-Mechanismus wird ggf auch für point in time recovery 
verwendet. Man hebt die binlogs dieses Verfahrens seit der letzten 
Vollsicherung auf. Vollsicherung plus binlogs = letzter Stand.

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

Eine automatische Verifikation der Replikation ist einfach: Man setzt 
einen Query sowohl auf den Master als auch auf den Slave ab (über die 
Node-IP vom Slave statt der Funktions-IP) und erfragt irgendeinen Wert, 
der den letzten Stand des Inhalts beschreibt. Idealerweise ist das eine 
Timestamp. Liegen die mehr als ein paar Sekunden auseinander, könnte man 
ein Problem haben.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.