Job / Praca

    MySQL crash

    Witajcie po krótkiej przerwie. Chciałem opisać moją delegację przez większość północnej Polski, jednak po powrocie okazało się, że przywitał mnie padnięty mysql, a że przy okazji dało się go w miarę szybko naprawić to będzie to znakomity tutorial :)

    Mam system helpdeskowy o nazwie bugzero. To trochę pokręcony konfig ponieważ jest napisany w javie, wymaga tomcata i javy, java na NetBSD działa w emulacji linuxowej, a wszystko przechowywane jest w bazie. Tak czy owak powyższy konfig działa bardzo stabilnie, a od czasu update’u do 4.0 nie miałem z nim problemu przez prawie 140 dni :)

    11:15AM up 139 days, 13:05, 2 users, load averages: 0.07, 0.39, 0.70

    Dzisiaj jednak strona do logowania się wyświetliła i po kliknięciu przycisku do zalogowania nic się nie stało a przeglądarka cały czas łączyła się. Trwało to dość długo więc zacząłem szukać przyczyny.

    Nauczony za czasów 3.0, że tomcat lubił się powiesić zrestartowałem go, nie pomogło to, a właściwie pogorszyło sparwę bo juz nie można nawet było wyświetlić okienka logowania. Jako drugi do sprawdzenia mysql. Stopował się ze dwie minuty ale w końcu mu się udało bez ingerencji kill :) Przy próbie wystartowania dostałem komunikat:

    /var: write failed, file system is full

    Aha, jest winowajca. Faktycznie /var ponad pełny 102% :) Zrobiłem trochę miejsca (głownie logi mysqla i snorta) i wystartowałem mysql jeszcze raz, tym razem poszło gładko. Próba logowania się do bugzero jednak zakończyła się komunikatem „Load issues/bugs from the database failed”.

    No to pięknie baza się rozjechała. Na szczęście mysql ma narzędzia aby to naprawić. Usterka okzała się na tyle mała, że obyło się bez żmudnego wpisywania do bazy czegokolwiek.

    Po pierwsze należy sprawdzić w których tabelach jest błąd. Najprościej zrobić to narzędziem mysqlcheck

    mysqlcheck -uroot -p bugzero

    bugzero.PrimaHelpdesk2007_entry
    warning : Table is marked as crashed
    warning : 8 clients are using or haven't closed the table properly
    error : Size of indexfile is: 69632 Should be: 70656
    error : Corrupt
    bugzero.PrimaHelpdesk2007_file
    warning : 2 clients are using or haven't closed the table properly
    status : OK
    bugzero.PrimaHelpdesk2007_filter
    warning : 2 clients are using or haven't closed the table properly
    status : OK
    bugzero.PrimaHelpdesk2007_query
    warning : 2 clients are using or haven't closed the table properly
    status : OK
    bugzero.PrimaHelpdesk2007_trail
    warning : 8 clients are using or haven't closed the table properly
    status : OK
    bugzero.PrimaHelpdesk2007_trigger OK
    bugzero.SEQUENCE
    warning : 7 clients are using or haven't closed the table properly
    status : OK

    Ok, mamy jedna tabele uszkodzoną i kilka innych z warningami. Wchodzimy do mysql i naprawiamy tabele:

    mysql -uroot -p bugzero

    mysql> repair table PrimaHelpdesk2007_entry
    -> ;
    +---------------------------------+--------+----------+----------+
    | Table | Op | Msg_type | Msg_text |
    +---------------------------------+--------+----------+----------+
    | bugzero.PrimaHelpdesk2007_entry | repair | status | OK |
    +---------------------------------+--------+----------+----------+
    1 row in set (1.10 sec)

    mysql> repair table PrimaHelpdesk2007_file;
    +--------------------------------+--------+----------+----------+
    | Table | Op | Msg_type | Msg_text |
    +--------------------------------+--------+----------+----------+
    | bugzero.PrimaHelpdesk2007_file | repair | status | OK |
    +--------------------------------+--------+----------+----------+
    1 row in set (0.68 sec)

    mysql> repair table PrimaHelpdesk2007_filter;
    +----------------------------------+--------+----------+----------+
    | Table | Op | Msg_type | Msg_text |
    +----------------------------------+--------+----------+----------+
    | bugzero.PrimaHelpdesk2007_filter | repair | status | OK |
    +----------------------------------+--------+----------+----------+
    1 row in set (0.04 sec)

    mysql> repair table PrimaHelpdesk2007_query;
    +---------------------------------+--------+----------+----------+
    | Table | Op | Msg_type | Msg_text |
    +---------------------------------+--------+----------+----------+
    | bugzero.PrimaHelpdesk2007_query | repair | status | OK |
    +---------------------------------+--------+----------+----------+
    1 row in set (0.14 sec)

    mysql> repair table PrimaHelpdesk2007_trail;
    +---------------------------------+--------+----------+----------+
    | Table | Op | Msg_type | Msg_text |
    +---------------------------------+--------+----------+----------+
    | bugzero.PrimaHelpdesk2007_trail | repair | status | OK |
    +---------------------------------+--------+----------+----------+
    1 row in set (1.88 sec)

    mysql> repair table PrimaHelpdesk2007_trigger;
    +-----------------------------------+--------+----------+----------+
    | Table | Op | Msg_type | Msg_text |
    +-----------------------------------+--------+----------+----------+
    | bugzero.PrimaHelpdesk2007_trigger | repair | status | OK |
    +-----------------------------------+--------+----------+----------+
    1 row in set (0.07 sec)

    Jak widać poszło sprawnie i szybko (czego niestety nie można powiedzieć o bazie snorta :/

    Po powyższej operacji jeszcze raz sprawdzamy strukturę tabel:

    mysqlcheck -uroot -p bugzero

    bugzero.PrimaHelpdesk2007_entry OK
    bugzero.PrimaHelpdesk2007_file OK
    bugzero.PrimaHelpdesk2007_filter OK
    bugzero.PrimaHelpdesk2007_query OK
    bugzero.PrimaHelpdesk2007_trail OK
    bugzero.PrimaHelpdesk2007_trigger OK
    bugzero.SEQUENCE OK
    bugzero.accesscode OK
    bugzero.assignment OK
    bugzero.fieldname OK
    bugzero.fieldset OK
    bugzero.groupcode OK
    bugzero.mailbox OK
    bugzero.person OK
    bugzero.project OK
    bugzero.reminder OK
    bugzero.workflow OK

    Tym razem próba logowania zakończyła się pełnym sukcesem :)

    Dla porównania naprawa bazy snorta:

    mysql> repair table snort.data;
    +------------+--------+----------+----------+
    | Table | Op | Msg_type | Msg_text |
    +------------+--------+----------+----------+
    | snort.data | repair | status | OK |
    +------------+--------+----------+----------+
    1 row in set (5 min 24.55 sec)

    trochę dłużej :)




    © odwiedź stronę http://maciejewski.org po więcej fajnych postów!

    Job / Praca

    Gorąco!

    Tak, nic odkrywczego pewnie codziennie doświadczacie tych temperatur. Gorzej jeśli sprzęty ich doświadczają. Pierwszy niepokojący sygnał to temperatura w serwerze do backupu, a dokładnie temperatura pomiędzy dyskami. Aż się skala skończyła.

    Po przeskalowaniu wykres się mieści, jednak jest to 7 stopni więcej niż średnio, i niestety przez najbliższe 2 tygodnie będzie pewnie powoli wzrastał.

    Oczywiście serwery znajdują się w pomieszczeniach klimatyzowanych, klima jednak osiągneła kres swoich możliwości słuchając wycia wiatraków w serwerze IBM, zauważalnie głośniej i z większą częstotliwością.

    Na koniec jeszcze rzut oka na ILO od Prolianta, też niezbyt dobrze, dzisiaj rano chłodzenie chodziło na 79% swojej mocy, wczoraj w południe było to 89%.

    Temperatury wyglądają następująco, twardy zawodnik nie biorąc pod uwagę temp. otoczenia :)

    Na koniec jeszcze ciekawostka, nie mam zdjęcia chociaż pewnie nie będzie trudno dzisiaj taki efekt osiągnąć, termometr w samochodzie zrobił się cały czarny. Po krótkiej jeździe i wychłodzeniu samochodu najwyższa zarejestrowana temperatura wyniosła 75 stopni!



    © odwiedź stronę http://maciejewski.org po więcej fajnych postów!

    NetBSD

    BSD Magazine #2

    Z lekkim opóźnieniem krótka recenzja BSD Magazine #2.

    Numer drugi poświęcony jest prawie w całości OpenBSD na spółę z PC-BSD.

    Co jak z czym i po co wydane nie będę się rozpisywał ponieważ nie zmieniło się za bardzo od numeru pierwszego. Tyle samo stron, taki sam dobry papier i miły layout. Z pozytywnych zmian widać, że redaktorzy czytają mojego bloga i nie ma już pokemona FreeBSD na każdej stronie, a zgodnie z sugestią piszącego te słowa – artykuły o Openie ozdabia Puffy, a o PC-BSD piłka, która jak mniemam jest logiem PC-BSD ;)

    Na dołączonym DVD dostajemy OpenBSD 4.3 oraz DragonFly 1.12.2. Jest także MirBSD czyli bardzo okrojona hybryda Open i Net – BSD. Dostajemy także antywirusa FPROT. Antywirus dla BSD? Może kiedyś się przyda przed jakimiś makro wirusami, bo innego zastosowania nie widzę.

    Teraz trochę o tym co najbardziej wartościowe czyli content. Jak już wspomniałem numer drugi sponsorowany jest przez Pana Theo więc mamy artykuł o instalacji Opena wraz z listingami menusów i co odpowiadać na kolejne pytania. Artykuł tyle co dobry to zupełnie chybiony z dwóch powodów. Czytelnikami BSD Magazine są osoby które mają styczność z systemami BSD i ktoś kto by chciał spróbować zainstalować opena napewno nie wydawałby ponad 30 zł na kwartalnik, którego w dodatku nie można kupić w kiosku. Po drugie tutoriali do wszystkich systemów we wszystkich językach jest tyle, że taki opis tylko po angielsku jest zupełnie zbędny.

    Dalej pozostajemy w podstawowych zagadnieniach administracji Openem czyli instalacja paczek. Komentarz z poprzedniego akapitu w zasadzie mogę powtórzyć.

    Dalej jest już lepiej. W artykule Gillesa Chehade znajdziemy informacje o tym jak zbudować sobie środowisko developerskie z kontrolą wersji przy pomocy cvs, środowiskiem chroot i listą mailingową.
    Czy jak to jest napisane „OpenBSD the best development platform” to bym polemizował, z uwagi chociażby na fatalną obsługę SMP w Openie, a moc kilku procesorów przy kompilacjach jednak jest ważna, ale informacje tam zawarte można z powodzeniem przenieść na inne platformy.

    Następnie możemy poczytać o budowaniu serwera SAMP przy pomocy Opena. SAMP to po prostu Squid, Apache, MySQL i PHP :) Po przeczytaniu artykułu będziemy mieli serwer Proxy i zarządzanie prze Webmina. Znalazłem tam także literówkę przy ósmym screenie – „The defoult shell”, zdarza się ;)

    Kolejnym artykułem jest (a jakże) OpenBSD – tym razem w ujęciu desktopowym. Właściwie o X11 jest 30 linijek tekstu wraz z komendami i instalacją KDE. Gratulacje dla autora za optymizm, chyba że ma wybitne szczęśćie i ln -s .xinitrc .xsession && startx w jego wypadku działa zawsze i wszędzie. Reszta dwkustronicowego artykułu to opis jak pozakładać grupy alby współdzielić dokumenty i cdrom, oraz w zasadzie powtórzenie informacji jak skonfigurować sieć. Aby nie być gołosłownym w swojej krytyce rzućcie okiem na opis bardzo podstawowej konfiguracji serwra X w The Guide…

    Pozostała część magazynu traktują o Jabberze i połączeniu go do innych sieci czyli o transportach jak i szyfrowaniu połączenia i rozmów prowadzonych przez nasz własny serwer jabberowy. Bardzo fajne i przydatne. Jest też artykuł o PBI czyli graficznym instalatorze PC-BSD (uogólniając).

    Z artykułów mniej technicznych mamy sprawozdanie z Absolute FreeBSD 2, postępy nad certyfikatami BSD, wywiad z Damienem Bergamini (OpenBSD Developer) oraz Mac OS X jako „inne BSD”. Jest co poczytać.

    Czy mamy coś o NetBSD? Mamy! 3 newsy – o supporcie UDF w NetBSD (Universal Disk Format), zmianie licencji NetBSD na dwu-klauzulową oraz zapowiedniach o tam nowego w NetBSD 5.0 (między innymi ulepszenia w SMP, wielowątkowości, obsłudze PAE w XENie oraz wspomnianego UDF i wiele innych). Także w artykule o Kernel File System czyli kernelu jako środowisku programistycznym i testowym jest trochę o NetBSD a właściwie o rump czyli Runnable Userspace Meta Program.

    Numer mogę zaliczyć do udanych chociaż mniej niż pierwszy. Ważne, że znalazłem trochę ciekawych howtosów (tych o jabberd), jako czytelnik jestem więc kontent ;) Niestety w zapowiedziach na grudniowy numer widać, że redakcja znowu idzie w absolutnie podstawowe tutoriale – tym razem o PC-BSD. Zobaczymy co z tego wyjdzie, o czym oczywiście nie omieszkam poinformować w kolejnym wpisie BSD Magazine #3




    © odwiedź stronę http://maciejewski.org po więcej fajnych postów!

    Job / Praca

    AS/400 i JDE

    A teraz coś kompletnie z innej systemowej beczki. Od razu mówię, że nie jestem żadnym ekspertem jeśli chodzi o AS/400. Dla osoby, która używała i używa kilku systemów operacyjnych każdy nowy (i nie mówie o etnej dystrybucji linuksa) jest napewno ciekawy. AS/400 jest interesujący poprzez swoją inność.

    Przedewszystkim należy zacząć od tego że w ASie wszystko jest obiektem, i mam na myśli wszystko. Komenda jest obiektem, biblioteka jest obiektem, wygenerowany raport jest obiektem, wszystko co da się wymyślić jest obiektem :) Dlatego też, przynajmniej mi na początku dość trudno było myśleć o systemie jako zbiorze bibliotek z programami i plikami. Wiadomo, mamy Windows czy tam Unix jakiś, mamy dyski, partycje, litery dysków lub / jako root i pod nim kolejne katalogi. W ASie tego nie ma, jest główna biblioteka QSYS i pod nią kolejne podbiblioteki i wnich odpowiednie pliki i programy i koniec. Za to wyszukiwanie jakiegos pliku, lub zawartości w pliku trwa nie zmiernie szybko, właściwie wygląda to tak jakby wszystko było gdzieś zindeksowane. Poruszanie po systemie też wydaje się na początku dziwne, ponieważ wszystko opiera się na różnych menusach. Tak jest, nie mamy jakiegos menadżera czy lini komend w rozumieniu Unixowym. Wydaje się to może toporne, ale po chwili używania jest dość wygodne.

    Ekran powitalny JDEdwards na AS/400
    Ekran powitalny JDEdwards na AS/400

    Do zarządzania uzytkownikami mamy taki za to menus:

    Zarządzanie użytkownikami
    Zarządzanie użytkownikami

    Lista procesów ze znajomym oprogramowaniem – serwer WWW Apache.

    Lista procesów
    Lista procesów

    Status systemu:

    Status Systemu - mało miejsca na dyskach :/
    Status Systemu - mało miejsca na dyskach :/

    Z ciekawostek warto wymienić, że natywnym kalendarzem w JDE jest kalendarz Juliański w którym dzisiejsza data (18.07.2008) wygląda tak: 108200 – czyli 1 08 200, gdzie pierwsza cyfra oznacza stulecie (0 – XX wiek, 1 – XXI wiek), kolejne dwie rok (08 – 2008 wiadomo), a ostatnie trzy cyfry kolejny dzień roku. Jutro więc będzie juliańska data 108201. Może wydawać się to dość dziwne/ekscentryczne ale przy olbrzmiej ilości danych i dat format juliański idealnie rozróżnia co było wcześniej a co później. Łatwo jest też poprzez zwykłe dodawanie i odejmowanie szybko policzyć co było starsze/młodsze i o ile dni. AS/400 oczywiście dostarcza kalkulator dat :)

    Konwerter dat juliańskich <-> gregoriańskich
    Konwerter dat juliańskich gregoriańskich

    To co czyni ASa i JDEdwards wyjątkowym jako system ERP to jego szybkość. Baza 40 GB z 20 milionami rekordów i kilkudziesięcioma użytkownikami zalogowanymi naraz i mieliona 8 godzin dziennie w te i wewte praktycznie nonstop obsługuje jeden RISCowy procesor 1.5 Ghz :) Dane przechowywane sa w bazie DB2 400.

    Dla porównania mój Snort z Base gdzie jest 3 mln rekordów na 4x Xeon 3Ghz i 2 GB RAM, potrzebuje około 50 sekund dla jednego usera żeby wydobyć dane z MySQL :)

    Oprócz wspomnianego APACHE na ASie może jeszcze działać JAVA i baza ORACLE. System można także samemu rozbudowywać o nowe możliwości lub programy w języku RPG.

    Co jeszcze czyni AS/400 wyjatkowym? Niestety cena i to nie tylko oprogramowania. Zmiana dysków na większe (np 500GB) to wydatek rzędu kilkunastu tysięcy dolarów. Tak samo procesor czy pamięć. Ale fakt, że tych zmian nie dokonuje się zbyt często. Powszechnie wiadomo, że AS/400 to najbardziej niezawodny system. Nie znalazłem żadnej komendy podobnej do uptime, a szukałem dość długo. Ale nie ma chyba takiej potrzeby bo raz uruchomiony AS jak go szlag nie trafi z powodu hardware’u lub awarii prądu działa sobie kilka(naście?) lat :)




    © odwiedź stronę http://maciejewski.org po więcej fajnych postów!

    Add your widget here