pg_dumpall i mysqldump – zrzut/backup wszystkich baz danych do pojedynczych plików

Dzisiaj na szybko moje rozwiązanie problemu backupowania/zrzucania wszystkich dostępnych baz danych mysql i postgresql do pojedynczych plików. Zrzut całości do jednego wielkiego pliku nie stanowi problemu i ogranicza się do odpowiedniego użycia jednej z podanych w tytule komend. Problem pojawia się natomiast wtedy, gdy chcemy coś z takiego pliku odzyskać – jest to niewygodne. Dlatego lepiej od razu zrzucić każdą bazę do oddzielnego pliku. Poniżej mój skrypt, który służy do tego celu. Nie jest on najlepiej napisany ani nie jest najbezpieczniejszy, jednak działa i spełnia swoje zadanie. 😉


#!/bin/bash

echo "PostgreSQL"
export PGPASSWORD="postgre password here"
DBLIST=`psql -U postgres -d postgres -q -t -c 'SELECT datname from pg_database'`
for d in $DBLIST
do
  echo "Dumping $d";
  pg_dump -U postgres $d > /path/to/dump/directory/$d.postgres.sql
done

echo "MySQL backup"
mysql -u root -p'mysql root password' -e "show databases" \
	| grep -Ev 'Database|information_schema' \
	| while read dbname;
do
  echo "Dumping $dbname"
  mysqldump -u root -p'mysql root password' $dbname > /path/to/dump/directory/$dbname.mysql.sql
done

W powyższym kodzie należy ustawić do zmiennej PGPASSWORD hasło dla użytkownika ‘postgres’, ustawić odpowiednie hasło dla bazy mysql (_password_) oraz zmienić ścieżki na te, które są adekwatne w waszej sytuacji.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *