Serwery baz danych

Transkrypt

Serwery baz danych
Serwery baz danych
Laboratorium 1. Instalacja i konfiguracja.
Środowiskiem wykonawczym serwera baz danych Postgresql jest wirtualna maszyna systemu
operacyjnego Linux Debian, obsługiwana przez aplikację Oracle VirtualBox.
Ćwiczenie 1. Dodanie i uruchomienie instancji wirtualnej maszyny.
1. Uruchom aplikację VirtualBox.
2. Następnie wybierz New, wpisz nazwę wirtualnej maszyny SBD, wybierz typ Linux oraz
wersję Debian (32 bit).
3. Pamięć operacyjna przydzielona wirtualnej maszynie powinna nie być mniejsza niż
384 MB (jak sprawdzić ilość wolnej pamięci operacyjnej w systemie Microsoft
Windows?).
4. Wybierz opcję „Use an existing virtual hard drive file” i wskaż plik wirtualnej
maszyny „sbd2015-pgsql-9.4.1-src.vdi”. Jeżeli nie posiadasz tego pliku, znajdź na
dysku twardym plik „sbd2015-pgsql-9.4.1-src.zip” i wypakuj jego zawartość na
lokalny dysk twardy (preferowana partycja d:).
5. Po kliknięciu przycisku Create, wirtualna maszyna powinna być widoczna w panelu po
prawej stronie.
6. Po kliknięciu prawym klawiszem z opcji wybierz Settings, następnie przejdź do sekcji
System i wyłącz stację dyskietek Floppy, następnie przejdź do sekcji Audio i odznacz
opcję Enable Audio.
7. Następnie przejdź do sekcji Network i zweryfikuj ustawienia z rysunkiem poniżej.
Opcje te dotyczą ustawień wirtualnej karty sieciowej, której poprawna konfiguracja jest
niezbędna do konfiguracji połączenia wirtualnej maszyny z siecią Internet.
8. Uruchom wirtualną maszynę klikając Start.
9. Ostatecznie dostępny powinien być ekran, analogiczny do tego poniżej.
Ćwiczenie 2: Logowanie do wirtualnej maszyny.
W instancji systemu operacyjnego Linux do dyspozycji są dwa konta:
 super użytkownika (root), określanego w systemie MS Windows jako Administrator,
 użytkownika (dbuser).
Aby zalogować się jako super użytkownik, wpisz po linii „debian login”: root i podaj hasło
sbd. Aby sprawdzić, kto jest aktualnie zalogowany w systemie, wykonaj polecenie who.
Więcej informacji uzyskasz wydając polecenie w, które dodatkowo wyświetli listę procesów
użytkowników. Jako parametr można podać nazwę konta użytkownika, np. w dbuser.
Co oznaczają poszczególne kolumny?
Ćwiczenie 3: Podstawowe komendy systemu Linux.
Aby sprawnie poruszać się w systemie Linux, konieczna jest znajomość podstawowych
komend. Poniższa lista to tylko zbiór wybranych poleceń niezbędnych z punktu widzenia
kolejnych ćwiczeń.
 free: pozwala sprawdzić dostępna pamięć operacyjną,
 ps: wyświetli listę aktualnie uruchomionych procesów,
 top: wyświetli listę aktualnie uruchomionych procesów w formie interakcyjnego
interfejsu (odpowiednik Menedżera zadań dostępnego w systemie Windows),
 su: zmiana zalogowanego użytkownika,
 ls: wyświetlenie zawartości bieżącego katalogu,
 mkdir: utwórz katalog
 cd: wejdź do katalogu o podanej nazwie przez użytkownika (np. cd /usr/local),
 rm -R: usunięcie katalogu o podanej nazwie przez użytkownika,
 pwd - określa aktualną ścieżkę,
 ping: wysyła pakiety ICMP ECHO_REQUEST do zdalnego (lub lokalnego) hosta,
 ifconfig: wyświetli listę dostępnych (aktywnych) interfejsów sieciowych,
 ifup: włącza wskazany interfejs sieciowy.
