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

Cloud Backup-indstillinger til MySQL- og MariaDB-databaser

Hovedformålet med at sikkerhedskopiere dine data er naturligvis muligheden for at rulle tilbage og få adgang til dine arkiver i tilfælde af hardwarefejl. For at drive forretning i dag har du brug for visheden om, at i tilfælde af en katastrofe vil dine data være beskyttet og tilgængelige. Du bliver nødt til at gemme dine sikkerhedskopier off-site, hvis dit datacenter går i flammer.

Databeskyttelse er fortsat en udfordring for små og mellemstore virksomheder. Små til mellemstore virksomheder foretrækker at arkivere deres virksomheds data ved hjælp af direkte tilknyttet lagring, hvor størstedelen af ​​virksomhederne har planer om at lave sikkerhedskopier uden for virksomheden. Lokal lagringstilgang kan føre til et af de mest alvorlige dilemmaer, som moderne virksomhed kan stå over for - tab af data i tilfælde af en katastrofe.

Mange faktorer kommer i overvejelse, når man skal vurdere, om man skal tillade en virksomhedskritisk database at blive overført offsite, og når man vælger en passende leverandør til at gøre det. Traditionelle metoder som at skrive på bånd og sende til et fjerntliggende sted kan være en kompliceret proces, der kræver speciel hardware, tilstrækkeligt uddannet personale og procedurer for at sikre, at sikkerhedskopier regelmæssigt produceres, beskyttes, og at oplysningerne i dem er verificeret for integritet. Små virksomheder har normalt små it-budgetter. Ofte har de ikke råd til at have et sekundært datacenter, selvom de har et dedikeret datacenter. Men ikke desto mindre er det stadig vigtigt at beholde en kopi af dine sikkerhedskopifiler offsite. Katastrofer som orkan, oversvømmelse, brand eller tyveri kan ødelægge dine servere og lager. Ved at holde sikkerhedskopierede data i det separate datacenter sikrer du, at data er sikre, uanset hvad der foregår i dit primære datacenter. Cloud-lagring er en fantastisk måde at løse dette problem på.
Med tilgangen til cloud-backup er der en række faktorer at overveje. Nogle af de spørgsmål, du har, er:

  • Er sikkerhedskopierede data sikret i hvile i det eksterne datacenter?
  • Er overførsel til eller fra det eksterne datacenter gennem det offentlige internetnetværk sikkert?
  • Er der en effekt på RTO (Recovery Time Objective)?
  • Er backup- og gendannelsesprocessen nem nok for vores it-medarbejdere?
  • Er der nødvendige ændringer af eksisterende processer?
  • Er 3. parts sikkerhedskopieringsværktøjer nødvendige?
  • Hvad er de ekstra omkostninger i form af nødvendig software eller dataoverførsel?
  • Hvad er lageromkostningerne?

Sikkerhedskopieringsfunktioner ved sikkerhedskopiering til skyen

Hvis din MySQL-server eller backupdestination er placeret i en udsat infrastruktur som en offentlig sky, hostingudbyder eller forbundet via et ikke-pålideligt WAN-netværk, skal du tænke over yderligere handlinger i din backuppolitik. Der er få forskellige måder at udføre databasesikkerhedskopiering på for MySQL, og afhængigt af typen af ​​sikkerhedskopiering vil genoprettelsestiden, størrelsen og infrastrukturmulighederne variere. Da mange af cloud storage-løsningerne simpelthen er storage med forskellige API-frontends, kan enhver backup-løsning udføres med lidt scripting. Så hvad er de muligheder, vi har for at gøre processen glat og sikker?

Kryptering

Det er altid en god idé at håndhæve kryptering for at øge sikkerheden for sikkerhedskopierede data. En simpel use case til at implementere kryptering er, hvor du vil skubbe sikkerhedskopien til et eksternt backuplager placeret i den offentlige sky.

Når du opretter en krypteret sikkerhedskopi, er en ting at huske på, at det normalt tager længere tid at gendanne. Sikkerhedskopien skal dekrypteres før nogen gendannelsesaktiviteter. Med et stort datasæt kan dette medføre nogle forsinkelser i RTO'en.

På den anden side, hvis du bruger privat nøgle til kryptering, skal du sørge for at opbevare nøglen et sikkert sted. Hvis den private nøgle mangler, vil sikkerhedskopien være ubrugelig og uoprettelig. Hvis nøglen bliver stjålet, vil alle oprettede sikkerhedskopier, der bruger den samme nøgle, blive kompromitteret, da de ikke længere er sikret. Du kan bruge den populære GnuPG eller OpenSSL til at generere de private eller offentlige nøgler.
For at udføre mysqldump-kryptering ved hjælp af GnuPG skal du generere en privat nøgle og følge guiden i overensstemmelse hermed:

