Difference between revisions of "MySQL dump til backup"

From HoerupWiki
Jump to: navigation, search
(Created page with "''- en del af Tommys Backup Projekt'' ==MySQL dump== Det er i sig selv ikke svært at benytte '''mysqldump''', det er en simpel kommando: mysqldump -u root -p database > da...")
 
(MySQL dump)
Line 1: Line 1:
 
''- en del af [[Tommys Backup Projekt]]''
 
''- en del af [[Tommys Backup Projekt]]''
  
==MySQL dump==
+
==Indledning==
 
Det er i sig selv ikke svært at benytte '''mysqldump''', det er en simpel kommando:
 
Det er i sig selv ikke svært at benytte '''mysqldump''', det er en simpel kommando:
 
  mysqldump -u root -p database > database.sql
 
  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.
 +
 +
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, de kan evt. pipes til gzip :
 +
...
 +
mysqldump -u backup database_navn $TABLE | gzip > $BACKUP_DIR/$TABLE.sql.gz
 +
...

Revision as of 16:44, 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.

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, de kan evt. pipes til gzip :

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