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 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 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 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 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