Litestream wurde mit der Implementierung des Replikationssystems für SQLite eingeführt

Ben Johnson, Autor des BoltDB NoSQL-Speichers, stellte das Litestream-Projekt vor, das ein Add-on zur Organisation der Datenreplikation in SQLite bereitstellt. Litestream erfordert keine Änderungen an SQLite und kann mit jeder Anwendung arbeiten, die diese Bibliothek verwendet. Die Replikation erfolgt durch einen separat ausgeführten Hintergrundprozess, der Änderungen in Dateien aus der Datenbank überwacht und diese in eine andere Datei oder auf einen externen Speicher überträgt. Der Projektcode ist in Go geschrieben und wird unter der Apache 2.0-Lizenz vertrieben.

Die gesamte Interaktion mit der Datenbank erfolgt über die Standard-SQLite-API, d. h. Litestream greift nicht direkt in den Betrieb ein, beeinträchtigt die Leistung nicht und kann den Inhalt der Datenbank nicht beschädigen, was Litestream von Lösungen wie Rqlite und Dqlite unterscheidet. Änderungen werden durch die Aktivierung des WAL-Protokolls („Write-Ahead-Protokoll“) in SQLite nachverfolgt. Um Speicherplatz zu sparen, fasst das System den Änderungsstrom regelmäßig in Datenbankabschnitten (Snapshots) zusammen, auf denen sich weitere Änderungen ansammeln. Die Zeit zum Erstellen von Slices wird in den Einstellungen angegeben; Sie können Slices beispielsweise einmal am Tag oder einmal in der Stunde erstellen.

Zu den Haupteinsatzgebieten von Litestream gehören die Organisation sicherer Backups und die Verteilung der Leselast auf mehrere Server. Es unterstützt die Übertragung des Änderungsstroms an Amazon S3, Azure Blob Storage, Backblaze B2, DigitalOcean Spaces, Scaleway Object Storage, Google Cloud Storage, Linode Object Storage oder jeden externen Host, der das SFTP-Protokoll unterstützt. Wenn der Inhalt der Hauptdatenbank beschädigt ist, kann die Sicherungskopie aus einem Zustand wiederhergestellt werden, der einem bestimmten Zeitpunkt, einer bestimmten Änderung, der letzten Änderung oder einem bestimmten Abschnitt entspricht.

Source: opennet.ru

Kommentar hinzufügen