<?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>Racker Hacker &#187; development</title>
	<atom:link href="http://rackerhacker.com/tag/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://rackerhacker.com</link>
	<description>Words of wisdom from a server administrator</description>
	<lastBuildDate>Wed, 16 May 2012 12:55:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>mysql-json-bridge: a simple JSON API for MySQL</title>
		<link>http://rackerhacker.com/2012/03/28/mysql-json-bridge-a-simple-json-api-for-mysql/</link>
		<comments>http://rackerhacker.com/2012/03/28/mysql-json-bridge-a-simple-json-api-for-mysql/#comments</comments>
		<pubDate>Thu, 29 Mar 2012 02:34:53 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[rackspace]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=3248</guid>
		<description><![CDATA[My quest to get better at Python led me to create a new project on GitHub. It's called mysql-json-bridge and it's ready for you to use. Why do we need a JSON API for MySQL? The real need sprang from a situation I was facing daily at Rackspace. We have a lot of production and [...]<p><a href="http://rackerhacker.com/2012/03/28/mysql-json-bridge-a-simple-json-api-for-mysql/">mysql-json-bridge: a simple JSON API for MySQL</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>My quest to get better at <a href="http://python.org">Python</a> led me to create a new project on GitHub.  It's called <a href="https://github.com/rackerhacker/mysql-json-bridge">mysql-json-bridge</a> and it's ready for you to use.</p>
<p><b>Why do we need a JSON API for MySQL?</b><br />
The real need sprang from a situation I was facing daily at <a href="http://rackspace.com/">Rackspace</a>.  We have a lot of production and pre-production environments which are in flux but we need a way to query data from various MySQL servers for multiple purposes.  Some folks need data in ruby or python scripts while others need to drag in data with .NET and Java.  Wrestling with the various adapters and all of the user privileges on disparate database servers behind different firewalls on different networks was less than enjoyable.</p>
<p>That's where this bridge comes in.</p>
<p>The bridge essentially gives anyone the ability to talk to multiple database servers across different environments by talking to a single endpoint with easily configurable security and encryption.  As long as the remote user can make an HTTP POST and parse some JSON, they can query data from multiple MySQL endpoints.</p>
<p><b>How does it work?</b><br />
It all starts with a simple HTTP POST.  I've become a big fan of the Python <a href="http://python-requests.org">requests</a> module.  If you're using it, this is all you need to submit a query:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">import</span> requests
payload = <span style="color: black;">&#123;</span><span style="color: #483d8b;">'sql'</span>: <span style="color: #483d8b;">'SELECT * FROM some_tables WHERE some_column=some_value'</span><span style="color: black;">&#125;</span>
url = <span style="color: #483d8b;">&quot;http://localhost:5000/my_environment/my_database&quot;</span>
r = requests.<span style="color: black;">post</span><span style="color: black;">&#40;</span>url, data=payload<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> r.<span style="color: black;">text</span></pre></div></div>

<p>The bridge takes your query and feeds it into the corresponding MySQL server.  When the results come back, they're converted to JSON and returned via the same HTTP connection.</p>
<p><b>What technology does it use?</b><br />
<a href="http://flask.pocoo.org/">Flask</a> does the heavy lifting for the HTTP requests and <a href="https://github.com/facebook/tornado/blob/master/tornado/database.py">Facebook's Tornado database class</a> wraps the <a href="http://mysql-python.sourceforge.net/">MySQLdb</a> module in something a little more user friendly.  Other than those modules, <a href="http://pyyaml.org/">PyYAML</a> and <a href="http://python-requests.org">requests</a> are the only other modules not provided by the standard Python libraries.</p>
<p><b>Is it fast?</b><br />
Yes.  I haven't done any detailed benchmarks on it yet, but the overhead is quite low even with a lot of concurrency.  The biggest slowdowns come from network latency between you and the bridge or between the bridge and the database server.  Keep in mind that gigantic result sets will take a longer time to transfer across the network and get transformed into JSON.</p>
<p><b>I found a bug.  I have an idea for an improvement.  You're terrible at Python.</b><br />
All feedback (and every pull request) is welcome.  I'm still getting the hang of Python (hey, I've only been writing in it seriously for a few weeks!) and I'm always eager to learn a new or better way to accomplish something.  Feel free to create an issue in GitHub or submit a pull request with a patch.</p>
<p><a href="http://rackerhacker.com/2012/03/28/mysql-json-bridge-a-simple-json-api-for-mysql/">mysql-json-bridge: a simple JSON API for MySQL</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2012/03/28/mysql-json-bridge-a-simple-json-api-for-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compare commits between two git branches</title>
		<link>http://rackerhacker.com/2012/03/15/compare-commits-between-two-git-branches/</link>
		<comments>http://rackerhacker.com/2012/03/15/compare-commits-between-two-git-branches/#comments</comments>
		<pubDate>Thu, 15 Mar 2012 15:00:24 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=3104</guid>
		<description><![CDATA[I found myself stuck in a particularly nasty situation a few weeks ago where I had two git branches with some commits that were mixed up. Some commits destined for a branch called development ended up in master. To make matters worse, development was rebased on top of master and the history was obviously mangled. [...]<p><a href="http://rackerhacker.com/2012/03/15/compare-commits-between-two-git-branches/">Compare commits between two git branches</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>I found myself stuck in a particularly nasty situation a few weeks ago where I had two git branches with some commits that were mixed up.  Some commits destined for a branch called development ended up in master.  To make matters worse, development was rebased on top of master and the history was obviously mangled.</p>
<p>My goal was to find out which commits existed in development but didn't exist anywhere in master.  From there, I needed to find out which commits existed in master that didn't exist in development.  That would give me all of the commits that needed to be in the development branch.</p>
<p>I constructed this awful looking bash mess to figure out which commits were in development but not in master:<br />
<script src="https://gist.github.com/2034011.js?file=commitdiff.sh"></script></p>
<p>I had a list of commits that existed in development but not in master:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">965cf71 Trollface
acda854 Some patch 2
bf1f3e2 Some patch 1
db1980c Packaging</pre></div></div>

<p>From there, I could swap <code>MASTER</code> and <code>DEV</code> to figure out which commits existed in master but not in development.  Only a couple of commits showed up and these were the ones which were committed and pushed to master inadvertently.  After a couple of careful cherry picks and reversions, my branches were back to normal.</p>
<p><a href="http://rackerhacker.com/2012/03/15/compare-commits-between-two-git-branches/">Compare commits between two git branches</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2012/03/15/compare-commits-between-two-git-branches/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>New Fedora and EPEL package: httpry</title>
		<link>http://rackerhacker.com/2012/03/14/new-fedora-and-epel-package-httpry/</link>
		<comments>http://rackerhacker.com/2012/03/14/new-fedora-and-epel-package-httpry/#comments</comments>
		<pubDate>Wed, 14 Mar 2012 14:00:29 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[red hat]]></category>
		<category><![CDATA[rpm]]></category>
		<category><![CDATA[scientific linux]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=3224</guid>
		<description><![CDATA[A fellow Racker showed me httpry about five years ago and I've had in my toolbox as a handy way to watch HTTP traffic. I'd used some crazy tcpdump arguments and some bash one-liners to pull out the information I needed but I never could get the live look that I really wanted. Here's an [...]<p><a href="http://rackerhacker.com/2012/03/14/new-fedora-and-epel-package-httpry/">New Fedora and EPEL package: httpry</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>A fellow Racker showed me <a href="http://dumpsterventures.com/jason/httpry/">httpry</a> about five years ago and I've had in my toolbox as a handy way to watch HTTP traffic.  I'd used some crazy tcpdump arguments and some bash one-liners to pull out the information I needed but I never could get the live look that I really wanted.</p>
<p>Here's an example of what httpry's output looks like on a busy site like icanhazip.com:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">2012-03-13 23:29:39 186.x.x.x	192.x.x.x &gt; GET	icanhazip.com	/	HTTP/1.1	-	-
2012-03-13 23:29:39 192.x.x.x	186.x.x.x &lt; -	-	-	HTTP/1.1	200	OK
2012-03-13 23:29:39 187.x.x.x	192.x.x.x &gt; GET	icanhazip.com	/	HTTP/1.0	-	-
2012-03-13 23:29:39 192.x.x.x	187.x.x.x &lt; -	-	-	HTTP/1.0	200	OK
2012-03-13 23:29:39 188.x.x.x	192.x.x.x &gt; GET	icanhazip.com	/	HTTP/1.1	-	-
2012-03-13 23:29:39 192.x.x.x	188.x.x.x &lt; -	-	-	HTTP/1.1	200	OK
2012-03-13 23:29:39 189.x.x.x	192.x.x.x &gt; GET	icanhazip.com	/	HTTP/1.1	-	-
2012-03-13 23:29:39 192.x.x.x	189.x.x.x &lt; -	-	-	HTTP/1.1	200	OK</pre></div></div>

</pre>
<p>You can watch the requests come in and the responses go out in real time.  It even allows for BPF-style packet filters which allow you to narrow down the source and/or destination IP addresses and ports you want to watch.  You can run it as a foreground process or as a daemon depending on your needs.</p>
<p>It's now available as a <a href="https://admin.fedoraproject.org/updates/httpry">RPM package</a> for Fedora 15, 16, 17 (and rawhide) as well as EPEL 6 (for RHEL/CentOS/SL 6).</p>
<p><a href="http://rackerhacker.com/2012/03/14/new-fedora-and-epel-package-httpry/">New Fedora and EPEL package: httpry</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2012/03/14/new-fedora-and-epel-package-httpry/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>A simple guide to redundant cloud hosting</title>
		<link>http://rackerhacker.com/2010/08/17/a-simple-guide-to-redundant-cloud-hosting/</link>
		<comments>http://rackerhacker.com/2010/08/17/a-simple-guide-to-redundant-cloud-hosting/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 00:41:16 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[cloud servers]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[filesystem]]></category>
		<category><![CDATA[high availability]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[load balancing]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[rackspace]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[slicehost]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[yum]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=1771</guid>
		<description><![CDATA[Today, on my 28th birthday, I'm finally delivering on a promise to my readers which I made about two months ago. I've written a guide on how to host a web application redundantly in a cloud environment. While it's still a bit of a rough draft, it should be a good starting point for those [...]<p><a href="http://rackerhacker.com/2010/08/17/a-simple-guide-to-redundant-cloud-hosting/">A simple guide to redundant cloud hosting</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>Today, on my 28th birthday, I'm finally delivering on a promise to my readers which I made about two months ago.  I've <a href="/redundant-cloud-hosting-configuration-guide/">written a guide</a> on how to host a web application redundantly in a cloud environment.  While it's still a bit of a rough draft, it should be a good starting point for those who haven't worked in virtualized environments before.  Also, it may show some of the more experienced systems administrators a new way to do things.</p>
<p>The guide: <a href="/redundant-cloud-hosting-configuration-guide/">Redundant Cloud Hosting Guide</a></p>
<p>As always, if you find anything in the guide that needs improvement, I'm all ears. <img src='http://rackerhacker.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><a href="http://rackerhacker.com/2010/08/17/a-simple-guide-to-redundant-cloud-hosting/">A simple guide to redundant cloud hosting</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2010/08/17/a-simple-guide-to-redundant-cloud-hosting/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Legacy tty1 and block device support for Xen guests with pvops kernels</title>
		<link>http://rackerhacker.com/2010/05/14/legacy-tty1-and-block-device-support-for-xen-guests-with-pvops-kernels/</link>
		<comments>http://rackerhacker.com/2010/05/14/legacy-tty1-and-block-device-support-for-xen-guests-with-pvops-kernels/#comments</comments>
		<pubDate>Fri, 14 May 2010 13:24:34 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=1408</guid>
		<description><![CDATA[The discussions about the paravirt_ops, or "pvops", support in upstream kernels at Xen Summit 2010 last month really piqued my interest. Quite a few distribution maintainers have gone to great lengths to keep Xen domU support in their kernels and it's been an uphill battle. Some kernels, such as Ubuntu's linux-ec2 kernels, have patches from [...]<p><a href="http://rackerhacker.com/2010/05/14/legacy-tty1-and-block-device-support-for-xen-guests-with-pvops-kernels/">Legacy tty1 and block device support for Xen guests with pvops kernels</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>The discussions about the <a href="http://wiki.xensource.com/xenwiki/XenParavirtOps">paravirt_ops</a>, or "pvops", support in upstream kernels at <a href="http://www.xen.org/xensummit/xensummit_spring_2010.html">Xen Summit 2010</a> last month really piqued my interest.</p>
<p>Quite a few distribution maintainers have gone to great lengths to keep Xen domU support in their kernels and it's been an uphill battle.  Some kernels, such as Ubuntu's <a href="http://packages.ubuntu.com/lucid/linux-ec2">linux-ec2</a> kernels, have patches from 2.6.18 dragged forward into 2.6.32 and even 2.6.33.  It certainly can't be enjoyable to keep dragging those patches forward into new kernel trees.</p>
<p>The paravirt_ops support for Xen guests was added in 2.6.23 and continues to be included and improved in the latest kernel trees.  However, there are two significant problems with these new kernels if you're trying to work with legacy environments:</p>
<ul>
<li>the console is on <code>hvc0</code>, not <code>tty1</code></li>
<li>block devices are now <code>/dev/xvdX</code> rather than <code>/dev/sdX</code></li>
</ul>
<p>If you only have a few guests, these changes are generally pretty easy.  Switching the console just requires some changes to your inittab or upstart configurations.  Changing the block device names requires changes to the guest's Xen configuration file and <code>/etc/fstab</code> within the guest itself.</p>
<p>Considering the <a href="http://www.rackspacecloud.com/cloud_hosting_products/servers">amount of environments</a> I work with daily at Rackspace, changing the guest configuration is definitely not an option.  I needed a way to keep the console and block devices unchanged so that our customers could have a consistent experience on our infrastructure.</p>
<p>Luckily, <a href="http://blog.warma.dk/">Soren Hansen</a> offered to pitch in and a solution became apparent.  Through some <a href="http://lists.xensource.com/archives/html/xen-devel/2010-05/msg00712.html">relatively small patches</a>, the legacy console and block device support was available in the latest 2.6.32 version (2.6.32.12 as of this post's writing).</p>
<p>So far, I've tested x86_64 and i386 versions of 2.6.32.12 with the console and block device patches.  It's gone through its paces on Xen 3.0.3, 3.1.2, 3.3.0 and 3.4.2.  All revisions of Fedora, CentOS, Ubuntu, Debian, Gentoo and Arch made within the last two years are working well with the new kernels.</p>
<p><a href="http://rackerhacker.com/2010/05/14/legacy-tty1-and-block-device-support-for-xen-guests-with-pvops-kernels/">Legacy tty1 and block device support for Xen guests with pvops kernels</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2010/05/14/legacy-tty1-and-block-device-support-for-xen-guests-with-pvops-kernels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Boxcheck v2.0 is on the way</title>
		<link>http://rackerhacker.com/2009/02/24/boxcheck-v20-is-on-the-way/</link>
		<comments>http://rackerhacker.com/2009/02/24/boxcheck-v20-is-on-the-way/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 13:20:32 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[boxcheck]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=798</guid>
		<description><![CDATA[I've been a bit slow on new posts lately for two main reasons. First, I've been working hard with my new position at Slicehost, (I'm still with Rackspace). Also, I've thrown out the old code for Boxcheck.com and I'm re-writing it from scratch. Most of you probably know that the first version of Boxcheck threw [...]<p><a href="http://rackerhacker.com/2009/02/24/boxcheck-v20-is-on-the-way/">Boxcheck v2.0 is on the way</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://boxcheck.com/"><img class="alignright" title="Boxcheck Nannerpus" src="http://cdn.cloudfiles.mosso.com/c8031/boxchecknannerpus.jpg" alt="" width="228" height="174" /></a></p>
<p>I've been a bit slow on new posts lately for two main reasons.  First, I've been working hard with my <a href="http://www.slicehost.com/articles/2009/2/23/it-s-getting-crowded-in-here">new position at Slicehost</a>, (<a href="http://www.slicehost.com/articles/2008/10/22/big-news-today">I'm still with Rackspace</a>).  Also, I've thrown out the old code for Boxcheck.com and I'm re-writing it from scratch.</p>
<p>Most of you probably know that the first version of Boxcheck threw out some odd errors for some tests and caused confusion for those that depended on the results.  The code is being overhauled to handle errors and special cases much more efficiently.  I'm implementing multiple technologies on the back-end to make the interface simpler and easier to use.  There may also be an API that folks can script against - but I haven't gotten that far yet.</p>
<p>In short - thanks for all of your e-mails!  Boxcheck isn't going away at all.  It's going to be back soon!  If you have any questions or suggestions, feel free to give me a shout.</p>
<p><strong>UPDATE 2010-03-26:</strong> I've abandoned the project for now, but if anything changes, I'll be sure to make another post.</p>
<p><a href="http://rackerhacker.com/2009/02/24/boxcheck-v20-is-on-the-way/">Boxcheck v2.0 is on the way</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2009/02/24/boxcheck-v20-is-on-the-way/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>MySQLTuner 1.0.0 is now available</title>
		<link>http://rackerhacker.com/2008/12/01/mysqltuner-100-is-now-available/</link>
		<comments>http://rackerhacker.com/2008/12/01/mysqltuner-100-is-now-available/#comments</comments>
		<pubDate>Tue, 02 Dec 2008 00:31:43 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysqltuner]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=622</guid>
		<description><![CDATA[It has finally arrived. MySQLTuner 1.0.0 is now available for download. Major improvements include full support for MySQL 5.1 and Solaris. You can review other changes in the changelog. As always, I'd like to personally thank everyone who has made this release possible. Your efforts have provided benefits from MySQL users worldwide, and they have [...]<p><a href="http://rackerhacker.com/2008/12/01/mysqltuner-100-is-now-available/">MySQLTuner 1.0.0 is now available</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>It has finally arrived.  MySQLTuner 1.0.0 is now available for <a href="http://mysqltuner.pl/">download</a>.  Major improvements include full support for MySQL 5.1 and Solaris.  You can review other changes in the <a href="http://wiki.mysqltuner.com/Changelog">changelog</a>.</p>
<p>As always, I'd like to personally thank everyone who has made this release possible.  Your efforts have provided benefits from MySQL users worldwide, and they have shown me how rewarding it is to maintain open source software.</p>
<p><a href="http://rackerhacker.com/2008/12/01/mysqltuner-100-is-now-available/">MySQLTuner 1.0.0 is now available</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2008/12/01/mysqltuner-100-is-now-available/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Compress your web content for better performance</title>
		<link>http://rackerhacker.com/2008/09/19/compress-your-web-content-for-better-performance/</link>
		<comments>http://rackerhacker.com/2008/09/19/compress-your-web-content-for-better-performance/#comments</comments>
		<pubDate>Fri, 19 Sep 2008 17:00:47 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=479</guid>
		<description><![CDATA[Most web developers expend a lot of energy optimizing queries, reducing the overhead of functions, and streamlining their application's overall flow. However, many forget that one of the simplest adjustments is the compression of data as it leaves the web server. Luckily, mod_deflate makes this easy, and the Apache documentation has a handy initial configuration [...]<p><a href="http://rackerhacker.com/2008/09/19/compress-your-web-content-for-better-performance/">Compress your web content for better performance</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>Most web developers expend a lot of energy optimizing queries, reducing the overhead of functions, and streamlining their application's overall flow.  However, many forget that one of the simplest adjustments is the compression of data as it leaves the web server.</p>
<p>Luckily, <a href="http://httpd.apache.org/docs/2.0/mod/mod_deflate.html">mod_deflate</a> makes this easy, and the Apache documentation has a <a href="http://httpd.apache.org/docs/2.0/mod/mod_deflate.html#recommended">handy initial configuration</a> available:</p>
<p><code>&lt;Location /&gt;<br />
SetOutputFilter DEFLATE<br />
BrowserMatch ^Mozilla/4 gzip-only-text/html<br />
BrowserMatch ^Mozilla/4\.0[678] no-gzip<br />
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html<br />
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary<br />
Header append Vary User-Agent env=!dont-vary<br />
&lt;/Location&gt;</code></p>
<p>This configuration will compress everything except for images.  Of course, you can't test this with curl, but you can test it with Firefox and <a href="https://addons.mozilla.org/en-US/firefox/addon/3829">LiveHTTPHeaders</a>.  If you don't have Firefox handy, you can try a very handy <a href="http://www.gidnetwork.com/tools/gzip-test.php">web application</a> that will give you the statistics about the compression of your site's data.</p>
<p><a href="http://rackerhacker.com/2008/09/19/compress-your-web-content-for-better-performance/">Compress your web content for better performance</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2008/09/19/compress-your-web-content-for-better-performance/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Screencast: Write a PHP script to query MySQL</title>
		<link>http://rackerhacker.com/2008/06/04/screencast-write-a-php-script-to-query-mysql/</link>
		<comments>http://rackerhacker.com/2008/06/04/screencast-write-a-php-script-to-query-mysql/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 21:15:43 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[screencasts]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=305</guid>
		<description><![CDATA[I've discovered one of the most awesome applications for a Mac called ScreenFlow (#3 on my list after #1 TextMate and #2 Adium and I decided to put it to use for my first screencast. This screencast will teach you how to write a basic PHP script that will query data in MySQL. It is [...]<p><a href="http://rackerhacker.com/2008/06/04/screencast-write-a-php-script-to-query-mysql/">Screencast: Write a PHP script to query MySQL</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p><object width="400" height="300" class="alignright"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=1178187&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://www.vimeo.com/moogaloop.swf?clip_id=1178187&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="250"></embed></object></p>
<p>I've discovered one of the most awesome applications for a Mac called <a href="http://www.varasoftware.com/products/screenflow/">ScreenFlow</a> (#3 on my list after #1 <a href="http://macromates.com/">TextMate</a> and #2 <a href="http://adiumx.com/">Adium</a> and I decided to put it to use for my first screencast.</p>
<p>This screencast will teach you how to write a basic PHP script that will query data in MySQL.  It is designed for users who are familiar with Linux but are just getting started with PHP.  Here are the basic parts of the screencast:</p>
<p>» Import a MySQL dump file<br />
» Connect to MySQL with PHP<br />
» Select a default database<br />
» Issue a query and retrieve results<br />
» Style the rows retrieved into a table with alternating row colors</p>
<p><a href="http://cdn.cloudfiles.mosso.com/c8031/PHPandMySQL.mov">Download the screencast in Quicktime format (80.9MB)</a></p>
<p><strong>NEW:</strong> <a href="http://vimeo.com/1178187">Uploaded the video to Vimeo as well.</a></p>
<p>As always, your comments are welcome.  This is my first screencast, and I'm sure I can make some improvements on future videos.  Please let me know what I can change to make these screencasts better for you.</p>
<p><a href="http://rackerhacker.com/2008/06/04/screencast-write-a-php-script-to-query-mysql/">Screencast: Write a PHP script to query MySQL</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2008/06/04/screencast-write-a-php-script-to-query-mysql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://rackerhacker.com/wp-content/screencasts/PHPandMySQL.mov" length="84839968" type="video/quicktime" />
		</item>
		<item>
		<title>MySQLTuner is the Debian Package of the Day!</title>
		<link>http://rackerhacker.com/2008/05/28/mysqltuner-is-the-debian-package-of-the-day/</link>
		<comments>http://rackerhacker.com/2008/05/28/mysqltuner-is-the-debian-package-of-the-day/#comments</comments>
		<pubDate>Thu, 29 May 2008 02:23:30 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=302</guid>
		<description><![CDATA[I just received a Google Alert about MySQLTuner being the Debian Package of the Day! MySQLTuner is the Debian Package of the Day! is a post from: Major Hayden's Racker Hacker blog. Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.<p><a href="http://rackerhacker.com/2008/05/28/mysqltuner-is-the-debian-package-of-the-day/">MySQLTuner is the Debian Package of the Day!</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>I just received a <a href="http://google.com/alerts">Google Alert</a> about MySQLTuner being the <a href="http://potd.redsymbol.net/?p=mysqltuner">Debian Package of the Day</a>!</p>
<p><a href="http://rackerhacker.com/2008/05/28/mysqltuner-is-the-debian-package-of-the-day/">MySQLTuner is the Debian Package of the Day!</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2008/05/28/mysqltuner-is-the-debian-package-of-the-day/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Parallels Summit 2008 - Day 1</title>
		<link>http://rackerhacker.com/2008/05/19/parallels-summit-2008-day-1/</link>
		<comments>http://rackerhacker.com/2008/05/19/parallels-summit-2008-day-1/#comments</comments>
		<pubDate>Tue, 20 May 2008 03:52:38 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[plesk]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=301</guid>
		<description><![CDATA[I'm really enjoying the Parallels Summit in Washington D.C. this week. The folks from Parallels have been great, and the vendors we have met are selling some pretty tremendous products. Lots of folks have been asking for a summary of what's going on after my Twitter posts appeared earlier today. Here's the latest information I've [...]<p><a href="http://rackerhacker.com/2008/05/19/parallels-summit-2008-day-1/">Parallels Summit 2008 - Day 1</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>I'm really enjoying the <a href="http://www.parallels.com/en/summit/">Parallels Summit in Washington D.C.</a> this week.  The folks from Parallels have been great, and the vendors we have met are selling some pretty tremendous products.</p>
<p>Lots of folks have been asking for a summary of what's going on after my <a href="http://twitter.com/RackerHacker/">Twitter posts</a> appeared earlier today.  Here's the latest information I've seen and heard today:</p>
<p><strong>Parallels Development Strategy</strong><br />
&raquo; Create an SMB edition, solidity the Application Packaging Standard (APS), and further integrate billing<br />
&raquo; 80+ Research and development engineers currently work on Plesk products<br />
&raquo; Increase density and make a more useable API<br />
&raquo; Make Plesk the dominant panel through integration, SaaS deployments and scaling</p>
<p><strong>Plesk 8 Series</strong><br />
&raquo; Plesk 8.4 brought DomainKeys and additional features<br />
&raquo; Odd point revisions will contain minor bug fixes while even ones will contain new features<br />
&raquo; Plesk 8.6 will have IPv6 support, full ModernBill integration and the APS software catalog</p>
<p><strong>Plesk 9 Series</strong><br />
&raquo; Reseller level accounts will be available, and they will fit between the server administrator and client accounts<br />
&raquo; Clients can be promoted to resellers<br />
&raquo; Domain administrators can be promoted to clients (and resellers)<br />
&raquo; Home and desktop pages will be merged<br />
&raquo; Better rollover tooltips will be provided<br />
&raquo; Hosting setup will be easier and setting limits will be more intuitive<br />
&raquo; Server administrators will be able to hide certain services and functions<br />
&raquo; Overselling will be allowed so that soft and hard limits can be set<br />
&raquo; API improvements will be backward compatible<br />
&raquo; Reseller billing will be integrated with ModernBill<br />
&raquo; Choose to use Postfix rather than Qmail<br />
&raquo; Greylisting is built into the panel</p>
<p><strong>Plesk Future Ideas</strong><br />
&raquo; Vast majority of Plesk deployments have five domains or less<br />
&raquo; SMB edition with support for one domain and one administrator (SaaS)<br />
&raquo; Corporate fileserver and collaboration will be in the SMB version<br />
&raquo; Use PHP via FastCGI rather than Apache module<br />
&raquo; Lighttpd support for Plesk panel as well as hosted sites<br />
&raquo; Multiple MTA's (in addition to Postfix/Qmail)<br />
&raquo; Upgrade checks can be run prior to upgrading Plesk so that issues can be avoided<br />
&raquo; Recovery tools will be available for broken upgrades<br />
&raquo; Local Plesk mirrors can be used to do remote upgrades<br />
&raquo; Multiple level backup/restore options for admin, reseller, client or domain administrator<br />
&raquo; Migration of shared hosting environment into Virtuozzo container or Plesk Server container<br />
&raquo; SiteBuilder 5.0 will have mobile web site design support<br />
&raquo; Event calendar is coming</p>
<p><strong>ModernBill</strong><br />
&raquo; Will be integrated into Plesk<br />
&raquo; Support for 20+ payment gateways<br />
&raquo; 100% ready in Q4 2008</p>
<p><strong>Application Packaging Standard (APS)</strong><br />
&raquo; Applications will be available directly from Parallels within the Plesk panel<br />
&raquo; Modules are easy to install and update<br />
&raquo; Applications can be maintained by packagers and kept up to date<br />
&raquo; Centralized license management<br />
&raquo; Installation and configuration can be completely scripted<br />
&raquo; Install scripts can get Plesk configuration data right from Plesk so the interface within the application matches Plesk's interface</p>
<p><strong>Notes from Sergei's Keynote</strong><br />
&raquo; Hosting growth is slowing, but it mature<br />
&raquo; Managed hosting is growing a lot, and SaaS has entered the marked<br />
&raquo; Mentioned Rackspace's pending IPO as a sign of the changing market<br />
&raquo; Large SaaS entries: Google's products, Amazon's S3/EC2, Microsoft's Hosted Exchange<br />
&raquo; Google is a monopoly, the most dangerous, won't partner with anyone<br />
&raquo; Microsoft works harder on partnerships, but was more dangerous without Yahoo!<br />
&raquo; EMC quietly launched direct hosting, storage hosting, cloud computing<br />
&raquo; IT is mocing off-premises, which is both a threat and opportunity<br />
&raquo; Hosting companies must stay competitive via pricing, high levels of service<br />
&raquo; Create stickyness with critical service offerings and owning the customer (and their data)<br />
&raquo; Hosting companies can improve with broad sets of service plans, flexible upgrade paths, and close ties with customers/partners<br />
&raquo; Parallels vision includes partnering, automation, virtualization, and standardization</p>
<p>I'll try to take good notes tomorrow and get an update together for you then!</p>
<p><a href="http://rackerhacker.com/2008/05/19/parallels-summit-2008-day-1/">Parallels Summit 2008 - Day 1</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2008/05/19/parallels-summit-2008-day-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Best PHP and MySQL development book</title>
		<link>http://rackerhacker.com/2008/04/29/best-php-and-mysql-development-book/</link>
		<comments>http://rackerhacker.com/2008/04/29/best-php-and-mysql-development-book/#comments</comments>
		<pubDate>Tue, 29 Apr 2008 17:00:54 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=294</guid>
		<description><![CDATA[I finally remembered this book when someone asked me about how to get started with PHP and MySQL development. If you get the chance, get a copy of this book: PHP and MySQL Web Development by Luke Welling, Laura Thomson Barnes &#38; Noble: http://snurl.com/265xp Why do I like this book so much? Teaching by application [...]<p><a href="http://rackerhacker.com/2008/04/29/best-php-and-mysql-development-book/">Best PHP and MySQL development book</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>I finally remembered this book when someone asked me about how to get started with PHP and MySQL development.  If you get the chance, get a copy of this book:</p>
<p><u>PHP and MySQL Web Development</u> <em>by Luke Welling, Laura Thomson</em><br />
Barnes &amp; Noble: <a href="http://snurl.com/265xp">http://snurl.com/265xp</a></p>
<p>Why do I like this book so much?</p>
<ul>
<li><strong>Teaching by application</strong> - The book teaches fundamentals by showing how to apply techniques to an active website.  There's not a ton of theory to wade through, and you feel like you're learning the material faster.</li>
<li><strong>Intertwined strategies</strong> - You learn how to get PHP working with MySQL, and then you learn how to optimize your code.  It's important to know which work is best done by PHP and which is best done by MySQL.  This book teaches both.</li>
<li><strong>Lots of examples</strong> - The CD-ROM comes with tons of code examples that actually relate to something you can use.</li>
</ul>
<p>I'd be happy to loan my copy, but I've loaned it out and it never returned.</p>
<p><a href="http://rackerhacker.com/2008/04/29/best-php-and-mysql-development-book/">Best PHP and MySQL development book</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2008/04/29/best-php-and-mysql-development-book/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Taking a couple of weeks off</title>
		<link>http://rackerhacker.com/2008/02/04/taking-a-couple-of-weeks-off/</link>
		<comments>http://rackerhacker.com/2008/02/04/taking-a-couple-of-weeks-off/#comments</comments>
		<pubDate>Tue, 05 Feb 2008 00:23:30 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/2008/02/04/taking-a-couple-of-weeks-off/</guid>
		<description><![CDATA[I'm going to take two weeks off from posting on RackerHacker and I'm going to put that time towards bringing the next version of boxcheck.com to fruition. I've been hit with a lot of requests, and it seems to be a tool that people find pretty useful! I'll keep updating the blog as I get [...]<p><a href="http://rackerhacker.com/2008/02/04/taking-a-couple-of-weeks-off/">Taking a couple of weeks off</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>I'm going to take two weeks off from posting on RackerHacker and I'm going to put that time towards bringing the next version of <a href="http://boxcheck.com/">boxcheck.com</a> to fruition.  I've been hit with a lot of requests, and it seems to be a tool that people find pretty useful!</p>
<p>I'll keep updating the blog as I get closer to releasing the next version.  Also, as soon as a beta is available, I will certainly let you know!</p>
<p><a href="http://rackerhacker.com/2008/02/04/taking-a-couple-of-weeks-off/">Taking a couple of weeks off</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2008/02/04/taking-a-couple-of-weeks-off/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MySQLTuner Revision 29 is now available</title>
		<link>http://rackerhacker.com/2008/01/15/mysqltuner-revision-29-is-now-available/</link>
		<comments>http://rackerhacker.com/2008/01/15/mysqltuner-revision-29-is-now-available/#comments</comments>
		<pubDate>Wed, 16 Jan 2008 04:13:12 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysqltuner]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/2008/01/15/mysqltuner-revision-29-is-now-available/</guid>
		<description><![CDATA[A new version of MySQLTuner was released tonight to correct some bugs found within revision 26. As usual, you can get a new copy from the MySQLTuner site. Here are the new features: &#187; Storage engine counts are shown In addition to the actual size of the tables stored under each storage engine, there is [...]<p><a href="http://rackerhacker.com/2008/01/15/mysqltuner-revision-29-is-now-available/">MySQLTuner Revision 29 is now available</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>A new version of MySQLTuner was released tonight to correct some bugs found within revision 26.  As usual, you can <a href="http://mysqltuner.com/mysqltuner.pl">get a new copy</a> from the <a href="http://mysqltuner.com/">MySQLTuner site</a>.</p>
<p>Here are the new features:</p>
<p><strong>&raquo; Storage engine counts are shown</strong></p>
<p>In addition to the actual size of the tables stored under each storage engine, there is a table count as well.  The table count reflects the number of tables that exist on the server which use the specified storage engine.</p>
<p><strong>&raquo; Minor changes</strong></p>
<ul>
<li>Reduced overall code size</li>
<li>Optimized subroutines to use fewer system calls and math computations</li>
<li>Added storage engine disabling recommendations to the bottom of the output</li>
</ul>
<p><strong>&raquo; Bugs fixed</strong></p>
<ul>
<li>Fixed an issue that caused incorrect statistics for storage engines with MySQL 3.23</li>
<li>Corrected a logic bug that displayed odd storage engine statistics calculations</li>
</ul>
<p><a href="http://rackerhacker.com/2008/01/15/mysqltuner-revision-29-is-now-available/">MySQLTuner Revision 29 is now available</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2008/01/15/mysqltuner-revision-29-is-now-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQLTuner Revision 26 is now available</title>
		<link>http://rackerhacker.com/2008/01/15/mysqltuner-revision-26-is-now-available/</link>
		<comments>http://rackerhacker.com/2008/01/15/mysqltuner-revision-26-is-now-available/#comments</comments>
		<pubDate>Tue, 15 Jan 2008 14:00:22 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysqltuner]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/2008/01/15/mysqltuner-revision-26-is-now-available/</guid>
		<description><![CDATA[As some subversion users may have noticed, revision 23 of MySQLTuner was released quietly on Sunday. Thanks to Mike Jackson, a few bugs from revision 23 were smashed today and revision 26 was released this morning. To pick up the new script, visit the MySQLTuner site. Here's some of the new features: &#187; Shows banner [...]<p><a href="http://rackerhacker.com/2008/01/15/mysqltuner-revision-26-is-now-available/">MySQLTuner Revision 26 is now available</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>As some subversion users may have noticed, revision 23 of MySQLTuner was released quietly on Sunday.  Thanks to <a href="http://barking-dog.net/">Mike Jackson</a>, a few bugs from revision 23 were smashed today and revision 26 was released this morning.</p>
<p>To pick up the new script, <a href="http://mysqltuner.com/">visit the MySQLTuner site</a>.</p>
<p>Here's some of the new features:</p>
<p><strong>&raquo; Shows banner of enabled and disabled storage engines</strong></p>
<p>Near the top of the MySQLTuner output, you'll find a line like this:</p>
<p><code>
<pre>[**] Status: -Archive -BDB -Federated +InnoDB -ISAM -NDBCluster</pre>
<p></code></p>
<p>Of course, this is shown in color within the terminal, but all enabled storage engines are shown in green with a plus sign at the front.  Disabled storage engines are shown in red and are prepended with a minus sign.</p>
<p><strong>&raquo; Recommends disabling unused storage engines</strong></p>
<p>If MySQLTuner finds storage engines enabled that are not in use, it will recommend that they are disabled to save resources:</p>
<p><code>
<pre>[!!] InnoDB is enabled but isn't being used</pre>
<p></code></p>
<p><strong>&raquo; Calculates total data corresponding to storage engines</strong></p>
<p>Any storage engines in use are shown with the total amount of data stored using those engines:</p>
<p><code>
<pre>[**] Data in MyISAM tables: 9G
[**] Data in InnoDB tables: 189M
[**] Data in MEMORY tables: 0B</pre>
<p></code></p>
<p><strong>&raquo; Displays exact counts in addition to percentages</strong></p>
<p>For some results where percents are shown, exact counts are being displayed as well:</p>
<p><code>
<pre>[OK] Slow queries: 0% (1/4M)
[OK] Highest usage of available connections: 56% (17/30)</pre>
<p></code></p>
<p><strong>&raquo; Initial InnoDB support</strong></p>
<p>As an initial step towards InnoDB support, the innodb_buffer_pool_size is compared to the total amount of InnoDB data stored on the server:</p>
<p><code>
<pre>[OK] InnoDB data size / buffer pool: 189.7M/384.0M</pre>
<p></code></p>
<p><strong>&raquo; Other minor changes</strong></p>
<ul>
<li>Added additional section headers to further organize the output</li>
<li>Merged the total buffers lines into one for more compact output</li>
<li>Added MySQL 5.1 to the supported list to prepare for upcoming GA release</li>
<li>For filesize amounts less than 1024 bytes, the "B" letter is shown to represent bytes</li>
<li>InnoDB log file recommendation removed due to bad implementations based on recommendations</li>
<li>Switches from spaced indents to tabbed indents</li>
</ul>
<p><a href="http://rackerhacker.com/2008/01/15/mysqltuner-revision-26-is-now-available/">MySQLTuner Revision 26 is now available</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2008/01/15/mysqltuner-revision-26-is-now-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQLTuner is now a Debian package</title>
		<link>http://rackerhacker.com/2008/01/08/mysqltuner-is-now-a-debian-package/</link>
		<comments>http://rackerhacker.com/2008/01/08/mysqltuner-is-now-a-debian-package/#comments</comments>
		<pubDate>Tue, 08 Jan 2008 16:37:32 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[mysqltuner]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/2008/01/08/mysqltuner-is-now-a-debian-package/</guid>
		<description><![CDATA[I just received a note yesterday that MySQLTuner was added to Debian's package list for the sid release. I'd like to thank Marcela Tiznado for putting the package together and submitting it! You can read more about the package. MySQLTuner is now a Debian package is a post from: Major Hayden's Racker Hacker blog. Thanks [...]<p><a href="http://rackerhacker.com/2008/01/08/mysqltuner-is-now-a-debian-package/">MySQLTuner is now a Debian package</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>I just received a note yesterday that <a href="http://packages.debian.org/sid/main/mysqltuner">MySQLTuner</a> was added to Debian's <a href="http://packages.debian.org/sid/main/newpkg">package list</a> for the <em><a href="http://www.debian.org/releases/unstable/">sid</a></em> release.  I'd like to thank Marcela Tiznado for putting the package together and submitting it!</p>
<p>You can <a href="http://packages.debian.org/sid/main/mysqltuner">read more about the package</a>.</p>
<p><a href="http://rackerhacker.com/2008/01/08/mysqltuner-is-now-a-debian-package/">MySQLTuner is now a Debian package</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2008/01/08/mysqltuner-is-now-a-debian-package/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MySQLTuner Revision 22 is now available</title>
		<link>http://rackerhacker.com/2007/12/03/mysqltuner-revision-22-is-now-available/</link>
		<comments>http://rackerhacker.com/2007/12/03/mysqltuner-revision-22-is-now-available/#comments</comments>
		<pubDate>Mon, 03 Dec 2007 18:09:32 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysqltuner]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/2007/12/03/mysqltuner-revision-22-is-now-available/</guid>
		<description><![CDATA[MySQLTuner revision 22 is available today. Here's some of the notable fixes and changes: &#187; Changed how indexes are calculated on MySQL 5 Thanks to Jon Hinds, I found that when running the tuning script against MySQL 5, the following SQL statement caused MySQL to open all of the tables on the server, which of [...]<p><a href="http://rackerhacker.com/2007/12/03/mysqltuner-revision-22-is-now-available/">MySQLTuner Revision 22 is now available</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>MySQLTuner revision 22 is available today.  Here's some of the notable fixes and changes:</p>
<p><strong>&raquo; Changed how indexes are calculated on MySQL 5</strong></p>
<p>Thanks to Jon Hinds, I found that when running the tuning script against MySQL 5, the following SQL statement caused MySQL to open <strong>all</strong> of the tables on the server, which of course caused the table cache hit rate to plummet each time the script is run:</p>
<p><code>SELECT SUM(INDEX_LENGTH) from information_schema.TABLES where ENGINE='MyISAM'</code></p>
<p>The script now calculates index size using <code>du</code> operations for all MySQL versions.</p>
<p><strong>&raquo; Added checks for innodb_log_file_size</strong></p>
<p>I'm working in some InnoDB support, and the script now checks to see whether the innodb_log_file_size is 25% (+/- 5%) of your innodb_buffer_pool_size.</p>
<p><strong>&raquo; Added checks for 32-bit and 64-bit architectures</strong></p>
<p>The script now determines if you have a 32-bit system with less than 2GB of RAM.  You'll get a polite suggestion to move to a 64-bit OS so that MySQL can allocate more than 2GB of RAM safely.  Also, if your maximum possible memory usage is over 2GB on a 32-bit system, you'll get a warning about stability issues.  (Allocating more than 2GB on a 32-bit system can cause thread thrashing and a system crash.)</p>
<p><strong>&raquo; Fixed a bug in the recommendations for temporary tables</strong></p>
<p>I had a pretty ugly math error, and it's fixed now.  You will see recommendations for increasing the size of the max_heap_table and tmp_table_size buffers as long as they are not at 256MB already.</p>
<p><strong>&raquo; Fixed thread cache recommendations and warnings</strong></p>
<p>If your thread cache is set to 0, you now receive a warning about a disabled thread cache.  Also, a separate recommendation is made in that situation.  If your thread cache is set too low, but still enabled, a separate recommendation will appear.</p>
<p><strong>&raquo; Internal changes</strong></p>
<p>Some of the commented lines are switched around a bit, and some of the arrays have been consolidated to speed up the script a bit more.</p>
<p><strong>Ready to download the script?</strong>  Go to <a href="http://mysqltuner.com">http://mysqltuner.com/</a> and get it for free.</p>
<p><a href="http://rackerhacker.com/2007/12/03/mysqltuner-revision-22-is-now-available/">MySQLTuner Revision 22 is now available</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2007/12/03/mysqltuner-revision-22-is-now-available/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MySQLTuner is now a Mandriva Linux package!</title>
		<link>http://rackerhacker.com/2007/11/30/mysqltuner-is-now-a-mandriva-linux-package/</link>
		<comments>http://rackerhacker.com/2007/11/30/mysqltuner-is-now-a-mandriva-linux-package/#comments</comments>
		<pubDate>Fri, 30 Nov 2007 18:49:32 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[mysqltuner]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/2007/11/30/mysqltuner-is-now-a-mandriva-linux-package/</guid>
		<description><![CDATA[Thanks to Oden Eriksson at Mandriva, MySQLTuner is now packaged into an RPM for easier installations on Mandriva Linux. More data can be found in the Mandriva Linux Archives. As an aside, I find it quite interesting that the first package for my script popped up on Mandriva. My first adventure into Linux was with [...]<p><a href="http://rackerhacker.com/2007/11/30/mysqltuner-is-now-a-mandriva-linux-package/">MySQLTuner is now a Mandriva Linux package!</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>Thanks to Oden Eriksson at Mandriva, MySQLTuner is now <a href="http://sophie.zarb.org/viewrpm/41102afc4b469a3d92abb9a147fc9271">packaged into an RPM</a> for easier installations on Mandriva Linux.</p>
<p>More data can be found in the <a href="http://archives.mandrivalinux.com/changelog/2007-11/msg00753.php">Mandriva Linux Archives</a>.</p>
<p><em>As an aside, I find it quite interesting that the first package for my script popped up on Mandriva.  My first adventure into Linux was with Mandrake many years ago.</em></p>
<p><a href="http://rackerhacker.com/2007/11/30/mysqltuner-is-now-a-mandriva-linux-package/">MySQLTuner is now a Mandriva Linux package!</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2007/11/30/mysqltuner-is-now-a-mandriva-linux-package/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>MySQLTuner Revision 20 is available</title>
		<link>http://rackerhacker.com/2007/11/06/mysqltuner-revision-20-is-available/</link>
		<comments>http://rackerhacker.com/2007/11/06/mysqltuner-revision-20-is-available/#comments</comments>
		<pubDate>Tue, 06 Nov 2007 23:27:00 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[mysqltuner]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/2007/11/06/mysqltuner-revision-20-is-available/</guid>
		<description><![CDATA[I've updated MySQLTuner to revision 20 tonight, and it has the following improvements: * Added NetBSD support (thanks to Dave Burgess) * Switched username/password prompts to STDERR so they won't appear in printouts Downloads are available, or you can do a new subversion checkout. MySQLTuner Revision 20 is available is a post from: Major Hayden's [...]<p><a href="http://rackerhacker.com/2007/11/06/mysqltuner-revision-20-is-available/">MySQLTuner Revision 20 is available</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>I've updated MySQLTuner to revision 20 tonight, and it has the following improvements:</p>
<p>* Added NetBSD support (thanks to Dave Burgess)<br />
* Switched username/password prompts to STDERR so they won't appear in printouts</p>
<p><a href="http://rackerhacker.com/mysqltuner/">Downloads are available</a>, or you can do a new <a href="http://tools.assembla.com/mysqltuner/">subversion checkout</a>.</p>
<p><a href="http://rackerhacker.com/2007/11/06/mysqltuner-revision-20-is-available/">MySQLTuner Revision 20 is available</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2007/11/06/mysqltuner-revision-20-is-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQLTuner Revision 19 is available</title>
		<link>http://rackerhacker.com/2007/10/15/mysqltuner-revision-19-is-available/</link>
		<comments>http://rackerhacker.com/2007/10/15/mysqltuner-revision-19-is-available/#comments</comments>
		<pubDate>Tue, 16 Oct 2007 01:54:34 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysqltuner]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/2007/10/15/mysqltuner-revision-19-is-available/</guid>
		<description><![CDATA[I've revamped a few of the recommendations in MySQLTuner, and revision 19 is now available tonight! Here's the main changes: * Adjusted infoprint to use asterisks (cosmetic) * Per-thread/global buffer counts are now displayed * Key buffer increases are only recommended if the buffer is smaller than total indexes and hit rate is < 95% [...]<p><a href="http://rackerhacker.com/2007/10/15/mysqltuner-revision-19-is-available/">MySQLTuner Revision 19 is available</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>I've revamped a few of the recommendations in MySQLTuner, and revision 19 is now available tonight!  Here's the main changes:</p>
<p>* Adjusted infoprint to use asterisks (cosmetic)<br />
* Per-thread/global buffer counts are now displayed<br />
* Key buffer increases are only recommended if the buffer is smaller than total indexes and hit rate is < 95%<br />
* Dropped max_seeks_for_key checks<br />
* Temporary table size increases are not recommended over 256M<br />
* Aborted connection calculation and recommendation adjustments</p>
<p>You can download the latest copy on the <a href="http://rackerhacker.com/mysqltuner/">MySQLTuner page</a>, and you can <a href="http://tools.assembla.com/mysqltuner/">get diffs for the new version</a> as well.</p>
<p><a href="http://rackerhacker.com/2007/10/15/mysqltuner-revision-19-is-available/">MySQLTuner Revision 19 is available</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2007/10/15/mysqltuner-revision-19-is-available/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Boxcheck.com improvements</title>
		<link>http://rackerhacker.com/2007/09/18/boxcheckcom-improvements/</link>
		<comments>http://rackerhacker.com/2007/09/18/boxcheckcom-improvements/#comments</comments>
		<pubDate>Tue, 18 Sep 2007 22:57:31 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/2007/09/18/boxcheckcom-improvements/</guid>
		<description><![CDATA[I've been hard at work on the boxcheck.com site, and there's plenty of improvements. The new interface is quicker, easier to use, and it uses ajax for a more Web 2.0 feel (can't believe I just said Web 2.0). Some beta testers are already giving it a whirl, and I hope to have it released [...]<p><a href="http://rackerhacker.com/2007/09/18/boxcheckcom-improvements/">Boxcheck.com improvements</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>I've been hard at work on the <a href="http://boxcheck.com">boxcheck.com</a> site, and there's plenty of improvements.  The new interface is quicker, easier to use, and it uses ajax for a more Web 2.0 feel (can't believe I just said Web 2.0).</p>
<p>Some beta testers are already giving it a whirl, and I hope to have it released to the public later next week!</p>
<p><a href="http://rackerhacker.com/2007/09/18/boxcheckcom-improvements/">Boxcheck.com improvements</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2007/09/18/boxcheckcom-improvements/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>MySQLTuner minor update</title>
		<link>http://rackerhacker.com/2007/09/06/mysqltuner-minor-update/</link>
		<comments>http://rackerhacker.com/2007/09/06/mysqltuner-minor-update/#comments</comments>
		<pubDate>Fri, 07 Sep 2007 01:41:14 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/2007/09/06/mysqltuner-minor-update/</guid>
		<description><![CDATA[I rolled out a new MySQLTuner update tonight and made the following changes: Added aborted connection checks Added % reads/writes counts Adjusted recommendations for slow query logging, max seeks per key, and joins without indexes Added licensing data Added props for Matthew Montgomery Coming up soon is InnoDB support and additional per-thread buffer checks. MySQLTuner [...]<p><a href="http://rackerhacker.com/2007/09/06/mysqltuner-minor-update/">MySQLTuner minor update</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>I rolled out a new <a href="http://rackerhacker.com/mysqltuner/">MySQLTuner</a> update tonight and made the following changes:</p>
<ul>
<li>Added aborted connection checks</li>
<li>Added % reads/writes counts</li>
<li>Adjusted recommendations for slow query logging, max seeks per key, and joins without indexes</li>
<li>Added licensing data</li>
<li>Added props for Matthew Montgomery</li>
</ul>
<p>Coming up soon is InnoDB support and additional per-thread buffer checks.</p>
<p><a href="http://rackerhacker.com/2007/09/06/mysqltuner-minor-update/">MySQLTuner minor update</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2007/09/06/mysqltuner-minor-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Huge MySQLTuner overhaul</title>
		<link>http://rackerhacker.com/2007/08/12/huge-mysqltuner-overhaul/</link>
		<comments>http://rackerhacker.com/2007/08/12/huge-mysqltuner-overhaul/#comments</comments>
		<pubDate>Sun, 12 Aug 2007 23:51:05 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/2007/08/12/huge-mysqltuner-overhaul/</guid>
		<description><![CDATA[I've been flooded with requests for MySQLTuner and I've answered them this weekend. Here's the changes that were made: Specific variable recommendations are made with suggested values as well Odd recommendations have been reduced Some math errors were corrected More configuration items are supported, like table locks, thread caching, table caching and open file limits. [...]<p><a href="http://rackerhacker.com/2007/08/12/huge-mysqltuner-overhaul/">Huge MySQLTuner overhaul</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>I've been flooded with requests for MySQLTuner and I've answered them this weekend.  Here's the changes that were made:</p>
<ul>
<li>Specific variable recommendations are made with suggested values as well</li>
<li>Odd recommendations have been reduced</li>
<li>Some math errors were corrected</li>
<li>More configuration items are supported, like table locks, thread caching, table caching and open file limits.</li>
</ul>
<p>To find out more and to download the script, head on over to <a href="http://mysqltuner.com/">mysqltuner.com</a>.</p>
<p><a href="http://rackerhacker.com/2007/08/12/huge-mysqltuner-overhaul/">Huge MySQLTuner overhaul</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2007/08/12/huge-mysqltuner-overhaul/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sub-par DNS stuff at DNSStuff</title>
		<link>http://rackerhacker.com/2007/06/18/sub-par-dns-stuff-at-dnsstuff/</link>
		<comments>http://rackerhacker.com/2007/06/18/sub-par-dns-stuff-at-dnsstuff/#comments</comments>
		<pubDate>Tue, 19 Jun 2007 02:56:06 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/2007/06/18/sub-par-dns-stuff-at-dnsstuff/</guid>
		<description><![CDATA[If you're like me, you're frustrated with DNSStuff's actions lately. You only get 4 lookups without making a login, and even when you make a login, you have to log back in each time you access the site. Even a dim-witted web developer would know how to use cookies to automate this process and make [...]<p><a href="http://rackerhacker.com/2007/06/18/sub-par-dns-stuff-at-dnsstuff/">Sub-par DNS stuff at DNSStuff</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>If you're like me, you're frustrated with DNSStuff's actions lately.  You only get 4 lookups without making a login, and even when you make a login, you have to log back in each time you access the site.  Even a dim-witted web developer would know how to use cookies to automate this process and make things easier on the users.</p>
<p>Also, why should you pay for a web front-end for tools that people have on their servers already?</p>
<p>Check out <a href="http://boxcheck.com/">Boxcheck.com</a> and let me know what you think.  I became so fed up, I decided to make my own site that is faster and guaranteed free forever.  Period.</p>
<p><a href="http://rackerhacker.com/2007/06/18/sub-par-dns-stuff-at-dnsstuff/">Sub-par DNS stuff at DNSStuff</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2007/06/18/sub-par-dns-stuff-at-dnsstuff/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Speeding up MySQL</title>
		<link>http://rackerhacker.com/2007/05/20/speeding-up-mysql/</link>
		<comments>http://rackerhacker.com/2007/05/20/speeding-up-mysql/#comments</comments>
		<pubDate>Mon, 21 May 2007 03:44:33 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/2007/05/20/speeding-up-mysql/</guid>
		<description><![CDATA[If there's one question I get a lot, it would be "Hey, how can I speed up MySQL?" There's absolutely no end-all, be-all answer to this question. Instead a combination of many factors contribute to the overall performance of any SQL server. However, here's a list of my recommendations for great MySQL performance. They're arranged [...]<p><a href="http://rackerhacker.com/2007/05/20/speeding-up-mysql/">Speeding up MySQL</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>If there's one question I get a lot, it would be "Hey, how can I speed up MySQL?"  There's absolutely no end-all, be-all answer to this question.  Instead a combination of many factors contribute to the overall performance of any SQL server.  However, here's a list of my recommendations for great MySQL performance.  They're arranged from the biggest gains to smallest gains:</p>
<p><b>Query Optimization</b><br />
I know - you were hoping I'd talk about hardware to start this thing off, but optimizing queries is the #1 way to get a MySQL server in gear.  MySQL gives you great tools, like the slow query log, multiple status variables, and the EXPLAIN statement.  Put these three things together and your queries will be on their way to a more optimized state.  I'll go into great detail about query optimization in a later post.</p>
<p><b>Memory / System Architecture</b><br />
We all know MySQL likes RAM, and the more you give it (to a point) the better the performance will be.  If you consider the alternative to memory, which is swapping on disk, it's obvious to see the gains.  </p>
<p>So why did I add system architecture to this section?  Well, if you have 32-bit Redhat, you can only allocate 2GB per process with the standard kernel.  If you jump up to the SMP or hugemem kernel (in ES 2.1, you need the hugemem kernel for this to work), you can allocate 3GB per process.  There is a caveat - MySQL can only use 2GB per buffer in 32-bit land.  In a 64-bit OS with an appropriate Redhat kernel, you can allocate much larger buffers, and this can be tremendously helpful to tables which use the InnoDB engine.  The memory allocation abilities are a great benefit, but also keep in mind that you will also get a boost in math performance within MySQL due to the 64-bit architecture.  It's a win-win!</p>
<p><b>Disk Performance</b><br />
Running a critical database on IDE or SATA drives just doesn't cut it any more.  A SCSI or SAS drive is required for the best performance.  Although you hope that MySQL doesn't touch the disk much, it's important to remember that you need to make backups often, and you may need to restore data.  Also, if your site is write-intensive, the disk performance is much more important than you think.  It will reduce the time that tables are locked, and it will also reduce the time for backups and restores.</p>
<p><b>CPU</b><br />
Although CPU comes last, don't forget how important it can be.  If you run a high number of complex queries and perform a lot of mathematical operations, you're going to need a CPU that can handle this load.  Dual CPU's or dual core CPU's will help out even more, since MySQL can use multiple CPU cores to perform simultaneous operations.  Keep in mind that 64-bit will outperform 32-bit in MySQL, and also allow for greater memory allocations (look in the Memory section above).</p>
<p><b><i>Final Note:</i></b><br />
Keep in mind that these are <b>general</b> suggestions, and these suggestions may not apply to all users.  For example, on sites that are heavily read-intensive, you may find that CPU speed is more important than disk speed.  Also, if you're not using all of the available memory on your server, but your performance is still sagging, adding more memory won't help.  Consult with a DBA and find out where your server's slowdowns are, then make a change with your queries or with your hardware.  Remember, throwing more hardware at the problem will not always solve it.</p>
<p><a href="http://rackerhacker.com/2007/05/20/speeding-up-mysql/">Speeding up MySQL</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2007/05/20/speeding-up-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