Aby uzyskać pomoc dotyczącego poszczególnego polecenia, należy dodać do niego parametr
help, np. ps --help.
Ćwiczenie 4: Konfiguracja karty sieciowej.
1. Zaloguj się, jako super użytkownik (root) na wirtualnej maszynie.
2. Sprawdź, czy masz dostęp do sieci Internet, wydając polecenie ping wp.pl. Jeżeli host
nie został odnaleziony (nie została rozwiązana jego nazwa sieciowa) to wykonaj
poniższe instrukcje.
3. Wyświetl listę wszystkich aktywnych i nieaktywnych interfejsów sieciowych
poleceniem ifconfig –a.
4. Odczytaj nazwę interfejsu sieciowego (czerwona ramka na rysunku powyżej). W tym
przypadku jest to eth5. Skrót pochodzi od nazwy technologii sieciowej (Ethernet).
5. W pliku /etc/network/interfaces należy zmienić nazwę interfejsu sieciowego na
odczytany. W tym posłużymy się edytorem tekstowym GNU nano. Wydaj polecenie
pico /etc/network/interfaces.
6. Po zmianach naciśnij kombinację klawiszy CTRL+O (Zapis) i zamknij aplikację
kombinacją CTRL+X (Wyjdź). Zwróć również uwagę, iż każda linia komentarza
poprzedzona jest znakiem #; każda taka linia jest ignorowana przez system.
7. Włącz interfejs sieciowy, który wskazałeś powyżej; w tym celu wykonaj polecenie ifup
ethx (gdzie x jest numerem interfejsu, np. 5).
8. Karta sieciowa powinna otrzymać dzierżawę konfiguracji sieciowej. Aby sprawdzić
bieżącą konfigurację interfejsu sieciowego wydaj polecenie: ifconfig ethx.
9. Sprawdź połączenie z siecią Internet, wydając polecenie ping wp.pl. Kombinacja
klawiszy CTRL+C zamknie program ping.
Aby wyłączyć wskazany interfejs sieciowy należy wykonać polecenie ifconfig ethx down lub
ifdow ethx, gdzie x jest numerem interfejsu.
Laboratorium 2. Instalacja serwera baz danych
Szczegółowa procedura instalacji serwera baz danych PostgreSQL jest dostępna tutaj. Pliki
źródłowe znajdują się w katalogu /src. Procedura została szczegółowo opisana poniżej.
1. Zaloguj się jako użytkownik dbuser.
2. Wyświetl zawartość katalogu /src, czyli wykonaj polecenie ls /src. Powinny tam być
dwa spakowane pliki (z rozszerzeniem *.bz2).
3. Wejdź do katalogu src, czyli wykonaj polecenie cd /src.
4. Rozpakuj pliki źródłowe serwera bazy danych, czyli wykonaj polecenie tar xf
postgresql-9.4.1.tar.bz2 (parametry xf oznaczają odpowiednio wypakuj (extract) z
pliku (file)).
5. Wyświetl ponownie zawartość katalogu /src, czyli wykonaj polecenie ls. Widoczny
powinien być katalog z plikami źródłowymi serwera (postgresql-9.4.1). Wejdź do tego
katalogu (cd postgresql-9.4.1) i sprawdź jego zawartość.
6. Przełącz się na konto super użytkownika, czyli wykonaj polecenie su root.
7. Dodaj repozytoria do repozytorium serwera (sources.list), czyli wykonaj polecenie
apt-get update.
8. Dokonaj aktualizacji, czyli wykonaj polecenie apt-get upgrade. Na pytanie aplikacji,
czy kontynuować wybierz Tak.
9. Zainstaluj obsługę języka Perl, czyli wykonaj polecenie apt-get install libperl-dev.
10. Zainstaluj biblioteki SSL (Secure Sockets Layer) na potrzeby szyfrowania i
uwierzytelniania komunikacji, czyli wykonaj polecenie apt-get install libssl-dev.
11. Przełącz się na użytkownika dbuser, czyli wykonaj polecenie su dbuser.
12. Plik konfiguracji plików źródłowych to ./configure; przed wykonaniem można
zobaczyć jego zawartość wykonując polecenie pico ./configure.
13. Przeprowadź konfigurację plików źródłowych serwera bazy danych, czyli wykonaj
polecenie ./configure --with-perl --with-openssl
14. Przełącz się na super użytkownika, czyli wykonaj polecenie su root.
15. Dokonaj ostatniej aktualizacji, czyli wykonaj polecenie apt-get install make.
16. Przełącz się na użytkownika dbuser, czyli wykonaj polecenie su dbuser.
17. Wykonaj kompilację plików źródłowy poleceniem make.
18. Wykonaj testy regresji serwera poleceniem make check; aby sprawdzić, co się dzieje w
systemie w trakcie testów regresji w innym terminalu (ALT+F3), uruchom polecenie
ps aux | grep postgres, za każdym razem, gdy wykonywane są testy każdej następnej
grupy.
19. Wejdź do katalogu test wykonując cd /src/postgres-9.4.1/src/test/regress;
kluczowe tutaj są dwa katalogi expected i results. Porównaj ich zawartości (możesz
użyć polecenia diff). Powinieneś zauważyć, że te katalogi nie są identyczne. Oznacza to
tylko tyle, że pewne testy wykluczają się (np. char.out i char_1.out są wykonywane w
zależności od ustawień lokalnych).
20. W tym kroku wykonamy instalację serwera; przełącz się na konto super użytkownika
(su root) i wykonaj polecenie make install.
21. Serwer został zainstalowany w katalogu /usr/local/pgsql; sprawdź jego zawartość
(poleceniem ls).
22. Utwórz tam katalog, gdzie będą przechowywane bazy danych; wykonaj polecenie
mkdir klaster.
23. Dla Naszej wygody utworzymy środowisko zmiennej PGDATA dla użytkowników
serwera baz danych. Na końcu pliku /etc/skel/.bashrc dodaj linijki
export PGDATA=/usr/local/pgsql/klaster
export PATH=$PATH:/usr/local/pgsql/bin
czyli wykonaj polecenie: pico /etc/skel/.bashrc
Dodatkowo, powyższą czynność wykonaj dla użytkownika dbuser, czyli wykonaj
polecenie pico /home/dbuser/.bashrc.
24. Teraz należy utworzyć konto dla użytkownika na którym zostanie uruchomiony serwer
baz danych i przyszłego właściciela zgromadzonych baz danych; w tym celu wykonaj
następujące polecenie useradd –s /bin/bash –m postgres (parametr -s wskazuje
zmianę domyślnej powłoki systemowej, zaś -m utworzy katalog domowy i skopiuje
pliki startowe pobierane z katalogu /etc/skel).
25. Uczyń użytkownika postgres właścicielem katalogu z zainstalowanym serwerem baz
danych, w tym celu wykonaj polecenie chown –R postgres /usr/local/pgsql
(parametr -R oznacza, iż wszystkie podkatalogi katalogu pgsql również zmienią
właściciela).
26. Przełącz się na konto super użytkownika, wykonaj polecenie su postgres.
27. Zainicjuj serwer bazy danych, w tym celu wykonaj polecenie initdb, znajdujące się w
katalogu /usr/local/pgsql/bin.
28. Ostatnim krokiem jest uruchomienie serwera baz danych, w tym celu wykonaj
polecenie pg_ctl -l klaster_log start (po parametrze -l wskazano nazwę pliku logów).
Poleceniem pg_ctl status można sprawdzić stan usługi bazy danych.
Ćwiczenie2. Uruchamianie, zatrzymywanie i restartowanie serwera baz danych.
Wszystkie przydatne programy związane z serwerem znajdują się w katalogu bin (znajduje
się w katalogu /usr/local/pgsql). Polecenia związane z działaniem usługi to:
 pg_ctl: narzędzie do uruchamiania| zatrzymywania| restartowania serwera,
 postgres: tryb uruchomienia serwera:

