Michal Čihař - Blog Archives

Informace o stavu MySQL serveru podruhé - další informace

Před týdnem jsme se podívali na stránku zobrazující stav serveru, ale to zdaleka není jediná možnost jak se podívat co se na serveru děje.

Probíhající SQL dotazy a jejich historie

Pokud je MySQL server hodně zatížen, může být snadné identifikovat viníka ze seznamu běžících dotazů . Pro každý dotaz zde vidíme jak dlouho běží, který uživatel ho spustil a můžeme ho také ukončit.

MySQL server uchovává historii dotazů, které nějak měnily (nebo mohly změnit) data na serveru. Tento log si můžete prohlédnout na stránce s  binárními logy . Prohledávání tohoto seznamu však může být poměrně časově náročné.

Podporovaná úložiště a jejich stav

Další zajímavou stránkou může být seznam podporovaných úložišť . Kromě jejich přehledu se zde po kliknutí na ně dozvíme i informace o jejich stavu a případně o proměnných ovlivňujících jejich chování. Nejvíce informací je v současné době dostupné pro InnoDB.

Znakové sady a porovnání

MySQL server v současné době podporuje mnoho znakových sad a pro většinu z nich i více možností porovnávání. Podrobnější informace na toto téma již přinesl článek o  problémech s češtinou . Seznam znakových sad, které podporuje váš MySQL server, naleznete na samostatné stránce . Zvýrazněná porovnání jsou výchozí pro danou znakovou sadu.

Proměnné a nastavení serveru

Proměnné a nastavení serveru je poslední část kterou si dnes projdeme. Jsou na ní vypsány všechny proměnné MySQL serveru a jejich hodnoty. Pokud se nastavení aktuálního připojení liší od globálního nastavení, je tato proměnná zvýrazněna a jsou vypsány obě hodnoty.

A nyní již můžete pomocí phpMyAdmina zjistit vše co se na vašem MySQL serveru děje a jaké možnosti má zakompilovány.

Informace o stavu MySQL serveru poprvé - stav serveru

Kromě správy MySQL serveru vám phpMyAdmin nabízí i možnosti jak se dozvědět zajímavé informace o jeho stavu. Sledováním těchto informací můžete optimalizovat běh vašeho MySQL serveru.

Než se pustím do rozebírání jednotlivých informací, musím upozornit, že v MySQL u vašeho provozovatele nemusíte mít oprávnění vidět všechny tyto stránky. Veškeré tyto informace jsou obvykle dostupné jen správci serveru.

Stav serveru

Pokud chceme zjistit stav serveru, celkem logicky se podíváme na záložku nazvanou stav serveru a phpMyAdmin nás zahltí informacemi, které získal od MySQL serveru. Jak se v nich ale vyznat?

V následujících několika odstavcích si popíšeme jednotlivé položky, ale nejdříve několik obecných informací. phpMyAdmin se snaží poznat, které hodnoty jsou vyloženě špatné nebo dobré a ty barevně zvýraznit. Červené hodnoty tedy stojí za prozkoumání a ze zelených můžete mít radost, jak dobře máte MySQL server nastavený. Toto hodnocení ale vychází z průměrného používání MySQL serveru a nemusí přesně odpovídat vašemu nastavení, takže není potřeba se děsit červených čísel. Na ukázkovém serveru například najdete mnoho takových položek a to převážně z důvodu minimalizace paměťové náročnosti MySQL serveru, který tak nemůže udržovat v paměti dostatečné množství dat.

V horní části jsou souhrnné informace – celkový přenos dat a počty připojení. Tyto čísla může být zajímavé vidět, ale obvykle se zde nic zásadnějšího nedozvíme.

Hned dále je zobrazena statistika dotazů. Z té již můžeme vysledovat například převážné používání serveru. Na produkčním serveru obvykle převažují dotazy typu select , ale pravděpodobně zde najdete i vysoká čísla pro vkládání nových záznamů ( insert ), protože mnoho publikačních systémů si ukládá nějaké statistiky o přístupu uživatelů. Větší četnost jiných typů dotazů může stát za prozkoumání, jestli některá aplikace není špatně nakonfigurována.

Další tabulka obsahuje některé souhrnné statistiky SQL dotazů a pokud máme vysokou hodnotu u Slow_queries , pravděpodobně některá aplikace příliš zatěžuje MySQL server neoptimálními dotazy. O jaké dotazy se jednalo můžete zjistit zapnutím logování pomalých dotazů v konfiguraci MySQL ( log_slow_queries ).

V dalších částech najdete vypsaný stav jednotlivých subsystémů MySQL serveru a pokud najdete červená čísla, můžete si ve vedlejším sloupci přečíst doporučení, jak tuto hodnotu vylepšit. Kromě přehledu naleznete na konci některých tabulek i akce, které je možné se souvisejícím subsystémem provést, například vyprázdnit vyrovnávací paměť dotazů nebo zobrazit podřízené servery.

