Litestream wprowadzony wraz z wdrożeniem systemu replikacji dla SQLite

Ben Johnson, autor magazynu BoltDB NoSQL, przedstawił projekt Litestream, który udostępnia dodatek do organizowania replikacji danych w SQLite. Litestream nie wymaga żadnych zmian w SQLite i może współpracować z dowolną aplikacją korzystającą z tej biblioteki. Replikacja odbywa się poprzez oddzielnie wykonywany proces w tle, który monitoruje zmiany w plikach z bazy danych i przenosi je do innego pliku lub do pamięci zewnętrznej. Kod projektu napisany jest w Go i rozpowszechniany na licencji Apache 2.0.

Wszelka interakcja z bazą danych odbywa się poprzez standardowe API SQLite, tj. Litestream nie ingeruje bezpośrednio w działanie, nie wpływa na wydajność i nie może uszkodzić zawartości bazy danych, co odróżnia Litestream od rozwiązań takich jak Rqlite i Dqlite. Zmiany są śledzone poprzez włączenie dziennika WAL („Dziennik zapisu z wyprzedzeniem”) w SQLite. Aby zaoszczędzić miejsce na dysku, system okresowo agreguje strumień zmian w wycinki bazy danych (migawki), na których zaczynają kumulować się inne zmiany. Czas tworzenia plasterków jest wskazany w ustawieniach, na przykład możesz tworzyć plasterki raz dziennie lub raz na godzinę.

Główne obszary zastosowań Litestream obejmują organizowanie bezpiecznych kopii zapasowych i dystrybucję obciążenia odczytem na wiele serwerów. Obsługuje przenoszenie strumienia zmian do Amazon S3, Azure Blob Storage, Backblaze B2, DigitalOcean Spaces, Scaleway Object Storage, Google Cloud Storage, Linode Object Storage lub dowolnego hosta zewnętrznego obsługującego protokół SFTP. Jeżeli zawartość głównej bazy danych ulegnie uszkodzeniu, kopię zapasową można przywrócić ze stanu odpowiadającego określonemu momentowi, konkretnej zmianie, ostatniej zmianie lub określonemu wycinkowi.

Źródło: opennet.ru

Dodaj komentarz