Archiwum kategorii ‘MySQL’

Bacula i własne zestawienia

wtorek, 28 Czerwiec 2011

Bacula oprócz gotowych zestawień informacji (wyświetlanych przy pomocy komend np. status czy list) umożliwia tworzenie własnych, możliwych do wykorzystania w raportach czy po prostu pomocnych przy codziennej pracy. Z racji tego, że wszystkie dane przechowywane są w bazie SQL (MySQL lub PostgreSQL) można to zrobić dowolnym klientem (np. Orbada :>). Można też przygotować zapytania i wywoływać je z poziomu bconsole – daje to pewną „interaktywność”.

Sam napisałem własne i dopisuję na potrzeby chwili kolejne zapytania. (więcej…)

FortiAnalyzer i MySQL

piątek, 9 Kwiecień 2010

W dokumencie FortiAnalyzer v4.0 MR2 Release Notes w rozdziale ’1.1 Summary of Enhancements Provided by FortiAnalyzer v4.0 MR2 Release’ można znaleźć między innymi coś takiego:

  • Remote SQL database (MySQL) support
  • SQL DB PostgreSQL support

Przyznam, że zaintrygowało mnie to na tyle, że postanowiłem od razu sprawdzić z czym to się je i co można z tego wycisnąć.
(więcej…)

MySQL: konwersja daty i import plików – studium przypadku

środa, 13 Styczeń 2010

Niniejszy wpis powstał przy rozwiązywaniu konkretnego problemu. Jest tu opis polecenia LOAD DATA INFILE (import danych z pliku) oraz sposób wykonania konwersji daty podczas importu danych, co może komuś się przydać (niekoniecznie przy walce z takim samym problemem).
(więcej…)

Trochę Lua w mysql-proxy

poniedziałek, 2 Listopad 2009

Replikacja baz MySQL działa jako tako. Jeśli to typ MASTER – SLAVE, to na ogół ten drugi serwer się nudzi. Skoro się nudzi, można wykorzystać go do zapytań, które nie zmieniają niczego (SELECT). Jeśli oddamy go w takim stanie programiście, to pewne jest, że prędzej czy później będzie to jego serwer testowy i dziać się będą na nim różne rzeczy.
(więcej…)

nagios: check_mysql-replication.pl

czwartek, 22 Październik 2009

Do monitorowania replikacji MySQL pod Nagios postanowiłem użyć wtyczki mysql_check-replication.pl, ktrej autorem jest Erwan Labynocle Ben Souiden. Instrukcja mówi o nadaniu prawa REPLICATION CLIENT użytkownikowi, który łączył się będzie z bazą. Sam skrypt napisany jest w Perl, gdzie w DSN podana jest baza, do której użytkownik będzie się podłączał. Wspomniane prawa dają tylko możliwość wywołania SHOW MASTER STATUS oraz SHOW SLAVE STATUS i nie dają praw do żadnej bazy. Tym samym skrypt się nie wykona.

Proponuję (wersja 0.1) przerobić DSN (linia 298) i wyrzucić nazwę bazy zupełnie (pozostawić `:’ – dwukropek) lub zmienić nazwę na information_schema, bo do tego prawo ma każdy użytkownik (dla wersji > 5.0).

--- /usr/lib64/nagios/plugins/check_mysql-replication.pl 2009-10-22 13:17:26.000000000 +0200
+++ check_mysql-replication.pl 2009-10-22 13:17:33.000000000 +0200
@@ -295,7 +295,7 @@ EOT
# ------------------------------
sub request_executor() {
my ($host,$port,$user,$pwd,$request) = @_;
- my $dsn = "DBI:mysql:mysql;host=$host:$port";
+ my $dsn = "DBI:mysql:;host=$host:$port";
my $dbh = DBI->connect($dsn, $user, $pwd) or die "connexion failed $DBI::errstr\n";
my $sth = $dbh->prepare($request);
$sth->execute();

Autor obiecał, że wprowadzi stosowną poprawkę – tymczasem można łatać.

MySQL slow_queries

wtorek, 10 Luty 2009

Już kiedyś płakałem z tego powodu – Analiza log-slow-queries (z życia wzięte…), a tu stary klient narzeka na wydajność swojego serwera. I co my tu mamy?

  • tabela 1 – 117’608 wierszy,
  • tabela 2 – 730 wierszy,
  • tabela 3 – 709 wierszy.

Niby niewiele, ale da się z tego zrobić taki wynik:

# Query_time: 11'005  Lock_time: 0  Rows_sent: 1  Rows_examined: 88'891'086

Dla porównania 10 miesięcy temu to samo zapytanie:

# Query_time: 53  Lock_time: 0  Rows_sent: 615  Rows_examined: 8'674'949

Nie mam pytań. Zdecydowanie potrzeba nowego procesora, więcej pamięci i szybszych dysków. Programisty przecież nie przekonamy…

SQL Relay

czwartek, 4 Wrzesień 2008

Zajmował się ktoś SQL Relay? Wygląda obiecująco, i te wsparcie dostawców – Oracle, MySQL, mSQL, PostgreSQL, Sybase, MS SQL Server (oba przez FreeTDS), IBM DB2, Interbase, SQLite, ODBC, MS Access (MDB Tools)…

Postanowiłem przyjrzeć się temu w połączeniu z PostgreSQL i MySQL z C/C++ i Perl API. Wersja 0.39.4.
Jest w portach dla FreeBSD, nie ma w paczkach dla Gentoo. Potrzebuje dodatkowej biblioteki Rudiments (devel/rudiments we FreeBSD, dev-cpp/rudiments w Gentoo) i jeśli chcemy jakiegoś API, to odpowiednio: Perl, PHP, Python, Ruby, TCL, Java lub Zope. GTK+ i glib da nam GUI.

Konfiguracja nietrudna – w pliku XML. W tagu instance definiujemy proces nasłuchu. Tag user to definicje użytkowników wraz z hasłami. Na koniec tag connection, który wskazuje konfigurację do konkretnej bazy.
W bardziej złożonej konfiguracji mamy jeszcze router i filter. Pierwszy tag odpowiada za kierowanie zapytań do odpowiedniej bazy, drugi – za filtrowanie zapytań (zdefiniowane nie będą w ogóle przesyłane do serwera, a klient dostanie błąd). W obu przypadkach jest możliwość dopasowania zapytań za pomocą wyrażeń regularnych.

Jeżeli uruchamiamy SQL Relay za pomocą sqlr-start, musimy pamiętać, że wszystkie programy, które wywołuje, np. sqlr-listener muszą być w ścieżce ($PATH). Baza również musi działać. Jeśli nie, pozostaje walka z czyszczeniem shared memory segment i semaphore (ipcs, ipcrm), bo SQL Relay nie sprząta po sobie.

Na tym skończyłem walkę. To znaczy próbowałem uruchomić SQL Relay zarówno z MySQL jak i PostgreSQL, ale niestety zakończyło się to niepowodzeniem (SQL Relay nasłuchiwał, przy połączeniu cisza). Mam nadzieję, że kiedyś wrócę do tego tematu.

Przepraszam, jeśli ktoś był pełen nadzieji, że czegoś się dowie z tego artykułu. Zmieniłem pracę i już nie robię tego co robiłem, więc wiele rzeczy pozostało niedokończonych…