Hvordan gjøre Smertefri MySQL Server sikkerhetskopier med AutoMySQLBackup


AutoMySQLBackup er en smart skript som tar smerten ut av å sette opp automatiserte inkrementelle daglige, ukentlige og månedlige sikkerhetskopier av MySQL-databaser. Dens eneste avhengighet er mysqldumpcommand, som kommer med mysql-klienten. AutoMySQLBackup dumper databasene på uansett intervaller du ønsker, og ruller dem opp i komprimerte tarballs. Deretter kan du kopiere tarballs til andre medier, og kryptere dem hvis du ønsker

Får AutoMySQLBackup

Last ned AutoMySQLBackup fra Sourceforge, og deretter pakke ut tarball.

 $ tjære zxvf automysqlbackup-v3.0_rc6.tar.gz 

Nå bør du ha automysqlbackup-v3.0_rc6 katalog med seks filer i det:. automysqlbackup, automysqlbackup.conf, changelog, install.sh, lisens, og README

Deretter lese README fordi inneholder installeringsinstruksjoner og annen nyttig informasjon. Det kan ikke fortelle deg alt du trenger å vite, så forhåpentligvis denne artikkelen vil fylle hullene. Så neste steg er å kjøre install.sh, og dette krever root privilegier. Hvis installasjonsskript det mislykkes, kan du enkelt installere AutoMySQLBackup manuelt ved å følge disse trinnene. Disse kjøres fra katalogen der du pakket ut tarball:

 # chown root: root automysqlbackup # chmod 0700 automysqlbackup # cp automysqlbackup /usr /local /bin /# mkdir /etc /automysqlbackup # cp automysqlbackup.conf /etc /automysqlbackup /automysqlbackup.conf # cd /etc /automysqlbackup # cp automysqlbackup.conf servername.conf 

Erstatt "servername.conf" med hva du ønsker å navngi konfigurasjonsfil. Da vil du ha en kopi av originalen for referanse, og arbeids konfigurasjonsfil.

Konfigurasjonsvalg

Konfigurasjonsfilen er stort og godt kommentert, og du må endre bare et fåtall ting å begynne å lage og teste dine sikkerhetskopier. Først må du velge en MySQL bruker som har et minimum, SELECT privilegier, og deretter gå inn som bruker og brukers passord:

 # Brukernavn for å få tilgang til MySQL server f.eks dbuserCONFIG_mysql_dump_username = 'db-bruker' # passord for å få tilgang til MySQL server f.eks passwordCONFIG_mysql_dump_password = 'sekkritpassword' 

Det er en komplikasjon hvis du bruker Parallels Plesk 10.2 eller nyere på serveren din, og du vil bli godkjent av administrator. Det er bedre å bruke en annen MySQL bruker, som en du har laget med minimale rettigheter bare for AutoMySQLBackup, men hvis det ikke er mulig så du ikke kan bruke ren tekst admin passord. Fra og med versjon 10.2 Plesk admin passord er kryptert i /etc/psa/.psa.shadow. Du kan dumpe dette passordet i klartekst med denne kommandoen hvis du trenger å gjenopprette det:

 # /usr /local /PSA /bin /admin --show-passord 

Men du kan ikke bruke klartekst passord i AutoMySQLBackup konfigurasjon. I stedet bruker den krypterte passord

 # passord for å få tilgang til MySQL server f.eks passwordCONFIG_mysql_dump_password = `cat /etc/psa/.psa.shadow`

Your server er localhost, og du trenger for å lage eller velge en katalog for å lagre sikkerhetskopier i:

 # Host navn (eller IP-adresse ) av MySQL server f.eks localhostCONFIG_mysql_dump_host = 'localhost' # Backup katalogen plassering f.eks /backupsCONFIG_backup_dir = '/home /mysqlbackups' 

Du har mye kontroll over hvilke databaser som er sikkerhetskopiert. Hvis du har mange av dem, så forlater CONFIG_db_names = () tom kopierer alle av dem. Så hvis det er noen du ønsker å ekskludere, bare lage en ekskluderingslisten. En av mine servere vertene over 150 virtuelle Web-vertene, og hver og en har sin egen MySQL database, så dette er en stor tidsbesparende for meg:

 # Liste over databaser for daglig /ukentlig Backup f.eks ('DB1' 'DB2' 'DB3' ...) # satt til (), dvs. tom, hvis du ønsker å ta backup av alle databasesCONFIG_db_names = () # Liste over databaser for månedlige sikkerhetskopier. # Satt til (), dvs. tom, Hvis du ønsker å ta backup av alle databasesCONFIG_db_month_names = () # Liste over DBNAMES å EXLUCDE hvis DBNAMES er tom, dvs. () .CONFIG_db_exclude = ('information_schema' 'test_db' 'demo_db') 

Rotasjon innstillingene er grei. Dette eksempelet utfører månedlige sikkerhetskopier på den tredje i hver måned, ukentlige sikkerhetskopier på lørdager, blir daglige sikkerhetskopier holdt i 7 dager, blir ukentlige sikkerhetskopier holdt i 14 dager, og månedlige sikkerhetskopier i 30 dager.

 # Hvilken dag gjøre du ønsker månedlige sikkerhetskopier? (01 til 31) # Hvis valgt dag er større enn den siste dagen i måneden, vil det bli gjort # på den siste dagen i måneden. # Sett til 0 for å deaktivere månedlig backups.CONFIG_do_monthly = "03" # Hvilken dag vil du ha ukentlige sikkerhetskopier? (1 til 7, hvor 1 er mandag) # Sett til 0 for å deaktivere ukentlig backups.CONFIG_do_weekly = "6" # Set rotasjon av daglige sikkerhetskopier. VERDI * 24hours # Hvis du ønsker å beholde bare dagens backup, kan du velge en, det vil si alt som er eldre enn 24 timer vil være removed.CONFIG_rotation_daily = 7 # Set rotasjon for ukentlige sikkerhetskopier. VERDI * 24hoursCONFIG_rotation_weekly = 14 # Set rotasjon for månedlige sikkerhetskopier. VERDI * 24hoursCONFIG_rotation_monthly = 30 

Det er to ting som kontrollerer varslinger. Jeg liker å se loggfiler etter hvert løp, så dette eksempelet viser:

 # Hva vil du bli sendt til deg # - log:? Bare sende loggfilen # - filer: sende loggfilen og sql filer som vedlegg (se docs) # - stdout: vil bare utgang loggen til skjermen hvis kjøres manuelt # - stille. Bare sende logger hvis det oppstår en feil til MAILADDR.CONFIG_mailcontent = 'log' # E-post adresse til å sende mail til? (Denne e-postadressen er beskyttet mot programmer som samler. Du må aktivere Javascript for å kunne se adressen) CONFIG_mail_address = 'Denne e-postadressen er beskyttet mot programmer som samler. Du må aktivere Javascript for å kunne se adressen '
First Run

For de første par innhopp, mens du får kjent med AutoMySQLBackup, anbefaler jeg å sikkerhetskopiere bare ett eller to små databaser. Det er trygt og kan ikke skade dine databaser, men de større databasene jo lenger tid det tar å prøve forskjellige konfigurasjons tweaks. Kjøre det fra kommandolinjen slik:

 # automysqlbackup /etc/automysqlbackup/servername.conf

Then du kan sjekke backup katalog for å se om det fungerte. Det skal ha skapt alle nødvendige kataloger:

 # ls /home /mysqlbackups /daglig /fullschema /nyeste /månedlig /status /tmp /ukentlig /

Og gjort oppføringer som dette, for hver database du sikkerhets opp, i den daglige /katalogen:

 -rw-r - r-- 1 root root 66428 25 oktober 00:12 daily_db_name_2012-10-22_00h05m_Monday.sql.gz 

AutoMySQLBackup genererer en detaljert loggfil , så det blir ingen hemmeligheter om hva som skjedde hvis noe går galt

README tilbyr en enkel backup script:.!

 # /bin /sh /usr /local /bin /automysqlbackup /etc /automysqlbackup /myserver.confchown root.root /var /backup /db * -Rfind /var /backup /db * -type f-exec chmod 400 {} \\; finne /var /backup /db * -type d-exec chmod 700 {} \\; 

Du må endre myserver.conf til konfigurasjonsfilen navn, og /var /backup /til din egen backup-katalogen. Dette skriptet sørger for at backup filer eieren er rot, og at de er skrivebeskyttet, som er enkle forholdsregler mot tilfeldige endringer. Ikke glem å gjøre det kjørbart.

Planlagt sikkerhetskopiering

Gode gamle cron er fortsatt champ for planlegging av sikkerhetskopiering. Dette eksemplet kjører backup script hver morgen kl 00:05:

 5 0 * * * /usr /local /bin /backupscript 
backuper

Nå som du har disse fine database sikkerhetskopier, hva gjør du med dem? Jeg bruker Horcrux, som vi har lært om i forrige uke, for å kryptere og kopiere dem til en ekstern backup. Så alt jeg har å gjøre for å legge til min database backup til min Horcrux backup er å legge til denne linjen til min Horcrux konfigurasjon:

 + /home /mysqlbackups /

Fordi disse er komprimerte tarballs, kan du administrere dem som alle vanlige filer og kopiere dem til hva backup media du vil.

Hva med å gjenopprette fra backup? AutoMySQLBackup tilbyr ingen spesialverktøy for å gjøre det enklere, så du må gjøre det manuelt ved å først pakke ut backup-filen, og deretter bruke mysql-klienten til å gjenopprette database eller databaser. README og fora er nyttig, men hva som vil hjelpe mest er å vite hvordan å administrere MySQL-databaser. Anmeldelser