Przenosiny postgresql na inną partycję w Fedorze
08 marca 2010 16:15:10
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
bash
baza danych
fedora
linux
postgresql
selinux

4 komentarze
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
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! :)
wow pr0 m4st4h
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