$ gpg --gen-key

Opret en almindelig mysqldump-sikkerhedskopi som normalt:

$ mysqldump --routines --events --triggers --single-transaction db1 | gzip > db1.tar.gz

Krypter dump-filen og fjern den ældre almindelige sikkerhedskopi:

$ gpg --encrypt -r ‘[email protected]’ db1.tar.gz
$ rm -f db1.tar.gz

GnuPG vil automatisk tilføje .gpg-udvidelsen til den krypterede fil. For at dekryptere
skal du blot køre gpg-kommandoen med --decrypt flag:

$ gpg --output db1.tar.gz --decrypt db1.tar.gz.gpg

For at oprette en krypteret mysqldump ved hjælp af OpenSSL, skal man generere en privat nøgle og en offentlig nøgle:
OpenSSL req -x509 -nodes -newkey rsa:2048 -keyout dump.priv.pem -out dump.pub.pem

Denne private nøgle (dump.priv.pem) skal opbevares på et sikkert sted til fremtidig dekryptering. For mysqldump kan en krypteret sikkerhedskopi oprettes ved at overføre indholdet til openssl, for eksempel

mysqldump --routines --events --triggers --single-transaction database | openssl smime -encrypt -binary -text -aes256
-out database.sql.enc -outform DER dump.pub.pem

For at dekryptere skal du blot bruge den private nøgle (dump.priv.pem) ved siden af ​​flaget -decrypt:
openssl smime -decrypt -in database.sql.enc -binary -inform

DEM -inkey dump.priv.pem -out database.sql

Percona XtraBackup kan bruges til at kryptere eller dekryptere lokale eller streaming backups med xbstream mulighed for at tilføje endnu et lag af beskyttelse til backups. Kryptering udføres med libgcrypt-biblioteket. Både --encrypt-key option og --encryptkey-file option kan bruges til at specificere krypteringsnøglen. Krypteringsnøgler kan genereres med kommandoer som

$ openssl rand -base64 24
$ bWuYY6FxIPp3Vg5EDWAxoXlmEFqxUqz1

Denne værdi kan derefter bruges som krypteringsnøgle. Eksempel på kommandoen innobackupex ved hjælp af --encrypt-key:

$ innobackupex --encrypt=AES256 --encrypt-key=”bWuYY6FxIPp3Vg5EDWAxoXlmEFqxUqz1” /storage/backups/encrypted

Outputtet af ovenstående OpenSSL-kommando kan også omdirigeres til en fil og kan behandles som en nøglefil:

openssl rand -base64 24 > /etc/keys/pxb.key

Brug det med --encrypt-key-file-indstillingen i stedet:

innobackupex --encrypt=AES256 --encrypt-key-file=/etc/keys/pxb.key /storage/backups/encrypted

For at dekryptere skal du blot bruge --decrypt-indstillingen med passende --encrypt-key eller --encrypt-key-file:

$ innobackupex --decrypt=AES256 --encrypt-key=”bWuYY6FxIPp3Vg5EDWAxoXlmEFqxUqz1”
/storage/backups/encrypted/2018-11-18_11-10-09/

For mere information om MySQL- og MariaDB-kryptering, se venligst vores andet blogindlæg.

Kompression

Inden for databasens cloud backup verden er komprimering en af ​​dine bedste venner. Det kan ikke kun spare lagerplads, men det kan også reducere den tid, det tager at downloade/uploade data betydeligt.
Der er masser af komprimeringsværktøjer tilgængelige derude, nemlig gzip, bzip2, zip, rar og 7z.
Normalt kan mysqldump have de bedste komprimeringshastigheder, da det er en flad tekstfil. Afhængigt af komprimeringsværktøjet og forholdet kan en komprimeret mysqldump være op til 6 gange mindre end den originale sikkerhedskopistørrelse. For at komprimere sikkerhedskopien kan du overføre mysqldump-outputtet til et komprimeringsværktøj og omdirigere det til en destinationsfil. Du kan også springe flere ting over, såsom kommentarer, låse tabeller erklæring (hvis InnoDB), springe GTID fjernet og triggere:

mysqldump --single-transaction --skip-comments --skip-triggers --skip-lock-tables --set-gtid-purged OFF --all-databases | gzip > /storage/backups/all-databases.sql.gz

