Administracja bazami danych dr inż. Grzegorz Michalski Na podstawie wykładów dra inż. Juliusza Mikody Klient tekstowy mysql Program mysql jest prostym programem uruchamianym w konsoli shell do obsługi zapytań SQL. Uruchomienie programu: • mysql db_name • mysql -u root -p db_name • mysql --user=root --password=rootpass db_name Opcje programu mysql • --help, -? – pozwala wyświetlić dostępne opcje programu • --compress, -C – opcja pozwala na przesyłanie danych pomiędzy serwerem a klientem w postaci skompresowanej • --delimiter=str – zmiana znaku rozdzielającego zapytania na str we wprowadzanych zapytaniach (skrypcie) • --execute=statement – uruchomienie jednego zapytania • mysql -p --execute="SELECT User, Host FROM mysql.user" • mysql -e "SELECT VERSION();SELECT NOW()" Opcje programu mysql • --host=host_name, -h host_name – zdalne połączenie do serwera baz danych na maszynie host_name • --port=port_num, -P port_num – zmiana domyślnego portu • --password[=password], -p[password] – automatyczne logowanie po podaniu hasła --user=user_name, -u user_name – wprowadzenie nazwy użytkownika (domyślnie to nazwa użytkownika systemu) • mysql test -u test -ptest • mysql test --user=test --password=test • Opcje programu mysql • --xml, -X – opcja pozwalająca uzyskać wynik w postaci XML inne: batch, table, html mysql --execute="SELECT User, Host FROM mysql.user" --xml <?xml version="1.0"?> <resultset statement="SELECT User, Host FROM mysql.user " xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <row> <field name="User">test</field> <field name="Host">%</field> </row> <row> <field name="User">root</field> <field name="Host">localhost</field> </row> <!--- … inne wiersze … --> </resultset> Komendy mysql ? – pomoc do programu • help, • clear – czyszczenie konsoli quit – wyjście z programu • exit, • status – informacje o aktualnym połączeniu • system – wywołanie komendy systemowej z poziomu mysql atrybut – komenda help pozwala także na wyświetlenie informacji (pomocy) na temat podanego parametru (np. komenda help select wyświetli pomoc na temat komendy SQL - select • help Aktualne bazy danych Po zalogowaniu się do programu mysql należy wybrać bazę danych na której chcemy pracować (jeśli baza nie została wpisana w komendzie uruchomienia programu). Ta sama komenda służy do zmiany aktualnej bazy danych: • CONNECT lub test • USE test Podgląd struktury bazy danych Do podglądu elementów struktury danych służą komendy: SHOW DATABASES SHOW [FULL] TABLES SHOW [FULL] COLUMNS SHOW INDEX SHOW CHARACTER SET SHOW COLLATION Podgląd struktury bazy danych Alternatywnie do wyświetlenia struktury służy program mysqlshow: mysqlshow – wyświetla bazy danych mysqlshow mysql – wyświetla tabele mysqlshow mysql user – wyświetla kolumny mysqlshow mysql user host – wyświetla opis kolumny Mechanizm składowania Mechanizm składowania – mechanizm sposobu zapisu danych wprowadzanych do bazy. Dostępne mechanizmy składowania: InnoDB, MRG_MYISAM, BLACKHOLE, CSV, MEMORY, FEDERATED, ARCHIVE, MyISAM Dostępne mechanizmy składowania (silniki zapisu danych) można wpisać za pośrednictwem komendy SHOW ENGINES MyISAM - Zalety • Maksymalny rozmiar tabeli 65536TB (chyba że ograniczone systemem) • Niski koszt przechowywania (efektywna obsługa składowania) • Wsparcie indeksów B-Tree, FullText • Bardzo szybkie wykonywanie zapytań INSERT i pobierających SELECT • Szybkie tabeli wykonywanie zapytań zliczających liczbę wierszy w MyISAM - Wady • Brak mechanizmu transakcji • Blokowanie • Brak mechanizmu crash recovery • Blokowanie • Brak na poziomie tabeli wykonywania kopii zapasowej online możliwości nadawania ograniczeń kluczy obcych InnoDB - Zalety • Zgodność z ACID - atomicity - atomowość, consistency spójność, isolation - izolacja, durability – trwałość • Wsparcie • Wysoki crash recovery limit zajętości (64TB dla każdej przestrzeni tabel) • Nieograniczone • Backup blokady na poziomie wierszy nieblokujący online • Zaawansowane mechanizmy pamięci cache InnoDB - Wady • Brak wsparcie dla indeksów fulltext • Wymaga większych zasobów pamięci i dyskowych MEMORY - Zalety • Bardzo szybkie wykonywanie operacji zapisu i odczytu • Wsparcie dla indeksów tree i hash • Zarządzanie główną pamięcią bazy danych MEMORY - Wady • Dane nie są zachowywane między wyłączeniami serwera • Brak wsparcia dla transakcji • Brak wsparcia dla kluczy obcych • Brak indeksów pełnotekstowych • Blokady • Brak na poziomie tabeli możliwości używania typów BLOB lub Text Monitorowanie bazy danych Monitorowanie działania bazy danych odbywa się przez uruchomienie logów systemu, tzw dzienników. Ogólny plik dzienników jest zapisywany w pliku wskazywanym przez zmienną systemową: general_log_file oraz oraz general_log musi być włączone. Zmienne te można ustawić w pliku /etc/mysql/my.cnf: general_log_file = /var/log/mysql/mysql.log general_log = 1 Wartości te są domyślnie zakomentowane. Monitorowanie bazy danych Można monitorować zapytania których wykonanie trwa pewien ustalony limit czasu: log_slow_queries Czas po przekroczeniu którego zapytanie zostanie zapisane do pliku logów przypisany jest do zmiennej: long_query_time w sekundach. Wartości te mogą być modyfikowane w czasie działania bazy danych: SET GLOBAL long_query_time = 10; Wprowadzenie opcji: log-queries-not-using-indexes pozwala na zapisywanie zapytań, które nie używają indeksów. Monitorowanie bazy danych Dziennik binarny log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 10 max_binlog_size = 100M Zapis wszystkich operacji, które powodują zmiany w bazie danych. Możliwość odtworzenia wszystkich wykonanych operacji: mysqlbinlog /var/log/mysql/mysql-bin.000001 Administracja bazami danych dr inż. Grzegorz Michalski