Przenosiny postgresql na inną partycję w Fedorze

Jako, że ilość miejsca przeznaczonego na / okazało się niewystarczające dla potrzeb bazy danych, zmuszony byłem dokonać małej przeprowadzki na inną, o wiele większą partycję. Od razu zaznaczam, że z bazy korzystam tylko poprzez psql bądź pgadmina, więc ciężko jest mi powiedzieć czy opis ten jest wystarczający w przypadku innych zastosowań (choćby php). Mam nadzieje, że komuś się to przyda.

Na początek oczywiście przechodzimy na konto administratora:

su

Tworzymy nowy katalog dla naszej bazy (ja przeniosłem do /home/db/post) oraz ustawiamy użytkownika postgres jako właściciela:

mkdir -p /home/db/post
chown postgres:postgres /home/db/post

Na czas przenosin wyłączamy bazę:

service postgresql stop

Następnie edytujemy plik /etc/rc.d/init.d/postgresql (przy pomocy dowolnie wybranego edytora: vim, vi, mc, kate itd - kto co lubi):

vi /etc/rc.d/init.d/postgresql

Szukamy poniższego fragmentu i w PGDATA należy wpiujemy nową ścieżkę:

# Set defaults for configuration variables
PGENGINE=/usr/bin
PGPORT=5432
PGDATA=/home/db/post
PGLOG=/var/lib/pgsql/pgstartup.log

Po zapisaniu pliku konfiguracyjnego przenosimy pliki bazy:

mv /var/lib/psql/data/* /home/db/post"

Następnie uruchamiamy ponownie postgresql:

service postgresql start

Na tym etapie mogą pojawić się problemy. W moim przypadku zaprotestował znienawidzony przeze mnie SELinux, któremu nie spodobała się nowa lokalizacja:

SELinux is preventing the postmaster from using potentially mislabeled files (postgresql.conf).

Co prawda zaproponował rozwiązanie problemu:

If you want postmaster to access this files, you need to relabel them using restorecon -v 'postgresql.conf'. You might want to relabel the entire directory using restorecon -R -v ''.

Jednak w praktyce okazało się, że nic z tego i trzeba było poszukać innego rozwiązania. Na szczęście udało się znaleźć działające rozwiązanie. Poniższe komendy powinny pomóc:

chcon -R -t postgresql_db_t /home/db/post
semanage fcontext -a -t postgresql_db_t "/home/db/post(/.*)?" 

Jeśli nadal postgresql nie chce wystartować, należy nadać nowemu katalogowi następujące uprawnienia: drwx------. Możemy tego dokonać w jakże prosty sposób:

chmod 700 /home/db/post

W moim przypadku baza ożyła bez problemu, mam nadzieję, że i wam się uda. Przykład z zastosowaniem Fedory 11, ale z innymi numerkami powinno być podobnie. Oczywiście należy pamiętać, że próbujecie tego na własną odpowiedzialność.

Jeśli chcemy sprawdzić efekty pracy:

ps aux | grep post

Jeśli wszytsko jest w porządku powinniśmy zobaczyć następujące linijki:

postgres  1945  0.0  0.1 176248  5036 ?        S    09:03   0:01 /usr/bin/postmaster -p 5432 -D /home/db/post
postgres  1947  0.0  0.0 146580   908 ?        Ss   09:03   0:00 postgres: logger process                    
postgres  1949  0.0  0.0 176248  1320 ?        Ss   09:03   0:03 postgres: writer process                    
postgres  1950  0.0  0.0 176248  1116 ?        Ss   09:03   0:03 postgres: wal writer process                
postgres  1951  0.0  0.0 176380  1456 ?        Ss   09:03   0:00 postgres: autovacuum launcher process       
postgres  1952  0.0  0.0 146720  1132 ?        Ss   09:03   0:01 postgres: stats collector process           

aard

4 komentarze Trackback RSS komentarzyWykop ten wpis

bash fedora linux postgresql selinux Techblog

4 komentarze

  • #1#1 divi | 08 marca 2010, 17:51:12

    A może byś tak chociaż spróbował zrozumieć SELinux'a?

    Polecam lekture:
    1) http://www.selinuxbyexample.com/
    2) http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/selinux-guide/
    3) http://www.redhat.com/docs/en-US/RedHatEnterpriseLinux/5.4/html/DeploymentGuide/selg-overview.html

  • #2#2 Aard | 08 marca 2010, 18:07:10

    Może faktycznie nie doceniam jego możliwości, czym pewnie ranie jego uczucia. Następnym razem jeśli mi wejdzie w drogę i będę miał czas może podejdę do niego bardziej profesjonalnie.

    Czy poza uwagą odnośnie mojej ignorancji, możesz coś powiedzieć na temat wyżej wymienionego sposobu? Rady specjalistów zawsze są mile widziane! :)

  • #3#3 t | 08 marca 2010, 22:38:04

    wow pr0 m4st4h

  • #4#4 krzyszsz | 08 marca 2010, 23:30:13

    Tutaj jest trochę pryszczatych ekspertów (chodzi o komentarze). Wpisu nie potrafię ocenić: bawię się głównie oracle, ale planuję rzucić okiem na pg, wtedy może wpis się przyda.

Dodaj komentarz