sql >> Database teknologi >  >> RDS >> MariaDB

Sådan opretter du en klon af din MySQL- eller PostgreSQL-databaseklynge

Hvis du administrerer en produktionsdatabase, er chancerne store for, at du har været nødt til at klone din database til en anden server end produktionsserveren. Den grundlæggende metode til at oprette en klon er at gendanne en database fra en nylig sikkerhedskopi til en anden databaseserver. En anden metode er at replikere fra en kildedatabase, mens den stadig kører, i hvilket tilfælde det er vigtigt, at den originale database ikke påvirkes af nogen kloningsprocedure.

Hvorfor skulle du klone en database?

En klonet databaseklynge er nyttig i en række scenarier:

  • Fejlfinding af din klonede produktionsklynge i sikkerheden i dit testmiljø, mens du udfører destruktive operationer på databasen.
  • Patch-/opgraderingstest af en klonet database for at validere opgraderingsprocessen, før den anvendes på produktionsklyngen.
  • Valider backup og gendannelse af en produktionsklynge ved hjælp af en klonet klynge.
  • Valider eller test nye applikationer på en klonet produktionsklynge, før den implementeres på den levende produktionsklynge.
  • Klon hurtigt databasen for revisions- eller informationsoverholdelseskrav, f.eks. ved kvartals- eller årsafslutning, hvor indholdet af databasen ikke må ændres.
  • Der kan oprettes en rapporteringsdatabase med intervaller for at undgå dataændringer under rapportgenereringen.
  • Migrer en database til nye servere, nyt implementeringsmiljø eller et nyt datacenter.

Når du kører din databaseinfrastruktur i skyen, er omkostningerne ved at eje en vært (delt eller dedikeret virtuel maskine) betydeligt lavere sammenlignet med den traditionelle måde at leje plads i et datacenter eller eje en fysisk server på. Desuden kan det meste af cloud-implementeringen nemt automatiseres via udbyder-API'er, klientsoftware og scripting. Derfor kan kloning af en klynge være en almindelig måde at duplikere dit implementeringsmiljø på, f.eks. fra dev til iscenesættelse til produktion eller omvendt.

Vi har ikke set denne funktion blive tilbudt af nogen på markedet, så det er vores privilegium at vise, hvordan det fungerer med ClusterControl.

Klonning af en MySQL Galera Cluster

En af de fede funktioner i ClusterControl er, at det giver dig mulighed for hurtigt at klone en eksisterende MySQL Galera Cluster, så du har en nøjagtig kopi af datasættet på den anden klynge. ClusterControl udfører kloningsoperationen online uden nogen form for låsning eller nedetid til den eksisterende klynge. Det er ligesom en klyngeskaleringsoperation, bortset fra at begge klynger er uafhængige af hinanden, efter at synkroniseringen er fuldført. Den klonede klynge behøver ikke nødvendigvis at have samme klyngestørrelse som den eksisterende. Vi kunne starte med en-node-klynge og skalere den ud med flere databasenoder på et senere tidspunkt.

I dette eksempel har vi en klynge kaldet "Staging", som vi ønsker at klone som en anden klynge kaldet "Produktion". Udgangspunktet er, at iscenesættelsesklyngen allerede har gemt de nødvendige data, som snart vil være i produktion. Produktionsklyngen består af yderligere 3 noder med produktionsspecifikationer.

Følgende diagram opsummerer den endelige arkitektur af, hvad vi ønsker at opnå:

Den første ting at gøre er at konfigurere en adgangskodefri SSH fra ClusterControl-serveren til produktionsserverne. Kør følgende på ClusterControl-serveren:

$ whoami

root

$ ssh-copy-id [email protected]

$ ssh-copy-id [email protected]

$ ssh-copy-id [email protected]

Indtast rodadgangskoden til målserveren, hvis du bliver bedt om det.

Fra ClusterControl-databaseklyngelisten skal du klikke på knappen Cluster Action og vælge Clone Cluster. Følgende guide vises:

Angiv IP-adresserne eller værtsnavnene for den nye klynge, og sørg for at få hele det grønne flueben ud for den angivne vært. Det grønne ikon betyder, at ClusterControl er i stand til at oprette forbindelse til værten via adgangskodefri SSH. Klik på knappen "Klon klynge" for at starte implementeringen.

