Difference between revisions of "MySQL dump til backup"

From HoerupWiki
Jump to: navigation, search
(MySQL dump)
(Forberedelse)
 
(3 intermediate revisions by the same user not shown)
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.
  
 +
Da det samtidig skal køres fra cron midt om natten, har jeg oprettet en '''backup''' bruger fra '''localhost''' i MySQL med læse adgang til databasen. Ellers vil scriptet bare stoppe.
 +
 +
==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
Line 19: Line 22:
 
  done
 
  done
  
Den trækker en liste over alle tabellerne i '''database_navn''' og dumper som seperate tabeller, de kan evt. pipes til gzip :
+
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
 
  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.
 +
 +
Nu mappen klar til [[Versions backup med rsync#Backup_script]]

Latest revision as of 16:50, 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.

Da det samtidig skal køres fra cron midt om natten, har jeg oprettet en backup bruger fra localhost i MySQL med læse adgang til databasen. Ellers vil scriptet bare stoppe.

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.

Nu mappen klar til Versions backup med rsync#Backup_script