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.