- Audio (2)
- Codes Scratches (4)
- Elektronika (23)
- Inteligentny dom (1)
- IT (9)
- Mikrokontrolery / Arduino (6)
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.