single-user: polecenie postgres lub postgres –single „nazwa bazy”,

multi-user: polecenie postmaster (blokuje terminal, zatrzymanie CTRL+C) lub
pg_ctl start (nie blokuje terminala, zatrzymanie pg_ctl stop; pomoc pg_ctl --help ).
1. Sprawdź stan usługi serwera bazy danych, czyli wykonaj polecenie pg_ctl status.
Zwróć uwagę na wartość identyfikatora procesu (PID).
2. Wykonaj restart serwera (wyłącznie do celów testów), czyli wykonaj polecenie pg_ctl
restart.
3. Czy identyfikatory procesu po restarcie serwera są identyczne? Wartość PID jest
zapisywana w pliku postmaster.pid. Znajdź lokalizację tego pliku w drzewie
katalogowym, czyli wykonaj polecenie find / -name ‘postmaster.pid’. Wyświetl
zawartość tego pliku poleceniem cat /usr/local/pgsql/mydb/postmaster.pid.
Znaczenie poszczególnych wartości przedstawia rysunek poniżej.
identyfikator procesu
ścieżkę katalogu klastra danych
znacznik czasu startu procesu
numer portu
ścieżkę katalogu socketu
nazwę hosta „nasłuchującego”
identyfikator segmentu współdzielonej pamięci
W pomocy serwera dostępnej tutaj, napisano tylko „the existence of this file in the data
directory is used to help pg_ctl determine if the server is currently running or not”. Jednak już
tutaj, można znaleźć szczegółowy opis zawartości pliku postmaster.id.
Ćwiczenie 3. Polecenia serwera baz danych.
Wszystkie przydatne programy związane z serwerem znajdują się w katalogu bin (znajduje
się w katalogu /usr/local/pgsql). Do najważniejszych poleceń należą:
 initdb: inicjalizacja klastra bazy,
 createdb: tworzenie bazy danych,
 dropdb: usuwanie bazy danych,
 createuser: tworzenie użytkownika bazy,
 dropuser: usuwanie użytkownika bazy danych,
 postmaster: serwer bazy danych,
 psql: klient bazy danych,
