Difference between revisions of "MySQL dump til backup"

From HoerupWiki
Jump to: navigation, search
(Forberedelse)
(Forberedelse)
Line 10: Line 10:
 
Før vi begynder skal vi bestemme hvor vi vil smide backuppen, i det her eksempel bruger jeg '''/root/backup/database_navn'''. Det er vigtigt at mysql-deamon har skriverettigheder til denne, så hvis denne ikke køres som root (fy!), så smid en chown eller chmod efter behov.
 
Før vi begynder skal vi bestemme hvor vi vil smide backuppen, i det her eksempel bruger jeg '''/root/backup/database_navn'''. Det er vigtigt at mysql-deamon har skriverettigheder til denne, så hvis denne ikke køres som root (fy!), så smid en chown eller chmod efter behov.
  
 +
==MySQL Dump script==
 
Jeg har lavet følgende script:
 
Jeg har lavet følgende script:
 
  #!/bin/bash
 
  #!/bin/bash
 
  BACKUP_DIR=/root/backup/database_navn
 
  BACKUP_DIR=/root/backup/database_navn
 
+
 
  for TABLE in $(mysql -B -s -u database_navn -e 'use $DATABASE; show tables;')
 
  for TABLE in $(mysql -B -s -u database_navn -e 'use $DATABASE; show tables;')
 
  do
 
  do

Revision as of 17:47, 21 February 2013

- en del af Tommys Backup Projekt

Indledning

Det er i sig selv ikke svært at benytte mysqldump, det er en simpel kommando:

mysqldump -u root -p database > database.sql

Det fungere også fint som backup for de fleste, men da jeg i mit projekt vil lave versions-backup, hvor jeg kun gemmer de filer der har ændret sig, er det upraktisk at have hele databassen i een fil, hvis der er store tabeller der sjældent afviger.

Forberedelse

Før vi begynder skal vi bestemme hvor vi vil smide backuppen, i det her eksempel bruger jeg /root/backup/database_navn. Det er vigtigt at mysql-deamon har skriverettigheder til denne, så hvis denne ikke køres som root (fy!), så smid en chown eller chmod efter behov.

MySQL Dump script

Jeg har lavet følgende script:

#!/bin/bash
BACKUP_DIR=/root/backup/database_navn

for TABLE in $(mysql -B -s -u database_navn -e 'use $DATABASE; show tables;')
do
 mysqldump -u backup database_navn $TABLE > $BACKUP_DIR/$TABLE.sql
done

Den trækker en liste over alle tabellerne i database_navn og dumper som seperate tabeller.

Det kan evt. pipes til gzip :

...
mysqldump -u backup database_navn $TABLE | gzip > $BACKUP_DIR/$TABLE.sql.gz
...

Det vil dog unægtelig medføre et meget højere cpu-load, så gør det ikke i prime-time.