Innholdsfortegnelse
Introduksjon
Forutsetninger
Trinn 1: Opprett en bruker som ikke er rotsystem
Trinn 2: Sjekk lagringsmotoren
Trinn 3: Opprett en databasebruker for sikkerhetskopiering
Trinn 4: Installer Percona XtraBackup
Trinn 5: Lag backup-lagringskataloger
Trinn 6: Lag den første fullstendige sikkerhetskopien
Trinn 7: Lag følgende inkrementelle sikkerhetskopier
Trinn 8: Forbered sikkerhetskopifiler for gjenoppretting av databasen
Trinn 9: Gjenopprett databasen
Innholdsfortegnelse
- Introduksjon
- Forutsetninger
- Trinn 1: Opprett en bruker som ikke er rotsystem
- Trinn 2: Sjekk lagringsmotoren
- Trinn 3: Opprett en databasebruker for sikkerhetskopiering
- Trinn 4: Installer Percona XtraBackup
- Trinn 5: Lag backup-lagringskataloger
- Trinn 6: Lag den første fullstendige sikkerhetskopien
- Trinn 7: Lag følgende inkrementelle sikkerhetskopier
- Trinn 8: Forbered sikkerhetskopifiler for gjenoppretting av databasen
- Trinn 9: Gjenopprett databasen
- Videre trinn
Introduksjon
Percona XtraBackup er et gratis MySQL-basert program som brukes til å lage varme sikkerhetskopier. Den er også åpen kildekode. Med Percona XtraBackup kan du lage varme sikkerhetskopier av kjørende MySQL-, MariaDB- eller Percona Server-databaser uten å stoppe databasetjenesten eller gjøre den skrivebeskyttet. Dette er en forretningskritisk funksjon for mange nettbaserte virksomheter.
For databaser som bruker InnoDB, XtraDB og HailDB lagringsmotorer, kan Percona XtraBackup utføre ikke-blokkerende sikkerhetskopier. For databaser som bruker MyISAM-, Merge- og Archive-lagringsmotorer, kan Percona XtraBackup også utføre sikkerhetskopiering ved å stoppe skrivingen kort på slutten av sikkerhetskopieringsprosessen.
I denne artikkelen vil jeg vise deg hvordan du installerer og bruker Percona XtraBackup til å utføre fulle og inkrementelle hot backups på en Vultr-server basert på One-Click WordPress-applikasjonen. Vi vil utføre en fullstendig sikkerhetskopiering og to inkrementelle sikkerhetskopier, og deretter gjenopprette databasen til tilstanden til hver av de tre sikkerhetskopiene tilsvarende.
Forutsetninger
Jeg antar at du har distribuert en One-Click WordPress Vultr-serverforekomst fra bunnen av og har logget på som root, ved hjelp av SSH.
Trinn 1: Opprett en bruker som ikke er rotsystem
Av sikkerhetshensyn er en anbefalt praksis å opprette en annen brukerkonto med root-tillatelser, og deretter bruke den til å logge på og utføre dine daglige operasjoner på systemet. Du kan fortsatt utføre nesten alle superbrukerkommandoene med sudokommandoen.
1) Opprett en ny bruker. Erstatt sysusermed ditt eget brukernavn.
useradd sysuser
2) Angi passordet for den nye brukeren. Erstatt sysusermed ditt eget brukernavn.
passwd sysuser
3) Gi root-tillatelser til din nye bruker.
visudo
Finn avsnittet nedenfor.
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
Legg til en rad rett under dette avsnittet, erstatt sysusermed ditt eget brukernavn.
sysuser ALL=(ALL) ALL
Lagre og avslutt.
:wq
4) Bytt til din nye brukerkonto.
logout
Bruk deretter den nye brukerens legitimasjon for å logge på fra terminalvinduet.
Trinn 2: Sjekk lagringsmotoren
Som standard lagres MySQL-rotpåloggingen på VPS-en i /root/.my.cnf. Vis passordet i terminalen med følgende kommando.
sudo cat /root/.my.cnf
Bruk legitimasjonen som vises på skjermen for å logge på MySQL-konsollen.
mysql -u root -p
Kjør følgende i MySQL-skallet.
SHOW DATABASES;
Alle MySQL-databasene vil ha blitt vist på skjermen. Databasen som heter like wp5273512er WordPress-databasen som vi ønsker å sikkerhetskopiere. I følgende kommando, erstatt wp5273512med din egen:
USE wp5273512;
Sjekk lagringsmotoren for hver tabell:
SHOW TABLE STATUS\G
Du vil oppdage at alle tabellene i WordPress MySQL-databasen din bruker InnoDB-lagringsmotoren som er perfekt for å utføre hot backup med Percona XtraBackup.
For alle andre MySQL-databaser som bruker MyISAM-lagringsmotor, kan vi fortsatt sikkerhetskopiere dem med Percona XtraBackup ved å sette skrivingen på pause.
Trinn 3: Opprett en databasebruker for sikkerhetskopiering
Fortsatt i MySQL-skallet, bruk følgende kommandoer for å opprette en dedikert databasebruker for sikkerhetskopiering. Husk å erstatte databasebrukernavnet xbuserog passordet xbpasswdmed dine egne:
CREATE USER 'xbuser'@'localhost' IDENTIFIED BY 'xbpasswd';
GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT, CREATE TABLESPACE, PROCESS, SUPER, CREATE, INSERT, SELECT ON *.* TO 'xbuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Rettighetene gitt ovenfor er nødvendige for full Percona XtraBackup-funksjonalitet. Du kan fjerne noen av dem for mindre funksjonalitet og bedre sikkerhet. For mer informasjon, se Percona XtraBackup offisielle nettsted .
Trinn 4: Installer Percona XtraBackup
Du kan installere Percona XtraBackup fra Perconas RPM-lager ganske enkelt:
sudo yum install -y http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
sudo yum install -y percona-xtrabackup
Trinn 5: Lag backup-lagringskataloger
Først må du legge til bruker sysuseri mysqlgruppen. Erstatt sysusermed ditt eget brukernavn.
sudo gpasswd -a sysuser mysql
Opprett en katalog for å lagre fullstendige sikkerhetskopier.
sudo mkdir -p /dbbackup/full/
Opprett en annen katalog for å lagre inkrementelle sikkerhetskopier.
sudo mkdir -p /dbbackup/inc/
Endre eieren av disse katalogene til bruker sysuserog gruppe sysuser.
sudo chown -R sysuser:sysuser /dbbackup
Logg ut for å sette disse endringene i kraft.
logout
Logg deretter på med sysuserigjen.
Trinn 6: Lag den første fullstendige sikkerhetskopien
XtraBackup består først og fremst av XtraBackup-programmet og innobackupexperl-skriptet. Vanligvis kan du bruke innobackupexperl-skriptet til å utføre ulike operasjonsprosedyrer for enkelhets skyld.
Skriv inn følgende kommando for å lage den første fullstendige sikkerhetskopien. Husk å erstatte databasebrukernavnet xbuser, databasebrukerpassordet xbpasswdog den fullstendige sikkerhetskopikatalogen /dbbackup/full/med dine egne.
sudo innobackupex --user=xbuser --password=xbpasswd /dbbackup/full/
Når denne kommandoen er utført riktig, vil du se bekreftelsesmeldingen "innobackupex: fullført OK!" på den siste linjen i utgangen.
Alle de nyopprettede filene i denne fullstendige sikkerhetskopien vil bli lagret i en tidsstemplet katalog under /dbbackup/full/. For eksempel /dbbackup/full/2015-05-22_05-45-54.
Trinn 7: Lag følgende inkrementelle sikkerhetskopier
Skriv inn følgende kommando for å lage den første inkrementelle sikkerhetskopien. Erstatt variabler i kommandoen tilsvarende.
sudo innobackupex --user=xbuser --password=xbpasswd --incremental --incremental-basedir=/dbbackup/full/2015-05-22_05-45-54 /dbbackup/inc/
Igjen vil du se "innobackupex: fullført OK!" på slutten av utdata når kommandoen utføres vellykket. Sikkerhetskopiene vil bli lagret i en tidsstemplet katalog under /dbbackup/inc/.
Skriv inn følgende kommando for å lage den andre inkrementelle sikkerhetskopien. Erstatt variabler i kommandoen tilsvarende.
sudo innobackupex --user=xbuser --password=xbpasswd --incremental --incremental-basedir=/dbbackup/inc/2015-05-22_05-48-12 /dbbackup/inc/
Ved suksess vil du se "innobackupex: fullført OK!" melding igjen. Sjekk /dbbackup/inc/mappen igjen for å se sikkerhetskopifilene.
Trinn 8: Forbered sikkerhetskopifiler for gjenoppretting av databasen
Alle sikkerhetskopieringsfilene til databasen må forberedes før de kan brukes til å gjenopprette databasen.
Merk : Før du utfører forberedelses- og gjenopprettingsprosedyrene, bør du beholde en kopi av hele sikkerhetskopikatalogen (for eksempel /dbbackup/) på et annet sted i tilfelle skade på sikkerhetskopieringen av filene er forårsaket ved en feil.
I hver sikkerhetskopikatalog er det en fil med navn xtrabackup_checkpointssom inneholder sikkerhetskopitypen og sekvensnumrene for begynnelse og sluttlogg ( from_lsnog to_lsn). Du kan bruke disse tallene for å tydeliggjøre strategien for databasegjenoppretting. Se på eksemplene nedenfor.
I xtrabackup_checkpointsfilen til den første fullstendige sikkerhetskopien har jeg:
backup_type = full-backuped
from_lsn = 0
to_lsn = 2932478
I xtrabackup_checkpointsfilen til den første inkrementelle sikkerhetskopien har jeg:
backup_type =incremental
from_lsn = 2932478
to_lsn = 2970177
I xtrabackup_checkpointsfilen til den andre inkrementelle sikkerhetskopien har jeg:
backup_type = incremental
from_lsn = 2970177
to_lsn = 3004672
Kort fortalt bør du takle hver sikkerhetskopi med økende rekkefølge på lsn. Hvis lsn-sekvensen er ufullstendig eller uorden, kan du miste data.
Merk : Følgende kommandoer involverer tre kataloger, erstatt dem med dine egne.
For å gjenopprette databasen til tilstanden til den første fullstendige sikkerhetskopien, må du forberede sikkerhetskopifilene med følgende kommando:
sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54
For å gjenopprette databasen til tilstanden til den første inkrementelle sikkerhetskopieringen, må du klargjøre sikkerhetskopifilene med følgende kommandoer:
sudo innobackupex --apply-log --redo-only /dbbackup/full/2015-05-22_05-45-54
sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54 --incremental-dir=/dbbackup/inc/2015-05-22_05-48-12
sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54
For å gjenopprette databasen til tilstanden til den andre inkrementelle sikkerhetskopien, må du klargjøre sikkerhetskopifilene med følgende kommandoer:
sudo innobackupex --apply-log --redo-only /dbbackup/full/2015-05-22_05-45-54
sudo innobackupex --apply-log --redo-only /dbbackup/full/2015-05-22_05-45-54 --incremental-dir=/dbbackup/inc/2015-05-22_05-48-12
sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54 --incremental-dir=/dbbackup/inc/2015-05-22_05-51-32
sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54
Merknader :
For inkrementelle sikkerhetskopier bør du bruke --redo-onlyalternativet på alle unntatt den siste inkrementelle sikkerhetskopien. Likevel, bruk av dette alternativet på den siste inkrementelle sikkerhetskopieringen er fortsatt ufarlig for konsistensen til dataene dine - det vil bare føre til en viss forsinkelse på grunn av tilbakerullingen av databasen.
Den siste kommandoen i hvert inkrementelle scenario er valgfri, men anbefalt, fordi den vil fremskynde gjenopprettingen.
Etter klargjøring vil endringene som er registrert i de inkrementelle sikkerhetskopieringsfilene legges til de forberedte fullstendige backupfilene, så du bør alltid bruke de forberedte full backupfilene for å gjenopprette databasen, uansett om du velger en full backup eller en inkrementell backup.
Trinn 9: Gjenopprett databasen
Før du kan gjenopprette databasen, må du stoppe databasetjenesten.
sudo service mysqld stop
Du må også tømme databasekatalogen. Du kan flytte de gjeldende databasefilene til et annet sted for sikkerhets skyld.
sudo mkdir /currentdb
sudo mv /var/lib/mysql/* /currentdb
Gjenopprett databasen med de forberedte "full backup"-filene.
sudo innobackupex --copy-back /dbbackup/full/2015-05-22_05-45-54
Fordi gjenopprettingsprosedyren vil endre eieren av databasekatalogen, må du endre den tilbake til for mysql:mysqlå gjøre den operativ.
sudo chown -R mysql:mysql /var/lib/mysql
Start databasetjenesten på nytt.
sudo service mysqld start
Det er det. På dette tidspunktet kan du besøke WordPress-nettstedet ditt for å bekrefte at gjenopprettingsprosessen var vellykket.