Jedną z najważniejszych baz danych jest template1, czyli baza-model (wzorzec) dla tworzenia
innych baz danych.
 aby dodać bazę danych o nazwie db1, wykonaj polecenie createdb db1.
Obecnie w zasobach serwera baz danych istnieje tylko jeden użytkownik postgres. Należy
pamiętać, że użytkownik bazy danych to nie to samo co użytkownik systemu, np. użytkownik
dbuser nie jest użytkownikiem bazy danych.
 sprawdź składnię polecenia createuser, czyli wykonaj polecenie createuser --help;
 aby dodać użytkownika o nazwie dbuser o uprawnieniach: tworzenia nowych baz
danych, nie będzie super użytkownikiem i bez możliwości tworzenia nowych ról,
wykonaj polecenie createuser -S -d –R dbuser.
 aby zalogować się do bazy danych db1, wykonaj polecenie psql db1; aby wyjść z bazy
danych wykonaj polecenie \q.
Jako użytkownik dbuser spróbuj wykonać następujące czynności:
 wykonaj polecenie createdb; czy polecenie zostało wykonane poprawnie? jeżeli tak, to
jaka jest nazwa nowo utworzonej bazy danych?
 aby wyświetlić zbiór utrzymywanych baz danych, wykonaj polecenie psql, następnie
po ciągu „znaków gotowości” (dbuser=>) wykonaj polecenie \list.
 polecenie createdb bez argumentu nazwy bazy danych, utworzy bazę danych o nazwie
użytkownika, pod warunkiem że taka baza nie istnieje.
 polecenie psql bez wskazania nazwy bazy danych spróbuje zalogować użytkownika do
bazy o nazwie takiej, jak login użytkownika wywołującego polecenie; jako użytkownik
dbuser wykonaj polecenie psql (w katalogu /usr/local/pgsql/bin); do jakiej bazy


danych zostałeś zalogowany?
polecenie dropdb wymaga podania, jako parametr nazwy bazy danych do usunięcia;
użytkownik nie będący administratorem bazy może usuwać tylko te bazy, które sam
utworzył;
polecenie dropuser służy do usuwania użytkownika; czy polecenie dropuser dbuser
jest możliwe do wykonania? jeżeli operacja nie powiodła się zmień właściciela
wszystkich baz danych należących do użytkownika dbuser na użytkownika postgres,
wykonując polecenie psql, następnie alter database „nazwa bazy danych” owner to
postgres; powtórz wykonanie polecenia dropuser dbuser; sprawdź czy użytkownik
został usunięty, czyli wykonaj polecenie select usename from pg_user.
Po zakończeniu laboratorium wyłącz system poleceniem shutdown –h now i poczekaj na
zamknięcie systemu.
Zadanie domowe*
W katalogu ze źródłami postgresa jest katalog src/bin/scripts. Po nazwach znajdujących się
tu plików z łatwością wywnioskujesz, że są to pewne pliki źródłowe. Zadanie domowe polega
na modyfikacji kodu źródłowego pliku createuser.c. Należy tak zmodyfikować kod programu,
aby podczas tworzenia nowego użytkownika z hasłem, nie były przyjmowane hasła krótsze
niż 5 znaków. Oczywiście po zmianie kodu należy na nowo skompilować i zainstalować
postgresa (dla odważnych można tylko podmienić program createuser).
Jako ciekawostkę podaję adres http://doxygen.postgresql.org/, umożliwiający łatwe
przeglądanie źródeł serwera bazy danych, korzystając z przeglądarki internetowej.

Podobne dokumenty