northwest 0 Zgłoś post Napisano Marzec 26, 2009 Witam serdecznie, PostgreSQLWie ktos może jak zrobić jakiś "automat" który będzie każdego dnia o godzinie 23.00 robił kopię bazy danych do pliku (najlepiej w formacie : 2009.01.22.sql)? Jakby się to dało jeszcze spakować, to już wogóle byłoby super... Northwest Udostępnij ten post Link to postu Udostępnij na innych stronach
www.follownet.pl 8 Zgłoś post Napisano Marzec 27, 2009 Do backupowania baz PostgreSQL służy pg_dump. Dołóż do tego lekki skrypt w bashu lub perlu, który w pętli będzie backupował wszystkie bazy. Udostępnij ten post Link to postu Udostępnij na innych stronach
lukaschemp 27 Zgłoś post Napisano Marzec 27, 2009 Jako root: mkdir -p /backup/psql chown root.postgres /backup/psql chmod 775 /backup/psql Skrypt: #!/bin/bash DIR=/backup/psql DATA=`date '+%d-%m-%Y'` [ ! $DIR ] && mkdir -p $DIR || : LIST=$(psql -l | awk '{ print $1}' | grep -vE '^-|^List|^Name|template[0|1]') for d in $LIST do pg_dump $d | gzip -c > $DIR/$d.$DATA.gz done Skrypt dopisz do cron'a user'a postgres. Format zapisu: nazwabazy.27.03.2009.gz Udostępnij ten post Link to postu Udostępnij na innych stronach
northwest 0 Zgłoś post Napisano Marzec 27, 2009 tak powinien wyglądać ten cron tab: crontab -u root -e 00 23 * * * /home/pgbackup.sh >/dev/null 2>&1 Udostępnij ten post Link to postu Udostępnij na innych stronach
www.follownet.pl 8 Zgłoś post Napisano Marzec 28, 2009 Do pg_dump proponuję dodać opcję pg_dump -F t wówczas jeśli jest dużo insertów odzyskiwanie backupu trwa niewspółmiernie krócej niż z tradycyjnej postaci pg_dumpa, gdzie każdy insert jest wykonywany w osobnej transakcji. Udostępnij ten post Link to postu Udostępnij na innych stronach
lukaschemp 27 Zgłoś post Napisano Marzec 28, 2009 Dopisz do usera postgres crontab -u postgres -e Udostępnij ten post Link to postu Udostępnij na innych stronach
northwest 0 Zgłoś post Napisano Marzec 28, 2009 niestety nie zadziałało... miałem to ustawione na 23 i kopi bazy nie zrobiło Udostępnij ten post Link to postu Udostępnij na innych stronach
www.follownet.pl 8 Zgłoś post Napisano Marzec 29, 2009 A cron się w ogóle odpalił ? Będąc zalogoanym na usera postgres wpisz echo $PATH następnie zwróconą linię wrzuć na początek skryptu zaraz po #!/bin/bash export PATH=tu podstaw to co zwrocil echo $PATH Upewnił się, że postgres pracuje na prawach usera postgres. Udostępnij ten post Link to postu Udostępnij na innych stronach
lukaschemp 27 Zgłoś post Napisano Marzec 29, 2009 northwest napisał: niestety nie zadziałało... miałem to ustawione na 23 i kopi bazy nie zrobiło Skrypt działa, bo testowałem gp przed podaniem. Coś zrobiłeś źle. Udostępnij ten post Link to postu Udostępnij na innych stronach
northwest 0 Zgłoś post Napisano Marzec 29, 2009 qurcze, mam taki skrypt (home/pgbackup.sh): #!/bin/bash DIR=/backup/psql DATA=`date '+%d-%m-%Y'` [ ! $DIR ] && mkdir -p $DIR || : LIST=$(psql -F -t -l | awk '{ print $1}' | grep -vE '^-|^List|^Name|template[0|1]') for d in $LIST do pg_dump $d | gzip -c > $DIR/$d.$DATA.gz done crontab -u postgres -e zapisałem: 00 23 * * * /home/pgbackup.sh >/dev/null 2>&1 to nie zadziałało Udostępnij ten post Link to postu Udostępnij na innych stronach
lukaschemp 27 Zgłoś post Napisano Marzec 29, 2009 A nadałeś skryptowi odpowiedni chmod? chmod +x /home/pgbackup.sh Zrób su postgres i spróbuj odpalić ten skrypt z ręki, user postgres powinien mieć prawa do wykonania tego skryptu. Udostępnij ten post Link to postu Udostępnij na innych stronach
northwest 0 Zgłoś post Napisano Marzec 29, 2009 ja:~# chmod +x /home/pgbackup.sh ja:~# /home/pgbackup.sh psql: KATASTROFALNY: Ident authentication failed for user "root" To było z roota. hmmm... a jak to uruchomić jako postgres? Udostępnij ten post Link to postu Udostępnij na innych stronach
m.p 0 Zgłoś post Napisano Marzec 29, 2009 su postgres /home/pgbackup.sh Udostępnij ten post Link to postu Udostępnij na innych stronach
www.follownet.pl 8 Zgłoś post Napisano Marzec 29, 2009 northwest napisał: hmmm... a jak to uruchomić jako postgres? psql -U postgres Udostępnij ten post Link to postu Udostępnij na innych stronach
northwest 0 Zgłoś post Napisano Marzec 29, 2009 postgres@spycar:/root$ /home/pgbackup.sh could not change directory to "/root" could not change directory to "/root" could not change directory to "/root" could not change directory to "/root" could not change directory to "/root" could not change directory to "/root" pg_dump: [archiver (db)] connection to database "(6" failed: KATASTROFALNY: baza "(6" nie istnieje Udostępnij ten post Link to postu Udostępnij na innych stronach
kafi 2425 Zgłoś post Napisano Marzec 29, 2009 Na początek wykonaj to, co @lukaschemp ci podał: mkdir -p /backup/psql chown root.postgres /backup/psql chmod 775 /backup/psql Następnie przejdź do tego katalogu cd /backup/psql I z tego katalogu uruchom skrypt. Udostępnij ten post Link to postu Udostępnij na innych stronach
lukaschemp 27 Zgłoś post Napisano Marzec 30, 2009 giasek napisał: psql -U postgres Odpalając skrypt jako user postgres w skrypcie nie trzeba podawać loginu ani hasła dlatego podałem taką opcję. @northwest - gdybyś wykonał polecenia tak jak ja Ci podałem, bez zmiany ścieżek to wszystko by działało. Wrzuć sobie skrypt do katalogu domowego postgres'a (grep postgres /etc/passwd) lub nadaj mu odpowiednie prawa. Udostępnij ten post Link to postu Udostępnij na innych stronach
northwest 0 Zgłoś post Napisano Marzec 30, 2009 Mam teraz taki rezultat: north:~# mkdir -p /backup/psql north:~# chown root.postgres /backup/psql north:~# chmod 775 /backup/psql north:~# cd /backup/psql north:/backup/psql# su postgres postgres@north:/backup/psql$ /home/pgbackup.sh pg_dump: [archiver (db)] connection to database "(6" failed: KATASTROFALNY: baza "(6" nie istnieje postgres@north:/back Fiercio napisał: Na początek wykonaj to, co @lukaschemp ci podał: mkdir -p /backup/psql chown root.postgres /backup/psql chmod 775 /backup/psql Następnie przejdź do tego katalogu cd /backup/psql I z tego katalogu uruchom skrypt. Udostępnij ten post Link to postu Udostępnij na innych stronach
northwest 0 Zgłoś post Napisano Kwiecień 1, 2009 dlaczego On ciągle twierdzi że baza nie istnieje - skoro istnieje?? :/ Udostępnij ten post Link to postu Udostępnij na innych stronach