Datenbankausfall simulieren

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
PythonCodingFun
User
Beiträge: 49
Registriert: Mittwoch 22. September 2021, 14:01

Hallo liebe Community,


ich möchte die Zuverlässigkeit der Verbindung meiner Python Anwendung (Python 3.9.7 mit der Lib: psycopg 2.9.1) zum Datenbank-Server prüfen und ich möchte die DB aber nicht irgendwie stören, noch möchte meinen Rechner nicht von Netzwerk trennen, gibt es irgendein Werkzeug/Lib das mir Datenbankausfälle bzw. Störungen simulieren kann ?
Oder anders gefragt könnt ihr mir eins Empfehlen ?


Über Tipps würde ich mich sehr freuen.

Grüße
Buchfink
User
Beiträge: 193
Registriert: Samstag 11. September 2021, 10:16

- DB-Server stoppen
- Datenbank mittendrin mal umbenennen (das ist aber eine sehr exotische Sache, kann aber theoretisch vorkommen.... dass jemand sowas verrücktes macht. Ob das alle DBMS während des "Betriebs" erlauben, weiß ich aber nicht)
- je nach DBMS kann man dem User mit dem du Dich anmeldest ggf Schreibrechte entziehen
Buchfink
User
Beiträge: 193
Registriert: Samstag 11. September 2021, 10:16

was mir noch einfällt:
bei manchen Datenbanken gibt's Probleme, wenn man parallel zur schreibenden Zugriffen ein Backup macht.

Welche DB nutzt Du denn?
PythonCodingFun
User
Beiträge: 49
Registriert: Mittwoch 22. September 2021, 14:01

Ich nutze PostgreSQL
PythonCodingFun
User
Beiträge: 49
Registriert: Mittwoch 22. September 2021, 14:01

Buchfink hat geschrieben: Mittwoch 20. Oktober 2021, 15:33 - DB-Server stoppen
- Datenbank mittendrin mal umbenennen (das ist aber eine sehr exotische Sache, kann aber theoretisch vorkommen.... dass jemand sowas verrücktes macht. Ob das alle DBMS während des "Betriebs" erlauben, weiß ich aber nicht)
- je nach DBMS kann man dem User mit dem du Dich anmeldest ggf Schreibrechte entziehen
Ich möchte eben nicht irgendwas an der DB ändern, darf ich auch nicht ;-)
Benutzeravatar
__blackjack__
User
Beiträge: 13080
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@PythonCodingFun: Dann setz Dir halt eine eigene PostgreSQL-Datenbank auf, fülle die mit ein paar Testdaten und spiel dann damit nach herzenslust herum.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Erstmal solltest du dir im klaren sein was du mit Datenbankausfall oder Störung überhaupt meinst und vielleicht auch was du mit der Information machen möchtest. Geht es dir hier primär um Szenarien die du auf Anwendungsseite behandeln kannst wie switchover/failover und deadlocks um zu testen ob du Transaktionen in diesen Fällen wiederholst? Geht es dir um Probleme auf Postgres Seite die zwar Clients betreffen aber dort nicht zu kompensieren sind?

Es gibt ja eine ganze Reihe von Dingen die so schief gehen können nur mal zur kurzen Auswahl
  • Störung an Festplatte/SSD mit Verlust von Bandbreite?
  • Korruption der Festplatte/SSD?
  • Kompletter Verlust einer Festplatte?
  • Netzwerk Probleme (z.B. Availability Zone verloren)?
  • Kein Speicherplatz mehr?
  • Eines der bisher erwähnten Dinge aber nur eine Primary, nur eine Replica oder irgendeine andere Konstellation von Instanzen ist betroffen.
  • Verlust von Replicas bei synchronous replication?
  • Replication Lag?
  • Replication Lag und Speicherplatz auf der primary wird eng durch WAL?
  • Switchover oderFailover (mit/ohne Datenverlust)?
  • Verlust von Konsensus und die primary ist länger als für switchover/failover üblich read-only?
  • VACUUM kommt nicht mit und transaction IDs sind nicht mehr verfügbar?
  • Keine primary keys mehr verfügbar (serial/int ist doch überraschend klein manchmal)?
Vieles lässt sich nur schwer reproduzieren aber ich würde dafür einfach mal Postgres in einer Testumgebung in passender Konstellation aufsetzen und diese Fehler verursachen (soweit möglich). Das wird dir bessere Resultate liefern als es nur zu simulieren.
Antworten