<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Personal Blog of Emre Yaşar &#187; mysql</title>
	<atom:link href="http://www.yasars.com/index.php/tag/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.yasars.com</link>
	<description>A bit technical, a bit lifestyle..</description>
	<lastBuildDate>Tue, 27 Apr 2010 19:55:21 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>MySQL ve DNS</title>
		<link>http://www.yasars.com/index.php/2009/12/07/mysql-ve-dns/</link>
		<comments>http://www.yasars.com/index.php/2009/12/07/mysql-ve-dns/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 20:34:25 +0000</pubDate>
		<dc:creator>Admin - Emre Yasar</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[blocked because of many connection errors]]></category>
		<category><![CDATA[flush-hosts]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysql dns]]></category>
		<category><![CDATA[skip_name_resolve]]></category>

		<guid isPermaLink="false">http://www.yasars.com/?p=332</guid>
		<description><![CDATA[MySQL&#8217;de yetkilendirme kullanıcı@host şeklinde yapılmakta. Yani kullanıcının hangi host&#8217;dan MySQL&#8217;e erişebileceği de belirlenmekte.
Bu yetkilendirmeyi bazen  emre@192.168.1.1 bazen de emre@testserver.ford.com.tr şeklinde tanımlarız.
Bu iki yöntemin avantaj ve dezavantajlarından biraz bahsedelim:


Hostname ile yetkilendirmenin avantajını şu şekilde açıklayabiliriz:

Sunucunun IP&#8217;sini değiştirmeniz gerektiğinde tüm MySQL yetkilerini teker teker değiştirmek yerine DNS kaydında (veya /etc/hosts dosyasında) gerekli değişikliği yapmanız yeterli olacaktır.

IP adresi [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-medium wp-image-333" title="logo-mysql" src="http://www.yasars.com/wp-content/uploads/2009/12/logo-mysql-300x218.jpg" alt="logo-mysql" width="300" height="218" />MySQL&#8217;de yetkilendirme <strong>kullanıcı@host</strong> şeklinde yapılmakta. Yani kullanıcının hangi host&#8217;dan MySQL&#8217;e erişebileceği de belirlenmekte.</p>
<p>Bu yetkilendirmeyi bazen  <strong>emre@192.168.1.1</strong> bazen de <strong>emre@testserver.ford.com.tr</strong> şeklinde tanımlarız.</p>
<p>Bu iki yöntemin avantaj ve dezavantajlarından biraz bahsedelim:</p>
<p><span id="more-332"></span></p>
<ul>
<li>Hostname ile yetkilendirmenin avantajını şu şekilde açıklayabiliriz:</li>
</ul>
<p>Sunucunun IP&#8217;sini değiştirmeniz gerektiğinde tüm MySQL yetkilerini teker teker değiştirmek yerine DNS kaydında (veya /etc/hosts dosyasında) gerekli değişikliği yapmanız yeterli olacaktır.</p>
<ul>
<li>IP adresi ile yetkilendirmenin avantajı ise:</li>
</ul>
<p>MySQL sistemini başka bir sunucuya (DNS) doğrudan bağımlı hale getirmemiş olursunuz.</p>
<p>İlk bakışta, yönetmisel açıdan işinizi kolaylaştıracağı için ve muhtemelen her an erişilebilir durumda olması için yedekli yapıda kurduğunuz DNS sunucunuza güvendiğiniz için hostname ile yetkilendirmeyi tercih edersiniz.</p>
<p><span style="text-decoration: underline;">O zaman şu durumları da göz önünde bulundurmakta fayda var</span>:</p>
<p>MySQL, bir hostname&#8217;i çözeceği zaman öncelikle kendi host cache&#8217;ine bakar. Aradığı hostname&#8217;i host cache&#8217;inde bulamaz ise, IP adresinden hostname&#8217;i çözer, sonra hostname&#8217;den IP adresini çözer ve iki sonucu karşılaştırarak IP adresinini netleştirir.</p>
<p>MySQL sunucunuza erişen çok fazla host varsa (en basitinden 128&#8242;den fazla, çünkü MySQL host cache&#8217;i varsayılan olarak 128 host bilgisi tutar) veya DNS sunucunuz yavaş çalışıyorsa bu DNS sorguları MySQL performansınızı düşürecektir.  Özellkle MySQL veritabanınız thread-safe özelliğiyle çalışmıyorsa bu yavaşlığın çok ciddi boyutlara ulaştığını görebilirsiniz.</p>
<p><span style="text-decoration: underline;">Hostname ile yetkilendirme yaptığınızda dikkat etmeniz gereken diğer bir durum da şu olacaktır:</span></p>
<p>Şayet bir IP adresi için birden çok DNS kaydınız var ise yukarıda anlattığım DNS sorgulama mekanizması düzgün çalışmayacağı için bu IP&#8217;den MySQL sunucusuna erişmeye çalışan tüm uygulamalar aşağıdakine benzer bir hata alacaktır:</p>
<p><strong>Warning: mysql_connect(): Host &#8216;testserver.ford.com.tr&#8217; is blocked because of many connection errors; unblock with &#8216;mysqladmin flush-hosts&#8217; in</strong> /srv/www/htdocs/xx/xxx.php on line xxx</p>
<p>Bu hatayı aldığınızda doğal olarak ilk yapacağınız şey <strong>mysqladmin flush-hosts</strong> yapmak olacaktır. Kısa bir süre için de olsa problemin düzeldiğinizi göreceksiniz ama çok sürmeyecek bu durum.</p>
<p><strong>emreyasar@mysqlserver:~&gt; host 192.168.1.1</strong> yazdığınızda<br />
1.1.168.192.in-addr.arpa domain name pointer testserver.ford.com.tr.<br />
1.1.168.192.in-addr.arpa domain name pointer test1.ford.com.tr.<br />
1.1.168.192.in-addr.arpa domain name pointer test2.ford.com.tr.</p>
<p>gibi birden çok sonuç alıyorsanız MySQL 192.168.1.1 IP&#8217;sinden gelen istemleri güvenlik gereği bloklayacaktır.</p>
<p><strong>Peki bu durumda ne yapmalıyız?</strong></p>
<p>MySQL sunucunusunun <strong>/etc/my.cnf</strong> dosyasına  <strong>skip_name_resolve</strong> satırını ekleyip MySQL servisini yeniden başlatın.</p>
<p>Problemin çözüldüğünü göreceksiniz.</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">
<div class="SYN_ROW">
<div id="syn_row5" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT">MySQL&#8217;de yetkilendirme kullanıcı@sunucu şeklinde yapılmakta. Yani kullanıcının hangi host&#8217;dan MySQL&#8217;e erişebileceği de belirlenmekte.</span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="6" />
<input id="syn_ctrl6" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row6" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT"> </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="7" />
<input id="syn_ctrl7" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row7" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT"> </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="8" />
<input id="syn_ctrl8" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row8" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT">Bu yetkilendirmeyi bazen  emre@192.168.1.1 bazen de emre@testserver.ford.com.tr şeklinde tanımlarız.</span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="9" />
<input id="syn_ctrl9" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row9" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT"> </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="10" />
<input id="syn_ctrl10" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row10" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT"> </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="11" />
<input id="syn_ctrl11" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row11" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT">Bu iki yöntemin avantaj ve dezavantajlarından biraz bahsedelim:</span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="12" />
<input id="syn_ctrl12" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row12" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT"> </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="13" />
<input id="syn_ctrl13" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row13" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT">Hostname ile yetkilendirmenin avantajını şu şekilde açıklayabiliriz: </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="14" />
<input id="syn_ctrl14" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row14" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT">Sunucunun IP&#8217;sini değiştirmeniz gerektiğinde tüm MySQL yetkilerini teker teker değiştirmek yerine DNS kaydında (veya /etc/hosts dosyasında) gerekli değişikliği yapmanız yeterli olacaktır.</span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="15" />
<input id="syn_ctrl15" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row15" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT"> </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="16" />
<input id="syn_ctrl16" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row16" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT">IP adresi ile yetkilendirmenin avantajı ise:</span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="17" />
<input id="syn_ctrl17" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row17" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT">MySQL sistemini başka bir sunucuya (DNS) doğrudan bağımlı hale getirmemiş olursunuz.</span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="18" />
<input id="syn_ctrl18" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row18" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT"> </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="19" />
<input id="syn_ctrl19" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row19" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT">İlk bakışta, yönetmisel açıdan işinizi kolaylaştıracağı için ve muhtemelen her an erişilebilir durumda olması için yedekli yapıda kurduğunuz DNS sunucunuza güvendiğiniz için hostname ile yetkilendirmeyi tercih edersiniz. </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="20" />
<input id="syn_ctrl20" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row20" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT"> </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="21" />
<input id="syn_ctrl21" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row21" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT">O zaman şu durumları da göz önünde bulundurmakta fayda var:</span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="22" />
<input id="syn_ctrl22" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row22" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT"> </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="23" />
<input id="syn_ctrl23" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row23" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT">MySQL, bir hostname&#8217;i çözeceği zaman öncelikle kendi host cache&#8217;ine bakıyor. Aradığı hostname&#8217;i host cache&#8217;inde bulamaz ise, IP adresinden hostname&#8217;i çözer, sonra hostname&#8217;den IP adresini çözer ve iki sonucu karşılaştırarak IP adresinini netleştirir.</span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="24" />
<input id="syn_ctrl24" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row24" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT"> </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="25" />
<input id="syn_ctrl25" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row25" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT">MySQL sunucunuza erişen çok fazla host varsa (en basitinden 128&#8242;den fazla) veya DNS sunucunuz yavaş çalışıyorsa bu DNS sorguları MySQL performansınızı düşürecektir.  Özellkle MySQL veritabanınız thread-safe özelliğiyle çalışmıyorsa bu yavaşlığın çok ciddi boyutlara ulaştığını farkedebilirsiniz. </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="26" />
<input id="syn_ctrl26" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row26" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT"> </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="27" />
<input id="syn_ctrl27" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row27" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT">Hostname ile yetkilendirme yaptığınızda dikkat etmeniz gereken diğer bir durum da şu olacaktır:</span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="28" />
<input id="syn_ctrl28" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row28" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT"> </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="29" />
<input id="syn_ctrl29" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row29" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT">Şayet bir IP adresi için birden çok DNS kaydınız var ise yukarıda anlattığım DNS sorgulama mekanizması düzgün çalışmayacağı için bu IP&#8217;den MySQL sunucusuna erişmeye çalışan herkes aşağıdakine benzer bir hata alacaktır:</span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="30" />
<input id="syn_ctrl30" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row30" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT"> </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="31" />
<input id="syn_ctrl31" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row31" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT">Warning: mysql_connect(): Host &#8216;testserver.ford.com.tr&#8217; is blocked because of many connection errors; unblock with &#8216;mysqladmin flush-hosts&#8217; in /srv/www/htdocs/xx/xxx.php on line xxx </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="32" />
<input id="syn_ctrl32" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row32" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT"> </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="33" />
<input id="syn_ctrl33" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row33" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT"> </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="34" />
<input id="syn_ctrl34" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row34" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT">Bu hatayı aldığınızda doğal olarak ilk yapacağınız şey mysqladmin flush-hosts yapmak olacaktır. Kısa bir süre için de olsa problemin düzeldiğinizi göreceksiniz ama çok sürmeyecek bu durum.</span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="35" />
<input id="syn_ctrl35" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row35" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT"> </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="36" />
<input id="syn_ctrl36" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row36" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT"> </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="37" />
<input id="syn_ctrl37" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row37" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT"> </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="38" />
<input id="syn_ctrl38" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row38" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT">emreyasar@mysqlserver:~<span class="HTML_CHA">&amp;gt;</span> host 192.168.1.1       yazdığınızda </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="39" />
<input id="syn_ctrl39" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row39" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT">1.1.168.192.in-addr.arpa domain name pointer testserver.ford.com.tr.</span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="40" />
<input id="syn_ctrl40" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row40" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT">1.1.168.192.in-addr.arpa domain name pointer test1.ford.com.tr.</span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="41" />
<input id="syn_ctrl41" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row41" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT">1.1.168.192.in-addr.arpa domain name pointer test2.ford.com.tr.</span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="42" />
<input id="syn_ctrl42" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row42" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT"> </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="43" />
<input id="syn_ctrl43" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row43" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT"> </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="44" />
<input id="syn_ctrl44" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row44" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT">gibi birden çok sonuç alıyorsanız MySQL 192.168.1.1 IP&#8217;sinden gelen istemleri güvenlik gereği bloklayacaktır.</span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="45" />
<input id="syn_ctrl45" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row45" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT"> </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="46" />
<input id="syn_ctrl46" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row46" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT"> </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="47" />
<input id="syn_ctrl47" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row47" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT">Peki bu durumda ne yapmalıyız?</span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="48" />
<input id="syn_ctrl48" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row48" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT"> </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="49" />
<input id="syn_ctrl49" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row49" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT"> </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="50" />
<input id="syn_ctrl50" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row50" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT">Basit:  MySQL sunucunusunun /etc/my.cnf dosyasına  skip_name_resolve satırını ekleyip MySQL servisini yeniden başlatın.</span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="51" />
<input id="syn_ctrl51" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row51" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT"> </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="52" />
<input id="syn_ctrl52" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row52" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT"> </span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="53" />
<input id="syn_ctrl53" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row53" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT">Artık yukarıdaki hatayı almayacaksınız.</span></div>
</div>
<div class="SYN_ROW">
<div class="SYN_LNB">
<input class="SYN_LNN" type="label" value="54" />
<input id="syn_ctrl54" class="SYN_BCH" type="label" value="-" /></div>
<div id="syn_row54" class="SYN_TXT" style="text-indent: -0.5em; padding-left: 1em;"><span class="HTML_TXT"><br />
</span></div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.yasars.com/index.php/2009/12/07/mysql-ve-dns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sysbench ile MySQL Performans Karşılaştırması</title>
		<link>http://www.yasars.com/index.php/2009/08/18/sysbench-ile-mysql-performans-tespiti/</link>
		<comments>http://www.yasars.com/index.php/2009/08/18/sysbench-ile-mysql-performans-tespiti/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 14:19:19 +0000</pubDate>
		<dc:creator>Admin - Emre Yasar</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[benchmarking]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysql performance tuning]]></category>
		<category><![CDATA[sysbench]]></category>

		<guid isPermaLink="false">http://www.yasars.com/?p=125</guid>
		<description><![CDATA[MySQL veritabanı yönetiyorsanız en iyi verimi alabilmek için  &#8220;performance tuning&#8221; işlerine  oldukça zaman harcamışsınızdır.
Yapılan parametrik değişikliklerin MySQL veritabanınızın performansını ne kadar değiştirdiğini veya iyileştirip iyileştirmediğini veritabanınızı kullanan uygulamalarınızın hızından net olarak kestiremeyebilirsiniz.
İşte SYSBENCH bu özelliği ile öne çıkan bir benchmark aracı.
Sysbench, cpu, bellek, disk i/o gibi alışılagelmiş değerler ile ilgili testler yaptığı gibi tüm bu [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-medium wp-image-130" title="sysbench1_emreyasar" src="http://www.yasars.com/wp-content/uploads/2009/08/sysbench1_emreyasar-300x210.jpg" alt="sysbench1_emreyasar" width="300" height="210" /><strong>MySQL veritabanı yönetiyorsanız en iyi verimi alabilmek için  &#8220;performance tuning&#8221; işlerine  oldukça zaman harcamışsınızdır.</strong></p>
<p>Yapılan parametrik değişikliklerin MySQL veritabanınızın performansını ne kadar değiştirdiğini veya iyileştirip iyileştirmediğini veritabanınızı kullanan uygulamalarınızın hızından net olarak kestiremeyebilirsiniz.</p>
<p>İşte SYSBENCH bu özelliği ile öne çıkan bir benchmark aracı.</p>
<p>Sysbench, cpu, bellek, disk i/o gibi alışılagelmiş değerler ile ilgili testler yaptığı gibi tüm bu parametrelerden ve ayrıca veritabanı konfigürasyonundan doğrudan etkilenen MySQL veritabanının performansı ile ilgili de testler gerçekleştirebiliyor.</p>
<p><span id="more-125"></span></p>
<p>Uygulamanın resmi web sitesine <a href="http://sysbench.sourceforge.net/index.html" target="_blank">sysbench.sourceforge.net</a> adresinden erişilebilir.</p>
<p>Kaynak kodu web sitesinden indirdikten sonra derleyip kuruyorsunuz.</p>
<p>Her kaynaktan kurma işleminde yapılan ./configure; make; make install kurulum için yapmanız gereken tek şey (ama tabi pratikte bu böyle).</p>
<p>Gerekli olacak gcc, make gibi development paketlerinin haricinde başka paketlere de ihtiyaç duyabilirsiniz. Ayrıca kullandığınız Linux/Unix dağıtımına göre ./configure kullanırken parametre girmeniz gerekebilir.</p>
<p>Kurulum aşamasında işler pek yolunda gitmezse autogen.sh betiğini kullanmayı da bir deneyin.</p>
<p>Kurulum sonrasında veritabanınızda performans testleri yapmaya başlayabilirsiniz.</p>
<ul>
<li>sysbench &#8211;test=oltp &#8211;mysql-user=kullanici &#8211;mysql-password=sifre &#8211;mysql-db=test &#8211;mysql-host=localhost &#8211;mysql-table-engine=myisam &#8211;mysql-socket=/var/lib/mysql/mysql.sock &#8211;oltp-table-size=100000 prepare</li>
</ul>
<ul>
<li>sysbench &#8211;test=oltp &#8211;num-threads=16 &#8211;max-requests=100000 &#8211;oltp-table-size=100000 &#8211;mysql-socket=/var/lib/mysql/mysql.sock &#8211;mysql-db=test &#8211;oltp-read-only run</li>
</ul>
<p>Yukarıdaki komutları kullanarak testdb isimli veritabanınızda teste başlayabilirsiniz.</p>
<p>Komuttan da anlaşılacağı gibi ilk komut test için gerekl bench&#8217;i hazırlıyor ikinci komut ise testi çalıştırıyor.</p>
<p>Birinci komut seçilen veritabanında varsayılan olarak sbtest isimli bir table oluşturuyur ve yine varsayılan olarak 10000 satırlık bir rasgele veri yığını oluşturuyor. İsterseniz bu değerleri parametrik olarak değiştirebiliyorsunuz. Örneği bu testte 100000 transaction gerçekleştirilecek.</p>
<p>İkinci komut ise bu yığından 100000 adet select işlemi yapıyor.</p>
<p>Test işlemleri bittikten sonra oluşturulan tabloyu elle silebilir veya</p>
<ul>
<li>sysbench &#8211;test=oltp &#8211;mysql-user=kullanici &#8211;mysql-password=sifre &#8211;mysql-db=test &#8211;mysql-host=localhost &#8211;mysql-table-engine=myisam &#8211;mysql-socket=/var/lib/mysql/mysql.sock &#8211;oltp-table-size=100000 cleanup</li>
</ul>
<p>komutunu kullanabilirsiniz.</p>
<p>Tool&#8217;un dokümantasyonu çok yeterli olmamakla birlikte, biraz zaman harcayarak işinize yarayacak test parametrelerini oluşturmanız mümükün.</p>
<p>Küçük bir nokta.. Dokümantasyonda</p>
<p>sysbench &#8211;test=oltp &#8211;mysql-table-type=myisam &#8230;..</p>
<p>şeklinde bir yazımla karşılaşacaksınız.</p>
<p>Fakat &#8211;mysql-table-type şeklinde bir parametre olmadığını söyleyen bir hata alacaksınız.</p>
<p>Olması gereken parametre, yukarıdaki örnekte de görüldüğü gibi &#8211;mysq-table-engine olmalı.</p>
<p>Karşılaşırsanız şaşırmayın..</p>
<p>Son olarak, mysql performans ayarları ile çok uğraşıyorsanız, Sysbench çok sok kullanacağınız bir araç olacaktır.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yasars.com/index.php/2009/08/18/sysbench-ile-mysql-performans-tespiti/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cacti &#8211; The complete RRDtool-based graphing solution</title>
		<link>http://www.yasars.com/index.php/2009/08/14/cacti-the-complete-rrdtool-based-graphing-solution/</link>
		<comments>http://www.yasars.com/index.php/2009/08/14/cacti-the-complete-rrdtool-based-graphing-solution/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 19:32:21 +0000</pubDate>
		<dc:creator>Admin - Emre Yasar</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[cacti]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[rrd-tool]]></category>
		<category><![CDATA[snmp]]></category>

		<guid isPermaLink="false">http://www.yasars.com/?p=34</guid>
		<description><![CDATA[Cacti, SNMP (Simple Network Management Protocol) protokolünü kullanarak sunucularınızdan işletim sistemi ve donanım bazında bilgileri toplayan, bu bilgileri grafik olarak web’de yayınlayan GNU lisanslı bir web uygulamasıdır.
Cacti kurulumunda sunucu ve hostlarda (göreceli olarak host) adım adım yapılması gereken işleri aşağıda bulabilirsiniz.
Ön gereksinimler:
Apache/Apache2 web sunucusu, php, php-mysql, php-snmp, mysql, mysql-server, net-snmp, rrdtool.
Yukarıdaki paketlerin kurulu olduğundan ve [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-medium wp-image-35 alignright" title="cacti1_emreyasar" src="http://www.yasars.com/wp-content/uploads/2009/08/cacti1_emreyasar-201x300.jpg" alt="cacti1_emreyasar" width="201" height="300" /><strong>C</strong><strong>acti, SNMP (Simple Network Management Protocol) protokolünü kullanarak sunucularınızdan işletim sistemi ve donanım bazında bilgileri toplayan, bu bilgileri grafik olarak web’de yayınlayan GNU lisanslı bir web uygulamasıdır.</strong></p>
<p>Cacti kurulumunda sunucu ve hostlarda (göreceli olarak host) adım adım yapılması gereken işleri aşağıda bulabilirsiniz.</p>
<p>Ön gereksinimler:</p>
<p>Apache/Apache2 web sunucusu, php, php-mysql, php-snmp, mysql, mysql-server, net-snmp, rrdtool.</p>
<p>Yukarıdaki paketlerin kurulu olduğundan ve ilgili servislerinin çalışıyor olduğundan emin olduktan sonra kurulum adımlarına geçilir.</p>
<p><span id="more-34"></span></p>
<p>Cacti_server:~ # cp cacti-versXX.tar /srv/www/htdocs</p>
<p>Cacti_server:~ # cd /srv/www/htdocs</p>
<p>Cacti_server:/srv/www/htdocs # tar xvf cacti-versXX.tar</p>
<p>Cacti_server:/srv/www/htdocs # mv cacti-versXX cacti</p>
<p>Cacti_server:/srv/www/htdocs /cacti# useradd -m cactiuser</p>
<p>Cacti_server:/srv/www/htdocs /cacti# passwd cactiuser</p>
<p>Cacti_server:/srv/www/htdocs /cacti# mysqladmin -h Cacti_server -p -u root create cacti</p>
<p>Cacti_server:/srv/www/htdocs /cacti# mysql -p -h Cacti_server -u root cacti &lt; cacti.sql</p>
<p>Cacti_server:/srv/www/htdocs /cacti# mysql -p -h Cacti_server -u root</p>
<p>mysql&gt; GRANT ALL ON cacti.* TO cactiuser@Cacti_server IDENTIFIED BY ’şifre’;</p>
<p>mysql&gt; flush privileges;</p>
<p>Cacti_server:/srv/www/htdocs /cacti# chown -R cactiuser rra/ log/</p>
<p>Cacti_server:/srv/www/htdocs /cacti# vi include/config.php</p>
<p>$database_default = &#8220;cacti&#8221;;</p>
<p>$database_hostname = &#8220;Cacti_server&#8221;;</p>
<p>$database_username = &#8220;cactiuser&#8221;;</p>
<p>$database_password = &#8220;şifre&#8221;;</p>
<p>Cacti_server:/srv/www/htdocs /cacti# vi /etc/crontab</p>
<p>*/5 * * * * cactiuser php /srv/www/htdocs/cacti/poller.php &gt; /dev/null 2&gt;&amp;1</p>
<p>Sunucu tarafında cacti kurulumunu tamamlamış olduk. Şimdi host tarafında yapılması gerekenlere bir göz atalım.</p>
<p>Cacti’ye Veri Gönderecek Host’ta Yapılması Gereken Ayarlar</p>
<p align="center">
<p>server1:# vi /etc/snmpd.conf</p>
<p>Dosya aşağıdaki şekilde düzenlenir. SNMP v1 ve v2c için aşağıdaki konfigürasyon yeterli olacaktır. SNMP v3 için kullanıcı adı ve şifre tanımlamaları yapılması gereklidir.</p>
<p>rocommunity public 192.168.1.10</p>
<p>(public: snmp community adı</p>
<p>192.168.1.10: snmp paketlerinin gönderileceği, yani cacti kurulu olan sunucu ip’si)</p>
<p>·         server1:# /etc/init.d/snmpd restart</p>
<p>·         cacti kurulu sunucu tarafında aşağıdaki komut girilerek host tarafından SNMP paketlerinin gelip gelmediği kontrol edilir. Timeout olmamalıdır.</p>
<p>Cacti_server:~ # snmpwalk -v 2c -c public server1.ford.com.tr system</p>
<p>Sunucu veya hostlarda web browser açarak aşağdaki URL&#8217;yi girdiğinizde, fırından yeni çıkmış Cacti&#8217;nizi görebilirsiniz. Bundan sonra grafik ortamda cihaz eklemek, cihazda izlenecek durumları belirlemek gibi işlemleri gerçekleştirmek gerekiyor. Orası size kalmış. Yine de yardım istiyorsanız ( <a href="http://www.cacti.net/documentation.php">http://www.cacti.net/documentation.php</a></p>
<p><a href="http://192.168.1.10/cacti">http://192.168.1.10/cacti</a></p>
<p>(192.168.1.10 cacti kurulu sunucunun ip adresidir. )</p>
<p>SNMP protokolünün güvenlik zaafları vardır. Özellikle SNMP v1 veya v2c kullanıyor iseniz çok dikkatli olmanız gereklidir. SNMP v3 kullanmak, default portu (161) değiştirmek, SNMP taleplerine cevap verilecek sunucuların ip adreslerini konfigürasyon dosyalarına yapmak, SNMP&#8217;yi nispeten güvenli bir protokol haline getirmekte.</p>
<p>Linux host’larda snmpd.conf dosyasında  aşağıdaki değişiklikleri yaparak daha güvenli bir SNMP’ye sahip olabilirsiniz.</p>
<p>&#8230;</p>
<p>rouser emreyasar auth</p>
<p>createUser emreyasar MD5 11223344 DES # Kullanıcı şifresi minimum 8 karakter olmalıdır</p>
<p>agentaddress 16100 #161 olan default port yerine 16100 kullanılacak</p>
<p>&#8230;</p>
<p>Bildiğim kadarıyla Microsoft Windows işletim sistemlerinde SNMP v3 destekleyen WMI bulunmamakta. Yani umduğunuz kadar güvenli bir SNMP konfigürasyonu yapamayabilirsiniz Windows’larda. Tabi Windows kullanırken kendinizi güvende hissetmediğiniz ilk an olmayacağı için çok da kafanıza takmayacaksınız diye düşünüyorum Ya da 3rd Party yazılımlarla bu açığınızı kapatabilirsiniz..</p>
<p>Son olarak da webden Cacti&#8217;ye login olurken kullandığınız admin şifresini resetlemeniz gerekirse ne yapmanız gerektiğini gösteriyim.</p>
<p># mysql -u root -p cacti</p>
<p>mysql&gt; update user_auth set password=md5(&#8217;yeni_sifre&#8217;) where username=&#8217;admin&#8217;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yasars.com/index.php/2009/08/14/cacti-the-complete-rrdtool-based-graphing-solution/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Broken MySQL Replication !!!</title>
		<link>http://www.yasars.com/index.php/2009/07/28/broken-mysql-replication/</link>
		<comments>http://www.yasars.com/index.php/2009/07/28/broken-mysql-replication/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 20:44:26 +0000</pubDate>
		<dc:creator>Admin - Emre Yasar</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[broken mysql]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[replication]]></category>

		<guid isPermaLink="false">http://www.yasars.com/?p=222</guid>
		<description><![CDATA[This morning a MySQL issue welcomed me at the office.
After a bit control I found out the reason of the problem.
A full /var/lib/mysql partition caused to dead of mysql daemon.
MySQL began to operating normally after supplying free space and recovering 3 corrupted tables.
Everything was fine until  I noticed the broken replication.

when I run
mysql&#62; show slave [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-medium wp-image-223" title="emreyasar_broken" src="http://www.yasars.com/wp-content/uploads/2009/09/emreyasar_broken-225x300.jpg" alt="emreyasar_broken" width="158" height="210" />This morning a MySQL issue welcomed me at the office.</p>
<p>After a bit control I found out the reason of the problem.</p>
<p>A full /var/lib/mysql partition caused to dead of mysql daemon.</p>
<p>MySQL began to operating normally after supplying free space and recovering 3 corrupted tables.</p>
<p>Everything was fine until  I noticed the broken replication.</p>
<p><span id="more-222"></span></p>
<p>when I run</p>
<p><strong>mysql&gt; show slave status \G</strong></p>
<p>I got an error message like this:</p>
<ul>
<li>Could not parse relay log event entry. The  possible reasons are: the master&#8217;s binary log is corrupted (you can check this  by running &#8216;mysqlbinlog&#8217; on the binary log), the slave&#8217;s relay log is corrupted  (you can check this by running &#8216;mysqlbinlog&#8217; on the relay log), a network  problem, or a bug in the master&#8217;s or slave&#8217;s MySQL code. If you want to check  the master&#8217;s binary log or slave&#8217;s relay log, you will be able to know their  names by issuing &#8216;SHOW SLAVE STATUS&#8217; on this slave.</li>
</ul>
<p>And there were an error at mysqld.log as below:</p>
<ul>
<li>[Warning] Neither &#8211;relay-log nor  &#8211;relay-log-index were used; so replication may break when this MySQL server  acts as a slave and has his hostname changed!! Please use  &#8216;&#8211;relay-log=*****-relay-bin&#8217; to avoid this problem.</li>
</ul>
<p>I restart mysqld on both master and slave but I were getting the same errors again.</p>
<p>And then I tried      <strong>stop slave; </strong> and     <strong>start slave;</strong> but the problem were still present.</p>
<p>It was sad but true.  It was time to setup the replicate server again.</p>
<p>And I decided make a last try:</p>
<ul>
<li>stop slave;</li>
<li>show slave status \G</li>
<li><strong>reset slave;</strong></li>
<li>start slave;</li>
<li>show slave status;</li>
</ul>
<p>And everything was OK.</p>
<p><strong>reset slave</strong> command was the golden key..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yasars.com/index.php/2009/07/28/broken-mysql-replication/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