Při zkoumání vlivu jednotlivých aplikací na statistiky může být užitečné tyto statistiky občas vynulovat, k tomu vám pomůže odkaz v horní části stránky nebo případně odkazy pod jednotlivými sekcemi.

How to name your job?

If you don't know much about things you do, work for a small company and want to look like a professional working for a big company, then the Japanese way to do this is to write following job name on your business card:

Embedded System Technical Division
Operating System Section
Chief Engineer

When I saw this for first time, I thought this business card is some kind of joke, but not, they're real.

When non ASCII names will finally work?

By using my name in various web services I usually spot bad implementation of displaying name field in their website. I can see that over years the amount of servers which cripple my name to something like ÄŒihaÅ™ is getting lower, but there are still lots of them. When I find way how to report it, I usually do so and I always enjoy fields like "How to repeat". This time the guilty one is the MySQL bugtracker.

PS: Fortunately all Debian pages seem to catch up this year and my name is no longer crippled in NEW queue or Lintian pages :-).

phpMyAdmin používá mootools

Ve vývojové verzi phpMyAdmin se stále více využívá JavaScript a proto se už dlouho uvažovalo o použití nějakého frameworku, který by usnadnil psaní rozšířených funkcí a do budoucna i podporu pro AJAX. Jak se můžete v současném SVN přesvědčit, momentálně se zkouší používání frameworku mootools .

Prozatím se JavaScript používá na schovávání některých informací databází a tabulek , ale do budoucna se určitě dočkáte i pokročilých funkcí využívajících AJAX.

Gammu test version 1.18.90

New Gammu testing version is out. This is mostly bug fixing release, especially with lot of tweaks for Windows build and for AT driver. Full list of changes:

  • Do not link with irprops.lib on Windows.
  • Various MSVC compilation fixes.
  • Improved AT model parsing and added tests.
  • Fixed possible crash in reading SMS from AT phones (bug #515).
  • Proper fall back to automatic model when user enters wrong one.
  • Added identification of several phones.
  • Fixed reading of messages from AT phones without ME memory.
  • Improve charset detection on Motorola phones (bug #522).

You can download from usual place: http://cihar.com/gammu/.

PS: Debian users can get packages from experimental.

Na co vůbec je SSL a podepisování?

Když dnes kolegovi přišel nepodepsaný email od UPC s žádostí o posílání peněz na jiný účet, tak jsme se začali zabývat jak to vlastně v Česku funguje s elektronickým podepisováním. Napsat mezitím email všem klientům UPC s žádostí, aby peníze posílali na můj účet, je lákavá možnost :-).

Po asi pěti minutách člověk zjistí, že i jinde se jaksi na zabezpečení moc nehraje. Chcete vědět jak nainstalovat certifikát certifikační autority, kterým je podepsaný certifikát elektronického bankovnictví? Stačí si přečíst návod na stránkách banky :

Certifikát lze stáhnout a nainstalovat zde: http://www.ica.cz/RootCERT_NewSica.cer a následně jej nainstalovat dvojklikem.

Prostě nic nezkoumejte, všechno odklikejte a bude to. Ale třeba to má ona certifikační autorita popsané lépe, tak se podíváme na její stránky. Omyl, instalaci certifikátu nám provede jakýsi program pro Windows , který vše automaticky bez jakékoliv možnosti ovlivnění uživatelem provede.

U České spořitelny je certifikát pro bankovnictví podepsán Verisignem, takže aspoň má člověk celkem slušnou jistotu, že už tuto certifikační autoritu má ověřenu. Ovšem emaily jimi posílané už jsou podepsané certifikáty od jejich vlastní certifikační autority a přes veškerou snahu se mi nepodařilo najít jak by si její certifikát podle banky měl člověk nainstalovat. Nicméně po přepsání URL z http na https má člověk možnost získat tento certifikát celkem bezpečnou cestou.

Další instituce se mi už ani nechtělo zkoumat...

Jak na debianí balíčky?

Tak jsem se nechal přemluvit k napsaní seriálu o tvorbě balíčků pro Debian. Protože je přeci jen dělám už nějaký ten pátek, tak už jsem asi zapomněl na některé věci, na které jsem v začátcích narazil. A proto jsem se rozhodl napsat tento zápisek :-). Pokud jste měli (nebo máte) s něčím problémy při vytváření balíčku pro Debian, napište to do diskuze, za odměnu se vám pokusím nabídnout co nejlepší odpověď ve vznikajícím seriálu.

PS: Když mi Robert poprvé napsal, tak jsem moc netušil co psát. Teď už se blížím třinácti dílům, takže si myslím, že se máte na co těšit :-).