Med Percona Xtrabackup kan du bruge streaming-tilstanden (innobackupex), som sender backup til STDOUT i specielt tar- eller xbstream-format i stedet for at kopiere filer til backup-mappen. Hvis du har en komprimeret sikkerhedskopi, kan du spare op til 50 % af den originale sikkerhedskopistørrelse, afhængigt af datasættet. Tilføj --compress-indstillingen i backup-kommandoen. Ved at bruge xbstream i streaming-sikkerhedskopier kan du fremskynde komprimeringsprocessen ved at bruge --compress-threads-indstillingen. Denne indstilling angiver antallet af tråde, der er oprettet af xtrabackup til parallel datakomprimering. Standardværdien for denne indstilling er 1. For at bruge denne funktion skal du tilføje indstillingen til en lokal sikkerhedskopi. Et eksempel på sikkerhedskopiering med komprimering:

innobackupex --stream=xbstream --compress --compress-threads=4 > /storage/backups/backup.xbstream

Før du anvender logfiler under forberedelsesfasen, skal komprimerede filer
dekomprimeres ved hjælp af xbstream:
Brug derefter qpress til at udpakke hver fil, der slutter med .qp i deres respektive mappe, før de
køres -- anvende-log kommando for at forberede MySQL-dataene.

$ xbstream -x < /storage/backups/backup.xbstream

Begræns netværksgennemstrømning

En god mulighed for sikkerhedskopiering i skyen er at begrænse netværksstreamingbåndbredden (Mb/s), når du laver en sikkerhedskopi. Det kan du opnå med pv tool. Pv-værktøjet kommer med datamodifikator-option -L RATE, --rate-limit RATE, som begrænser overførslen til et maksimum på RATE bytes pr. sekund. Nedenstående eksempel vil begrænse det til 2MB/s.

$ pv -q -L 2m

I eksemplet nedenfor kan du se xtrabackup med parallel gzip, kryptering

 /usr/bin/innobackupex --defaults-file=/etc/mysql/my.cnf --galera-info --parallel 4 --stream=xbstream --no-timestamp . | pv -q -L 2m | pigz -9 - | openssl enc -aes-256-cbc -pass file:/var/tmp/cmon-008688-19992-72450efc3b6e9e4f.tmp > /home/ubuntu/backups/BACKUP-3445/backup-full-2018-11-28_213540.xbstream.gz.aes256 ) 2>&1.

Overfør backup til Cloud

Når nu din sikkerhedskopi er komprimeret og krypteret, er den klar til overførsel.

Google Cloud

Gsutil-kommandolinjeværktøjet bruges til at administrere, overvåge og bruge dine lagerbeholdninger på Google Cloud Storage. Hvis du allerede har installeret gcloud util, har du allerede gsutil installeret. Ellers skal du følge instruktionerne for din Linux-distribution herfra.

For at installere gcloud CLI kan du følge nedenstående procedure:

curl https://sdk.cloud.google.com | bash

Genstart din shell:

exec -l $SHELL

Kør gcloud init for at initialisere gcloud-miljøet:

gcloud init

Med gsutil-kommandolinjeværktøjet installeret og godkendt, skal du oprette en regional lagerbøtte ved navn mysql-backups-storage i dit nuværende projekt.

gsutil mb -c regional -l europe-west1 gs://severalnines-storage/
Creating gs://mysql-backups-storage/

Amazon S3

Hvis du ikke bruger RDS til at hoste dine databaser, er det meget sandsynligt, at du laver dine egne sikkerhedskopier. Amazons AWS-platform, S3 (Amazon Simple Storage Service) er en datalagringstjeneste, der kan bruges til at gemme databasesikkerhedskopier eller andre forretningskritiske filer. Enten det er Amazon EC2-instansen eller dit lokale miljø, du kan bruge tjenesten til at sikre dine data.

Mens sikkerhedskopier kan uploades via webgrænsefladen, kan den dedikerede s3-kommandolinjegrænseflade bruges til at gøre det fra kommandolinjen og gennem backup-automatiseringsscripts. Hvis sikkerhedskopier skal opbevares i meget lang tid, og genoprettelsestiden ikke er et problem, kan sikkerhedskopier overføres til Amazon Glacier-tjenesten, hvilket giver meget billigere langtidslagring. Filer (amazon-objekter) er logisk gemt i en stor flad beholder med navnet bucket. S3 præsenterer en REST-grænseflade til sine interne. Du kan bruge denne API til at udføre CRUD-operationer på buckets og objekter, samt til at ændre tilladelser og konfigurationer på begge.

