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…)
Archiwum kategorii ‘DB’
Trochę Lua w mysql-proxy
poniedziałek, 2 Listopad 2009nagios: 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ć.
MS SQL 2008
wtorek, 1 Wrzesień 2009Przeniosłem bazy Płatnika i Pudełko z MSDE 2000 na MS SQL 2008 (Express). Nic trudnego, ale dostawcy obu rozwiązań nie wspierają (jeszcze) oficjalnie tej bazy, wiec można mieć wątpliwości. Działa poprawnie, łącznie ze zmianą poziomu kompatybilności baz.
ALTER DATABASE [platnik] SET COMPATIBILITY_LEVEL = 100
GO
ALTER DATABASE [pudelko] SET COMPATIBILITY_LEVEL = 100
GO
Przeniesienie w najprostszy z możliwych sposobów – detach i attach. Pamiętać należy, że jeśli nie uwierzytelniamy się na sa (!!!), w nowej instancji założyć trzeba login i powiązać go z użytkownikiem w bazie. Co ciekawe przy robieniu tego z GUI (Microsoft SQL Server Management Studio) możemy wybrać istniejącego użytkownika, a narzędzie będzie próbowało go założyć (CREATE) zamiast zmienić (ALTER) i zgłosi błąd (login zostanie założony, ale mapowania nie będzie). Dla niedomyślnych pomocny przykład:
USE [pudelko]
GO
ALTER USER [opek] WITH LOGIN = [opek]
GO
MySQL slow_queries
wtorek, 10 Luty 2009Już 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…
DBD::Sybase na Gentoo
środa, 24 Grudzień 2008Gdyby ktoś chciał robić DBD::Sybase (ja potrzebowałem do monitorowania bazy MS SQL) na Gentoo, to poniżej Manifest (dla 1.07 i 1.09):
DIST DBD-Sybase-1.07.tar.gz 189553 SHA1 881fc8f1c65e39e8537f4cc2e93308caeab87eed SHA256 be41f930fda27447b520773a1461ba3f43d20e0a859bef0504c40f3f3fe067b0
DIST DBD-Sybase-1.09.tar.gz 194414 SHA1 23cad59ab7892732175336087093b1e3c2bda09a SHA256 516d44567f1c76aa6aba76879a371d3a44f4a69da3b06b304f375eb57bb2daf1
EBUILD DBD-Sybase-1.07.ebuild 669 SHA1 03a85b4da544032957b312dde5b0cf44e910e562 SHA256 14a2eca747ad29e297299ad3282e9f000a6e61f5eb63783f9c79f481250c465a
EBUILD DBD-Sybase-1.09.ebuild 661 SHA1 8719cb6544289ed71d74d9a06c8cab5a60ba021d SHA256 e49e709405fc2b5c3ddf4bf1d27be1925c47446b1b2927b09dad571079aba93b
Ebuild można pobrać z Gentoo Bug (42040 – DBD-Sybase-1.02 (new package)). Przeróbka tego do 1.09 nie powinna być problemem.
Oczywiście wszystko do /usr/portage/dev-perl/DBD-Sybase.
DBD::Oracle – problem z kompilacją
środa, 24 Grudzień 2008Budowałem DBD::Oracle na Gentoo 1.12.11.1 (Linux 2.6.18-xen-r12 x86_64), ale nie wyszło. Błędy po make:
[...]
x86_64-pc-linux-gnu-gcc -c -I/usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux/auto/DBI -I../ -DLINUX -D_GNU_SOURCE -D_REENTRANT -g -fno-strict-aliasing -pipe -Wdeclaration-after-statement -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -pipe -march=nocona -DVERSION=\"1.22\" -DXS_VERSION=\"1.22\" -fPIC "-I/usr/lib64/perl5/5.8.8/x86_64-linux/CORE" -Wall -Wno-comment -DUTF8_SUPPORT -DNEW_OCI_INIT -DORA_OCI_VERSION=\"10.2.0.3\" Oracle.c
In file included from Oracle.xs:1:
Oracle.h:37:17: error: oci.h: No such file or directory
Oracle.h:38:22: error: oratypes.h: No such file or directory
Oracle.h:39:20: error: ocidfn.h: No such file or directory
[...]
Rzeczywiście nigdzie nie ma ścieżki do katalogu z oci.h. Po instalacji dev-db/oracle-instantclient-basic (na Gentoo) wszystkie pliki nagłówkowe są w /usr/lib64/oracle/10.2.0.3/client/include. Żeby budowanie się powiodło, do x86_64-pc-linux-gnu-gcc trzeba dodać tą ścieżkę (-I).
Wszystko po to, by z Nagios można było monitorować stan Oracle (poprzez check_oracle_health).
Przygód z MSDE ciąg dalszy
wtorek, 16 Grudzień 2008
Na MS Windows 2003 nie udało mi się zainstalować MSDE poprzez dwuklik. Należy posiłkować się wierszem polecenia – wymagane jest podanie hasła do bazy (parametr SAPWD). Więcej tutaj:
Dodatkowo po instalacji domyślnie MSDE nie nasłuchuje na TCP. Włączyć to należy za pomocą SVRNETCN, więcej na:
Przy imporcie danych wymagana była ścieżka taka jak na serwerze źródłowym. Zmiana lokalizacji po jest możliwa. Dobry opis znalazłem tutaj:
Używam SQL Server Management Studio Express, w trakcie importu zmianę ścieżki również da się zrobić.
Żeby było jasne – nie miałem nigdy do czynienia z MS SQL, więc dlatego niektóre z problemów mogą okazywać się trywialne, niemniej odkrywam koło sam (powered by Google).