Difference between revisions of "MySQL dump til backup"
(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...") |
|||
| Line 1: | Line 1: | ||
''- en del af [[Tommys Backup Projekt]]'' | ''- en del af [[Tommys Backup Projekt]]'' | ||
| − | == | + | ==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 17: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 ...