Huvudsyftet med att säkerhetskopiera dina data är naturligtvis möjligheten att återställa och komma åt dina arkiv i händelse av hårdvarufel. För att göra affärer idag behöver du vara säker på att i händelse av en katastrof kommer dina data att vara skyddade och tillgängliga. Du skulle behöva lagra dina säkerhetskopior utanför platsen, om ditt datacenter skulle gå över i lågor.
Dataskydd är fortfarande en utmaning för små och medelstora företag. Små till medelstora företag föredrar att arkivera sina företags data med hjälp av direktansluten lagring, där majoriteten av företagen har planer på att göra säkerhetskopior utanför anläggningen. Lokal lagringsmetod kan leda till ett av de allvarligaste dilemman som ett modernt företag kan möta - förlust av data i händelse av en katastrof.
Många faktorer kommer i övervägande när man bedömer om man ska tillåta en affärskritisk databas att överföras utanför platsen, och när man väljer en lämplig leverantör att göra det. Traditionella metoder som att skriva på band och skicka till en avlägsen plats kan vara en komplicerad process som kräver speciell hårdvara, tillräckligt utbildad personal och rutiner för att säkerställa att säkerhetskopior regelbundet produceras, skyddas och att informationen i dem verifieras för integritet. Små företag har vanligtvis små IT-budgetar. Ofta har de inte råd att ha ett sekundärt datacenter, även om de har ett dedikerat datacenter. Men ändå är det fortfarande viktigt att behålla en kopia av dina säkerhetskopior utanför platsen. Katastrofer som orkan, översvämning, brand eller stöld kan förstöra dina servrar och lagring. Att hålla säkerhetskopierad data i det separata datacentret säkerställer att data är säkra, oavsett vad som händer i ditt primära datacenter. Molnlagring är ett utmärkt sätt att lösa detta problem.
Med molnsäkerhetskopieringsmetoden finns det ett antal faktorer att ta hänsyn till. Några av frågorna du har är:
- Är säkerhetskopierad data säker i vila i det externa datacentret?
- Är överföring till eller från det externa datacentret via det offentliga internetnätverket säker?
- Finns det någon effekt på RTO (Recovery Time Objective)?
- Är säkerhetskopierings- och återställningsprocessen lätt nog för vår IT-personal?
- Krävs det några ändringar av befintliga processer?
- Behövs säkerhetskopieringsverktyg från tredje part?
- Vilka är de extra kostnaderna i form av nödvändig programvara eller dataöverföring?
- Vad är lagringskostnaderna?
Säkerhetskopieringsfunktioner när du gör en säkerhetskopiering till molnet
Om din MySQL-server eller backupdestination är belägen i en exponerad infrastruktur som ett offentligt moln, värdleverantör eller ansluten via ett opålitligt WAN-nätverk, måste du tänka på ytterligare åtgärder i din säkerhetskopieringspolicy. Det finns några olika sätt att utföra säkerhetskopiering av databas för MySQL, och beroende på typen av säkerhetskopiering kommer återställningstid, storlek och infrastrukturalternativ att variera. Eftersom många av molnlagringslösningarna helt enkelt är lagring med olika API-gränssnitt, kan vilken backuplösning som helst utföras med lite skript. Så vilka alternativ har vi för att göra processen smidig och säker?
Kryptering
Det är alltid en bra idé att upprätthålla kryptering för att förbättra säkerheten för säkerhetskopierade data. Ett enkelt användningsfall för att implementera kryptering är när du vill överföra säkerhetskopian till ett externt säkerhetskopieringslager som finns i det offentliga molnet.
När du skapar en krypterad säkerhetskopia är en sak att tänka på att det vanligtvis tar längre tid att återställa. Säkerhetskopieringen måste dekrypteras innan återställningsaktiviteter. Med en stor datauppsättning kan detta leda till vissa förseningar för RTO.
Å andra sidan, om du använder privat nyckel för kryptering, se till att förvara nyckeln på ett säkert ställe. Om den privata nyckeln saknas kommer säkerhetskopian att vara värdelös och omöjlig att återställa. Om nyckeln blir stulen kommer alla skapade säkerhetskopior som använder samma nyckel att äventyras eftersom de inte längre är säkrade. Du kan använda den populära GnuPG eller OpenSSL för att generera de privata eller offentliga nycklarna.
För att utföra mysqldump-kryptering med GnuPG, generera en privat nyckel och följ guiden i enlighet med detta:
$ gpg --gen-key
Skapa en vanlig mysqldump-säkerhetskopia som vanligt:
$ mysqldump --routines --events --triggers --single-transaction db1 | gzip > db1.tar.gz
Kryptera dumpfilen och ta bort den äldre vanliga säkerhetskopian:
$ gpg --encrypt -r ‘[email protected]’ db1.tar.gz
$ rm -f db1.tar.gz
GnuPG kommer automatiskt att lägga till .gpg-tillägget på den krypterade filen. För att dekryptera
kör helt enkelt kommandot gpg med --decrypt flagga:
$ gpg --output db1.tar.gz --decrypt db1.tar.gz.gpg
För att skapa en krypterad mysqldump med OpenSSL måste man generera en privat nyckel och en publik nyckel:
OpenSSL req -x509 -nodes -newkey rsa:2048 -keyout dump.priv.pem -out dump.pub.pem
Denna privata nyckel (dump.priv.pem) måste förvaras på en säker plats för framtida dekryptering. För mysqldump kan en krypterad säkerhetskopia skapas genom att till exempel skicka innehållet till openssl
mysqldump --routines --events --triggers --single-transaction database | openssl smime -encrypt -binary -text -aes256
-out database.sql.enc -outform DER dump.pub.pem
För att dekryptera, använd helt enkelt den privata nyckeln (dump.priv.pem) bredvid flaggan -decrypt:
openssl smime -decrypt -in database.sql.enc -binary -inform
DEM -inkey dump.priv.pem -out database.sql
Percona XtraBackup kan användas för att kryptera eller dekryptera lokala eller strömmande säkerhetskopior med xbstream-alternativet för att lägga till ytterligare ett lager av skydd till säkerhetskopiorna. Kryptering görs med biblioteket libgcrypt. Både --encrypt-key option och --encryptkey-file kan användas för att ange krypteringsnyckeln. Krypteringsnycklar kan genereras med kommandon som
$ openssl rand -base64 24
$ bWuYY6FxIPp3Vg5EDWAxoXlmEFqxUqz1
Detta värde kan sedan användas som krypteringsnyckel. Exempel på kommandot innobackupex som använder --encrypt-key:
$ innobackupex --encrypt=AES256 --encrypt-key=”bWuYY6FxIPp3Vg5EDWAxoXlmEFqxUqz1” /storage/backups/encrypted
Utdata från ovanstående OpenSSL-kommando kan också omdirigeras till en fil och kan behandlas som en nyckelfil:
openssl rand -base64 24 > /etc/keys/pxb.key
Använd den med alternativet --encrypt-key-file istället:
innobackupex --encrypt=AES256 --encrypt-key-file=/etc/keys/pxb.key /storage/backups/encrypted
För att dekryptera, använd helt enkelt --decrypt-alternativet med lämplig --encrypt-key eller --encrypt-key-file:
$ innobackupex --decrypt=AES256 --encrypt-key=”bWuYY6FxIPp3Vg5EDWAxoXlmEFqxUqz1”
/storage/backups/encrypted/2018-11-18_11-10-09/
För mer information om MySQL- och MariaDB-kryptering, vänligen kolla vårt annat blogginlägg.
Kompression
Inom databasens molnsäkerhetsvärld är komprimering en av dina bästa vänner. Det kan inte bara spara lagringsutrymme, utan det kan också avsevärt minska tiden som krävs för att ladda ner/ladda upp data.
Det finns massor av komprimeringsverktyg tillgängliga där ute, nämligen gzip, bzip2, zip, rar och 7z.
Normalt kan mysqldump ha de bästa komprimeringshastigheterna eftersom det är en platt textfil. Beroende på komprimeringsverktyget och förhållandet kan en komprimerad mysqldump vara upp till 6 gånger mindre än den ursprungliga säkerhetskopieringsstorleken. För att komprimera säkerhetskopian kan du skicka mysqldump-utgången till ett komprimeringsverktyg och omdirigera den till en målfil. Du kan också hoppa över flera saker som kommentarer, lås tabeller (om InnoDB), hoppa över GTID rensat och utlösare:
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 använda streamingläget (innobackupex), som skickar säkerhetskopian till STDOUT i speciellt tar- eller xbstream-format istället för att kopiera filer till backupkatalogen. Om du har en komprimerad säkerhetskopia kan du spara upp till 50 % av den ursprungliga säkerhetskopian, beroende på datauppsättningen. Lägg till alternativet --compress i backup-kommandot. Genom att använda xbstream i strömmande säkerhetskopior kan du påskynda komprimeringsprocessen genom att använda alternativet --compress-threads. Det här alternativet anger antalet trådar som skapas av xtrabackup för parallell datakomprimering. Standardvärdet för detta alternativ är 1. För att använda den här funktionen, lägg till alternativet i en lokal säkerhetskopia. Ett exempel på säkerhetskopiering med komprimering:
innobackupex --stream=xbstream --compress --compress-threads=4 > /storage/backups/backup.xbstream
Innan du använder loggar under förberedelsestadiet måste komprimerade filer
dekomprimeras med xbstream:
Använd sedan qpress för att extrahera varje fil som slutar med .qp i deras respektive katalog innan
körning -- application-log kommando för att förbereda MySQL-data.
$ xbstream -x < /storage/backups/backup.xbstream
Begränsa nätverkets genomströmning
Ett bra alternativ för molnsäkerhetskopiering är att begränsa bandbredden för nätverksströmning (Mb/s) när du gör en säkerhetskopiering. Det kan du uppnå med pv-verktyget. Pv-verktyget kommer med alternativ för datamodifierare -L RATE, --rate-limit RATE som begränsar överföringen till maximalt RATE-byte per sekund. Nedan exempel kommer att begränsa den till 2MB/s.
$ pv -q -L 2m
I exemplet nedan kan du se xtrabackup med parallell 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.
Överför säkerhetskopian till molnet
Nu när din säkerhetskopia är komprimerad och krypterad är den redo för överföring.
Google moln
Kommandoradsverktyget gsutil används för att hantera, övervaka och använda dina lagringshinkar på Google Cloud Storage. Om du redan har installerat gcloud util, har du redan gsutil installerat. Annars följer du instruktionerna för din Linux-distribution härifrån.
För att installera gcloud CLI kan du följa proceduren nedan:
curl https://sdk.cloud.google.com | bash
Starta om skalet:
exec -l $SHELL
Kör gcloud init för att initiera gcloud-miljön:
gcloud init
Med kommandoradsverktyget gsutil installerat och autentiserat skapar du en regional lagringshink som heter mysql-backups-storage i ditt nuvarande projekt.
gsutil mb -c regional -l europe-west1 gs://severalnines-storage/
Creating gs://mysql-backups-storage/
Amazon S3
Om du inte använder RDS för att vara värd för dina databaser är det mycket troligt att du gör dina egna säkerhetskopior. Amazons AWS-plattform, S3 (Amazon Simple Storage Service) är en datalagringstjänst som kan användas för att lagra säkerhetskopior av databas eller andra affärskritiska filer. Antingen är det Amazon EC2-instans eller din lokala miljö så kan du använda tjänsten för att säkra din data.
Även om säkerhetskopior kan laddas upp via webbgränssnittet, kan det dedikerade s3 kommandoradsgränssnittet användas för att göra det från kommandoraden och genom säkerhetskopieringsautomatiseringsskript. Om säkerhetskopior ska sparas under mycket lång tid, och återställningstiden inte är ett problem, kan säkerhetskopior överföras till Amazon Glacier-tjänsten, vilket ger mycket billigare långtidslagring. Filer (amazonobjekt) lagras logiskt i en stor platt behållare som heter hink. S3 presenterar ett REST-gränssnitt till sina interna enheter. Du kan använda detta API för att utföra CRUD-operationer på hinkar och objekt, samt för att ändra behörigheter och konfigurationer på båda.
Den primära distributionsmetoden för AWS CLI på Linux, Windows och macOS är pip, en pakethanterare för Python. Instruktioner finns här.
aws s3 cp severalnines.sql s3://severalnine-sbucket/mysql_backups
Som standard ger S3 elva 9s objekt hållbarhet. Det betyder att om du lagrar 1 000 000 000 (1 miljard) objekt i den, kan du förvänta dig att förlora 1 objekt vart tionde år i genomsnitt. Sättet som S3 uppnår det imponerande antalet 9:or är genom att replikera objektet automatiskt i flera tillgänglighetszoner, vilket vi kommer att prata om i ett annat inlägg. Amazon har regionala datacenter över hela världen.
Microsoft Azure Storage
Microsofts offentliga molnplattform, Azure, har lagringsalternativ med deras kontrolllinjegränssnitt. Information finns här. Azure CLI med öppen källkod och flera plattformar tillhandahåller en uppsättning kommandon för att arbeta med Azure-plattformen. Det ger mycket av den funktionalitet som finns i Azure-portalen, inklusive rik dataåtkomst.
Installationen av Azure CLI är ganska enkel, du hittar instruktioner här. Nedan kan du se hur du överför din säkerhetskopia till Microsofts lagringsutrymme.
az storage blob upload --container-name severalnines --file severalnines.sql --name severalnines_backup
Hybridlagring för MySQL- och MariaDB-säkerhetskopior
Med den växande offentliga och privata molnlagringsindustrin har vi en ny kategori som kallas hybridlagring. Denna teknik gör att filerna kan lagras lokalt, med ändringar som automatiskt synkroniseras till fjärrkontrollen i molnet. Ett sådant tillvägagångssätt kommer från behovet av att ha nya säkerhetskopior lagrade lokalt för snabb återställning (lägre RTO), såväl som affärskontinuitetsmål.
Den viktiga aspekten av effektiv resursanvändning är att ha separata säkerhetskopieringar. Data som lagras lokalt på redundanta hårddiskar skulle sparas under en kortare period medan molnsäkerhetslagring skulle hållas under en längre tid. Många gånger kommer kravet på längre säkerhetskopiering från juridiska skyldigheter för olika branscher (som telekom som måste lagra anslutningsmetadata). Molnleverantörer som Google Cloud Services, Microsoft Azure och Amazon S3 erbjuder var och en praktiskt taget obegränsad lagring, vilket minskar behovet av lokalt utrymme. Det låter dig behålla dina säkerhetskopior längre, så länge du vill och inte ha problem med lokalt diskutrymme.
När du schemalägger säkerhetskopiering med ClusterControl kan var och en av säkerhetskopieringsmetoderna konfigureras med en uppsättning alternativ för hur du vill att säkerhetskopieringen ska köras. Det viktigaste för hybridmolnlagring skulle vara:
- Nätverksbegränsning
- Kryptering med inbyggd nyckelhantering
- Kompression
- Lagringsperiod för de lokala säkerhetskopiorna
- Lagringsperiod för molnsäkerhetskopiorna
Slutsats
Molnet har förändrat säkerhetskopieringsbranschen. På grund av dess överkomliga pris har mindre företag en extern lösning som säkerhetskopierar all deras data.
Ditt företag kan dra nytta av skalbarhet i molnet och betal-i-för-mån-priser för växande lagringsbehov. Du kan utforma en säkerhetskopieringsstrategi för att tillhandahålla både lokala kopior i datacentret för omedelbar återställning och en sömlös gateway till molnlagringstjänster från AWS, Google och Azure.
Avancerade TLS och AES 256-bitars kryptering och komprimeringsfunktioner stöder säkra säkerhetskopieringar som tar upp betydligt mindre utrymme i molnet.