Sikkerhetskopiering er utrolige funksjoner, spesielt når du jobber med datakritiske miljøer. I Apache Cassandra kan vi lage sikkerhetskopier av databasedata som er lagret som Sstable -filer. Du kan deretter bruke sikkerhetskopifilene til å gjenopprette databasen i tilfelle av data tap, node eller partisjonssvikt. Sikkerhetskopiering kan også brukes til å gjenskape databasen i en annen maskin, og fjerne behovet for å gjenskape strukturen fra bunnen av.
Cassandra støtter to hovedtyper av sikkerhetskopiering:
I denne opplæringen vil vi fokusere på sikkerhetskopiering av øyeblikksbilde. Først lærer vi hvordan vi kan initialisere og opprette databasene som er lagret i en Apache Cassandra -klynge.
La oss dykke inn.
Hva er øyeblikksbilder?
I sammenheng med en Apache Cassandra -klynge refererer et øyeblikksbilde til en kopi av en tabells Sstable -filer på et bestemt tidspunkt. Sstable eller Sortered Strings Table er et filformat som Apache Cassandra bruker for å lagre dataene i minnet i Memtables for rask tilgang. Sstable -filer er uforanderlige og blir fjernet eller slått sammen med nye Sstable -filer når dataene endres.
Øyeblikksbilder i Cassandra kan utstedes manuelt av brukeren eller automatiseres ved å aktivere funksjonen i konfigurasjonsfilene.
Sette opp en eksempeldata for å illustrere øyeblikksbildene i Cassandra
Før vi illustrerer hvordan du utfører øyeblikksbildene i Cassandra, la oss lage noen eksempler på data for å demonstrere hvordan vi lager øyeblikksbilder.
La oss starte med å lage et øyeblikksbilde.
cassandra@cqlsh> lage nøkkelpace snapshotting
... med replikasjon = 'klasse': 'enklest strategi', 'replication_factor': 1;
Den forrige spørringen oppretter et nøkkelpace med enklinestrategi og replikasjonsfaktor 1.
Vi kan deretter bytte til det nøkkelponde og lage to tabeller:
cassandra@cqlsh> bruk snapshotting;
Deretter oppretter du en brukertabell som følger:
Cassandra@CQLSH: Snapshotting> Lag tabellbrukere (
... id int,
... Brukernavn Tekst,
... e -posttekst,
... Primærnøkkel (ID)
...);
Vi kan også lage en annen tabell som kalles med en lignende struktur:
cassandra@cqlsh: snapshotting> opprette tabellbrukere_copy (
... id int,
... Brukernavn Tekst,
... e -posttekst,
... Primærnøkkel (ID)
...);
Til slutt kan vi legge til noen eksempeldata i tabellen som vist:
Sett inn brukere (ID, brukernavn, e -post) verdier (0, 'brukernavn1', '[email protected] ');
Sett inn i brukere (ID, brukernavn, e -post) verdier (1, 'brukername2', '[email protected]');
Sett inn brukere av brukere_copy (ID, brukernavn, e -post) (0, 'brukernavn1', '[email protected] ');
Sett inn brukere av brukere_copy (ID, brukernavn, e -post) (1, 'brukername2', '[email protected]');
Vi kan deretter spørre tabellene som følger:
cassandra@cqlsh: snapshotting> velg * fra brukere;
cassandra@cqlsh: snapshotting> velg * fra brukere_copy;
Produksjon:
Konfigurer Cassandra -klyngen for øyeblikksbilder
Før du oppretter øyeblikksbilder, er det bra å sikre at den automatiske stillingen er deaktivert. Rediger Cassandra.YML -fil og angi følgende verdi:
auto_snapshot: falsk
Det anbefales også å deaktivere den automatiske komprimeringen før opprettelse av øyeblikksbilde. I Cassandra.YML -fil, angi følgende verdi:
snapshot_before_compaction: falsk
Når de gitte innstillingene er klare, må du starte Cassandra -klyngen på nytt for å bruke endringene.
Tar øyeblikksbilder av alle tastetastene
Når vi oppretter øyeblikksbilder i Cassandra, bruker vi NodeTool -kommandoen. Du kan kjøre følgende kommando:
$ NodeTool Help Snapshot
For å se tilgjengelige kommandoalternativer.
For å ta et øyeblikksbilde av alle tastetastene i Cassandra -klyngen, kan vi kjøre følgende kommando:
$ NodeTool Snapshot
Kommandoen skal returnere en melding som vist:
Som standard oppretter Cassandra et øyeblikksbilde med navnet på dagens tidsstempel.
For å spesifisere navnet på øyeblikksbildet, kan du bruke -t -alternativet som vist i følgende kommando:
$ NodeTool Snapshot -t Backups
Dette skaper et øyeblikksbilde av alle tastetastene i klyngen og lagrer det i sikkerhetskopieringskatalogen.
Tar et øyeblikksbilde av et enkelt nøkkelpace
Du kan også ta en sikkerhetskopi av et enkelt nøkkelpace i klyngen ved å spesifisere nøkkelpace -navnet. For å ta et øyeblikksbilde av det snapshotting nøkkelponde som vi opprettet tidligere, kan vi kjøre følgende kommando:
$ NodeTool Snapshot -t Snapshotting_Backup Snapshotting
Cassandra oppretter en øyeblikksbilde -katalog for hver tabell i den spesifiserte nøkkelpace. For eksempel, siden "Snapshotting" -t KeySpace inneholder to tabeller, oppretter Cassandra en øyeblikksbilde katalog for hver.
Som standard lagrer Cassandra øyeblikksbildene i/var/lib/cassandra/datakatalog.
$ ls -la/var/lib/cassandra/data/snapshotting/
Du bør se kataloger i hver tabell i tastaturet.
Inne i hver fil finner du de andre filene og katalogene som vist:
Tar et øyeblikksbilde av et enkelt bord i et nøkkelpace
Noen ganger kan det være lurt å ta et øyeblikksbilde av et bestemt bord i et gitt nøkkelpace. For det kan du bruke alternativet med tabellen etterfulgt av navnet på tabellen du ønsker å ta sikkerhetskopi.
For eksempel, for å ta et øyeblikksbilde av brukeren av brukere i "snapshotting" -t KeySpace, kan vi kjøre følgende kommando:
$ NodeTool Snapshot -Table Users_Copy -T UC_SNAP Snapshotting
Kommandoen oppretter et øyeblikksbilde av Bruker_copy -tabellen og lagrer det under UC_SNAP -katalogen.
Oppføring av øyeblikksbilder
For å se tilgjengelige øyeblikksbilder i klyngen, bruk listsnapshot -kommandoen som vist:
$ NodeTool Listsnapshots
Du bør få en liste over alle tilgjengelige øyeblikksbilder og detaljer, for eksempel øyeblikksbilde -navnet, som KeySpace de tilhører, kolonnen Navn, størrelsen på disken og den faktiske størrelsen.
Øyeblikksbilde detaljer:
Snapshot Navn KeySpace Navn Kolonne Familienavn Ekte størrelse på disken
UC_SNAP Snapshotting Users_Copy 0 byte 5.87 Kib
1661397218984 SYSTEM_SCHEMA KOLUMNER 0 BYTES 12.51 Kib
1661397218984 System_schema typer 0 byte 15.03 Kib
1661397218984 System_schema Indekser 0 Byte 15.15 Kib
1661397218984 System_schema KeySpaces 0 byte 5.81 Kib
1661397218984 System_schema dropped_columns 0 byte 15.63 Kib
1661397218984 System_schema Aggregates 0 byte 15.4 Kib
1661397218984 System_schema utløser 0 byte 15.15 Kib
1661397218984 System_schema Tabeller 0 BYTES 10.27 Kib
1661397218984 Snapshotting brukere 0 byte 5.86 Kib
1661397218984 Snapshotting users_copy 0 byte 5.87 Kib
snapshotting_backup snapshotting brukere 0 byte 5.86 Kib
snapshotting_backup snapshotting brukere_copy 0 byte 5.87 Kib
Backups Snapshotting brukere 0 byte 5.86 Kib
Backups Snapshotting Users_copy 0 byte 5.87 Kib
1661397899477 Snapshotting users_copy 0 byte 5.87 Kib
Total TrueDiskspaceused: 0 byte
Konklusjon
I denne artikkelen lærte du hvordan Snapshotting fungerer i Apache Cassandra. Du lærte også hvordan du tar øyeblikksbilder av tastetaser, spesifikke tabeller i et nøkkelpace og mer.
Takk for at du leste!