Znakové sady v MySQL a phpMyAdminovi

MySQL od verze 4.1 podporuje nativně práci s různými znakovými sadami. Bohužel mnoho aplikací a dat v databázích vzniklo dříve a tuto podporu nevyužívají. Pak se uživatel může potýkat s mnoha problémy. Dnes se podíváme na to, jak ty nejčastější vyřešit.

MySQL a znakové sady

Ve verzi 4.1 přibyla v MySQL podpora pro znakové sady a řazení. Ty se nastavují v několika úrovních – výchozí pro server, databázi a tabulku a nastavení pro jednotlivé sloupce. Pokud máme databáze ze starší verze MySQL, nemají přiřazen žádný způsob řazení a použije se výchozí pro server. Výchozí pro MySQL je latin1_swedish_ci , což je pro české podmínky poněkud nevhodné. Jméno řazení se skládá ze tří částí oddělených podtržítkem – první určuje znakovou sadu, druhá jazyk a třetí variantu porovnáván. Varianty porovnávání jsou tři:

ci
case insensitive – nerozlišuje velikost písmen
cs
case sensitive – rozlišuje velikost písmen
bin
binary – řadí podle hodnoty znaku a ne lexikograficky

Pro češtinu máme k dispozici tyto varianty: ucs2_czech_ci, utf8_czech_ci, cp1250_czech_cs, latin2_czech_cs.

Podpora znakových sad v phpMyAdminovi

Do phpMyAdmina přibyla podpora tyto vlastnosti MySQL ve verzi 2.6.3. Nastavit můžete výchozí porovnání pro databázi , tabulku a stejně tak i pro jednotlivé sloupce, které vidíme na přehledu tabulky .

Na úvodní stránce si také můžeme vybrat porovnávání použité pro zobrazování výsledů, ale použitá znaková sada bude vždy utf-8, protože stránky phpMyAdmina jsou v utf-8.

Co dělat když je něco špatně?

Pokud se nám některé znaky zobrazují v phpMyAdminovi špatně, je chybně nastavená jejich znaková sada. Znakovou sadu není možné měnit v přímo, protože MySQL server pak provede konverzi dat mezi těmito znakovými sadami a data budou nejspíš nenávratně poškozena! Pokud chceme jen změnit znakovou sadu sloupce, musíme ho nejprve převést na binární hodnotu (tedy na pole typu BINARY/VARBINA­RY/BLOB odpovídající CHAR/VARCHAR/TEXT) a pak zpět na původní typ jen s jinou znakovou sadou. Takto zůstanou data v nezměněné podobě a jen se změní znaková sada.

Po této změně je ale možné, že používané starší aplikace budou mít problém zobrazit správně data. Aplikace totiž bez explicitního určení znakové sady dostávají data ve výchozí znakové sadě serveru (což je latin1). Pokud k aplikaci máme zdrojové kódy, stačí hned za připojení k MySQL přidat SQL příkaz SET NAMES 'znaková sada' . Ten zajistí, že MySQL server bude posílat data ve znakové sadě, kterou aplikace používá. Pro češtinu máme opět čtyři možnosti: utf8 , latin2 , cp1250 a ucs2 .

Můj první modul pro Drupal

Jakmile jsem se rozhodl používat Drupal pro české stránky o phpMyAdminovi , bylo mi jasné, že si časem nevystačím s tím co už pro něj někdo napsal, ale budu muset vytvořit něco sám. Naštěstí dokumentace k Drupalu je celkem dobrá (rozhodně patří k tomu lepšímu co se mezi open source vyskytuje), tak vytvoření jednoduchého modulu nebylo až tak složité.

Chtěl jsem na phpMyAdmin.cz začít používat některé ze služeb měřící návštěvnost. Místo upravování šablon mi jako lepší řešení přišlo napsat si modul, který udělá co potřebuju a nebudu muset zasahovat do originálních šablon (a tím se vyhnu problémům při aktualizaci). Vzal jsem existující modul pro Google analytics, protože mi připadal podobný, ale nakonec toho z něj moc nezůstalo :-). Asi po hodině už jsem měl verzi, která fungovala celkem dobře a tak jsem si říkal, že by nebylo od věci to někde zveřejnit.

Jako logické místo se jeví Drupal.org a i tento postup je tam vzorně zdokumentován. Žádost o CVS přístup byla vyřízena během pár dnů, a já už mohl commitovat svůj první kód do jejich repository. K mému překvapení commity někdo sleduje, protože asi hodinu po prvním commitu už mi přišla reakce od někoho, že přesně takový modul potřeboval :-). Tak jsem jenom dokončil vyčištění a další den vyšla první verze modulu Český audit .