Den primære distributionsmetode for AWS CLI på Linux, Windows og macOS er pip, en pakkehåndtering til Python. Instruktion kan findes her.

aws s3 cp severalnines.sql s3://severalnine-sbucket/mysql_backups

Som standard giver S3 elleve 9s objekt holdbarhed. Det betyder, at hvis du gemmer 1.000.000.000 (1 milliard) genstande i den, kan du i gennemsnit forvente at miste 1 objekt hvert 10. år. Måden S3 opnår det imponerende antal 9'ere på er ved at replikere objektet automatisk i flere tilgængelighedszoner, som vi vil tale om i et andet indlæg. Amazon har regionale datacentre over hele verden.

Microsoft Azure Storage

Microsofts offentlige cloud-platform, Azure, har lagermuligheder med deres kontrollinjegrænseflade. Information kan findes her. Open source Azure CLI på tværs af platforme giver et sæt kommandoer til at arbejde med Azure-platformen. Det giver meget af den funktionalitet, der ses i Azure-portalen, inklusive rig dataadgang.

Installationen af ​​Azure CLI er ret enkel, du kan finde instruktioner her. Nedenfor kan du finde, hvordan du overfører din sikkerhedskopi til Microsofts lager.

az storage blob upload --container-name severalnines --file severalnines.sql --name severalnines_backup

Hybrid Storage til MySQL- og MariaDB-sikkerhedskopier

Med den voksende offentlige og private cloud storage-industri har vi en ny kategori kaldet hybrid storage. Denne teknologi gør det muligt at lagre filerne lokalt, med ændringer automatisk synkroniseret til fjernbetjeningen i skyen. En sådan tilgang kommer fra behovet for at have nylige sikkerhedskopier gemt lokalt for hurtig gendannelse (lavere RTO) samt forretningskontinuitetsmål.
Det vigtige aspekt ved effektiv ressourceanvendelse er at have separate sikkerhedskopieringsretentioner. Data, der er gemt lokalt på redundante diskdrev, vil blive opbevaret i en kortere periode, mens cloud backup-lagring ville blive holdt i længere tid. Mange gange kommer kravet om længere sikkerhedskopiering fra juridiske forpligtelser for forskellige brancher (såsom telekommunikation, der skal gemme forbindelsesmetadata). Cloud-udbydere som Google Cloud Services, Microsoft Azure og Amazon S3 tilbyder hver især praktisk talt ubegrænset lagerplads, hvilket reducerer lokale pladsbehov. Det giver dig mulighed for at beholde dine sikkerhedskopifiler i længere tid, så længe du vil og ikke have bekymringer omkring lokal diskplads.

ClusterControl backup management - hybrid storage

Når du planlægger sikkerhedskopiering med ClusterControl, kan hver af sikkerhedskopieringsmetoderne konfigureres med et sæt muligheder for, hvordan du ønsker, at sikkerhedskopieringen skal udføres. Det vigtigste for hybrid cloud storage ville være:

  • Netværksregulering
  • Kryptering med den indbyggede nøglestyring
  • Kompression
  • Opbevaringsperiode for de lokale sikkerhedskopier
  • Opbevaringsperiode for cloud-sikkerhedskopierne
ClusterControl bibeholdelse af dobbelt backup ClusterControl avancerede sikkerhedskopieringsfunktioner til sky, parallel komprimering, netværksbåndswitchgrænse, kryptering osv ...

Konklusion

Skyen har ændret databackup-industrien. På grund af dets overkommelige prisniveau har mindre virksomheder en offsite-løsning, der sikkerhedskopierer alle deres data.

Din virksomhed kan drage fordel af cloud-skalerbarhed og pay-as-you-go-priser til voksende lagerbehov. Du kan designe en sikkerhedskopieringsstrategi til at levere både lokale kopier i datacentret til øjeblikkelig gendannelse og en problemfri gateway til cloud storage-tjenester fra AWS, Google og Azure.

Avanceret TLS og AES 256-bit kryptering og komprimeringsfunktioner understøtter sikre sikkerhedskopier, der fylder væsentligt mindre i skyen.


  1. Sådan får du den aktuelle dato i MySQL

  2. Halloween-problemet – del 2

  3. adgang nægtet for bruger @ 'localhost' til databasen ''

  4. Android-setPeriodic for JobScheduler virker ikke