Implementeringstrinene er:

  1. Opret en ny klynge bestående af én node.
  2. Synkroniser den nye one-node klynge via SST. Donoren er en af ​​kildeserverne.
  3. De resterende nye noder vil slutte sig til klyngen, efter at donoren af ​​den klonede klynge er synkroniseret med klyngen.

Når det er gjort, vil en ny MySQL Galera-klynge blive vist under ClusterControl-klynge-dashboard, når implementeringsjobbet er fuldført.

Bemærk, at klyngekloningen kun kloner databaseserverne og ikke hele stakken af ​​klyngen. Dette betyder, at andre understøttende komponenter relateret til klyngen som load balancers, virtuel IP-adresse, Galera-arbitrator eller asynkron slave ikke vil blive klonet af ClusterControl. Ikke desto mindre, hvis du gerne vil klone som en nøjagtig kopi af din eksisterende databaseinfrastruktur, kan du opnå det med ClusterControl ved at implementere disse komponenter separat, efter at databasekloningen er fuldført.

Oprettelse af en databaseklynge fra en sikkerhedskopi

En anden lignende funktion, der tilbydes af ClusterControl, er "Create Cluster from Backup". Denne funktion er introduceret i ClusterControl 1.7.1, specifikt for Galera Cluster og PostgreSQL klynger, hvor man kan oprette en ny klynge fra den eksisterende backup. I modsætning til klyngekloning bringer denne handling ikke yderligere belastning til kildeklyngen med en afvejning af, at den klonede klynge ikke vil være i den aktuelle tilstand som kildeklyngen.

For at oprette en klynge fra en sikkerhedskopi skal du have oprettet en fungerende sikkerhedskopi. For Galera Cluster er alle sikkerhedskopieringsmetoder understøttet, mens for PostgreSQL er det kun pgbackrest, der ikke understøttes for ny klyngeimplementering. Fra ClusterControl kan en sikkerhedskopi oprettes eller planlægges nemt under ClusterControl -> Backups -> Create Backup. Fra listen over den oprettede sikkerhedskopi skal du klikke på Gendan sikkerhedskopi, vælge sikkerhedskopien fra listen og vælge "Opret klynge fra sikkerhedskopi" fra gendannelsesindstillingen:

I dette eksempel skal vi implementere en ny PostgreSQL Streaming-replikeringsklynge til iscenesættelsesmiljø, baseret på den eksisterende backup vi har i produktionsklyngen. Følgende diagram illustrerer den endelige arkitektur:

Den første ting at gøre er at konfigurere en adgangskodefri SSH fra ClusterControl-serveren til produktionsserverne. Kør følgende på ClusterControl-serveren:

$ whoami

root

$ ssh-copy-id [email protected]

$ ssh-copy-id [email protected]

$ ssh-copy-id [email protected]

Når du vælger Opret klynge fra sikkerhedskopi, åbner ClusterControl en installationsguidedialog for at hjælpe dig med at konfigurere den nye klynge:

En ny PostgreSQL Streaming-replikeringsinstans vil blive oprettet fra den valgte sikkerhedskopi, som vil blive brugt som basisdatasæt for den nye klynge. Den valgte backup skal være tilgængelig fra noderne i den nye klynge eller lagret i ClusterControl-værten.

Hvis du klikker på "Fortsæt", åbnes guiden til standarddatabaseklyngeimplementering:

Bemærk, at root/admin-brugeradgangskoden til denne klynge skal være den samme som PostgreSQL admin/root-adgangskoden som inkluderet i sikkerhedskopien. Følg konfigurationsguiden i overensstemmelse hermed, og ClusterControl udfører derefter implementeringen i følgende rækkefølge:

  1. Installer nødvendig software og afhængigheder på alle PostgreSQL-noder.
  2. Start den første node.
  3. Stream og gendan backup på den første node.
  4. Konfigurer og tilføj resten af ​​noderne.

Når det er gjort, vil en ny PostgreSQL-replikeringsklynge blive vist under ClusterControl-klynge-dashboard, når implementeringsjobbet er fuldført.

Konklusion

ClusterControl giver dig mulighed for at klone eller kopiere en databaseklynge til flere miljøer med blot et antal klik. Du kan downloade det gratis i dag. God kloning!
  1. PyMySQL kan ikke oprette forbindelse til MySQL på localhost

  2. Eksporter tabeldata fra en SQL Server til en anden

  3. Ændringer til en skrivbar partition kan mislykkes uventet

  4. Parameter Sniffing, Embedding og RECOMPILE-indstillingerne