<?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/"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Kevin Burton's NEW FeedBlog &#187; mysql</title>
	<atom:link href="http://feedblog.org/category/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://feedblog.org</link>
	<description>You may say I'm a dreamer, but I'm not the only one.</description>
	<lastBuildDate>Thu, 09 Jul 2009 23:36:08 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<image>
		<url>http://www.gravatar.com/blavatar/b687927a3ededbebe017e1f9dac1e56f?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Kevin Burton's NEW FeedBlog &#187; mysql</title>
		<link>http://feedblog.org</link>
	</image>
			<item>
		<title>Buffered Binary Logs&#8230;</title>
		<link>http://feedblog.org/2009/04/30/buffered-binary-logs/</link>
		<comments>http://feedblog.org/2009/04/30/buffered-binary-logs/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 16:50:35 +0000</pubDate>
		<dc:creator>burtonator</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[search]]></category>

		<guid isPermaLink="false">http://feedblog.org/?p=1863</guid>
		<description><![CDATA[One of the things that has always bothered me about replication is that the binary logs are written to disk and then read from disk.
There is are two threads which are for the most part, unaware of each other.
One thread reads the remote binary logs, and the other writes them to disk.
While the Linux page [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=feedblog.org&blog=848832&post=1863&subd=burtonator&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>One of the things that has always bothered me about replication is that the binary logs are written to disk and then read from disk.</p>
<p>There is are two threads which are for the most part, unaware of each other.</p>
<p>One thread reads the remote binary logs, and the other writes them to disk.</p>
<p>While the Linux page buffer CAN work to buffer these logs, the first write will cause additional disk load.</p>
<p>One strategy, which could seriously boost performance in some situations, would be to pre-read say 10-50MB of data and just keep it in memory.</p>
<p>If a slave is catching up, it could have GIGABYTES of binary log data from the master.  It would then write this to disk.  These reads would then NOT come from cache.</p>
<p>Simply using a small buffer could solve this problem.</p>
<p>One HACK would be to use a ram drive or tmpfs for logs.  I assume that the log thread will block if the disk fills up&#8230;  if it does so intelligently, one could just create a 50MB tmpfs to store binary logs.  MySQL would then read these off tmpfs, and execute them.</p>
<p>50MB-250MB should be fine for a pre-read buffer.   Once one of the files is removed, the thread would continue reading data.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/burtonator.wordpress.com/1863/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/burtonator.wordpress.com/1863/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/burtonator.wordpress.com/1863/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/burtonator.wordpress.com/1863/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/burtonator.wordpress.com/1863/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/burtonator.wordpress.com/1863/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/burtonator.wordpress.com/1863/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/burtonator.wordpress.com/1863/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/burtonator.wordpress.com/1863/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/burtonator.wordpress.com/1863/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=feedblog.org&blog=848832&post=1863&subd=burtonator&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://feedblog.org/2009/04/30/buffered-binary-logs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">burtonator</media:title>
		</media:content>
	</item>
		<item>
		<title>ext4, fallocate, and InnoDB autoincrement</title>
		<link>http://feedblog.org/2009/03/08/ext4-fallocate-and-innodb-autoincrement/</link>
		<comments>http://feedblog.org/2009/03/08/ext4-fallocate-and-innodb-autoincrement/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 00:34:43 +0000</pubDate>
		<dc:creator>burtonator</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://feedblog.org/?p=1850</guid>
		<description><![CDATA[This might be a bit cutting edge, but the new fallocate() call in &#62; Linux 2.6.23 might be able to improve InnoDB performance.
When InnoDB needs more space it auto-extends the current data file by 8MB.  If this is writing out zeros to the new data (to initialize it) then using fallocate() would certainly be [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=feedblog.org&blog=848832&post=1850&subd=burtonator&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>This might be a bit cutting edge, but the new <a href="http://www.kernel.org/doc/man-pages/online/pages/man2/fallocate.2.html">fallocate()</a> call in &gt; Linux 2.6.23 might be able to improve InnoDB performance.</p>
<p>When InnoDB needs more space it <a href="http://dev.mysql.com/doc/refman/5.0/en/innodb-parameters.html#sysvar_innodb_autoextend_increment">auto-extends the current data file by 8MB</a>.  If this is writing out zeros to the new data (to initialize it) then using fallocate() would certainly be faster.</p>
<p>Apparently, XFS supports this too but needs an ioctl.  XFS could support fallocate in the future as well&#8230; </p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/burtonator.wordpress.com/1850/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/burtonator.wordpress.com/1850/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/burtonator.wordpress.com/1850/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/burtonator.wordpress.com/1850/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/burtonator.wordpress.com/1850/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/burtonator.wordpress.com/1850/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/burtonator.wordpress.com/1850/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/burtonator.wordpress.com/1850/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/burtonator.wordpress.com/1850/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/burtonator.wordpress.com/1850/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=feedblog.org&blog=848832&post=1850&subd=burtonator&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://feedblog.org/2009/03/08/ext4-fallocate-and-innodb-autoincrement/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">burtonator</media:title>
		</media:content>
	</item>
		<item>
		<title>The Middle Path and the Solution to Linux Swap</title>
		<link>http://feedblog.org/2009/02/14/the-middle-path-and-the-solution-to-linux-swap/</link>
		<comments>http://feedblog.org/2009/02/14/the-middle-path-and-the-solution-to-linux-swap/#comments</comments>
		<pubDate>Sun, 15 Feb 2009 04:33:44 +0000</pubDate>
		<dc:creator>burtonator</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://feedblog.org/?p=1838</guid>
		<description><![CDATA[I&#8217;m enamored by the middle path.
Basically, the idea is that extremism is an evil and often ideological perspectives are non-optimial solutions.
The Dalai Lama has pursued a middle path solution to the issue of Tibetan independence.  
The two opposing philosophies in this situation are total and complete control of Tibet by the Chinese or complete [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=feedblog.org&blog=848832&post=1838&subd=burtonator&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I&#8217;m enamored by the <a href="http://en.wikipedia.org/wiki/Middle_way">middle path</a>.</p>
<p>Basically, the idea is that extremism is an evil and often ideological perspectives are non-optimial solutions.</p>
<p>The Dalai Lama has pursued a <a href="http://www.dalailama.com/page.225.htm">middle path solution to the issue of Tibetan independence</a>.  </p>
<p>The two opposing philosophies in this situation are total and complete control of Tibet by the Chinese or complete political freedom by the Tibetan people and self governance.  The Dalai Lama proposes an alternative whereby China and Tibet pursue stability and co-existence between the Tibetan and Chinese peoples based on equality and mutual co-operation.</p>
<p>How does this apply to Linux?</p>
<p>The current question of swap revolves around using NO swap at all or using swap to page out some portion of your application onto disk.</p>
<p>Even with the SplitLRU patch we&#8217;re still seeing problems with Linux swap.</p>
<p>The entire question is <a href="http://en.wikipedia.org/wiki/Mu_(negative)">Mu</a>&#8230;</p>
<p>The solution isn&#8217;t to disable swap.  The solution is to use a SMALL amount of swap (100-200MB) and monitor your application to detect when it is swapping and then tune back the memory usage of your application.</p>
<p>The difficulty is that you often want to use the maximum about of memory in the system.  Imagine a theoretical system that efficiently uses 100% of system memory.  An overcommitted application might allocate a BIT more and cause the OOM killer to kick in.</p>
<p>This would be horrible. Instead, why not just page 10-20 bytes..  It&#8217;s not going to have devastating effects on the system and if you&#8217;re monitoring it you can decide to tune back your memory usage by 100MB or so.</p>
<p>We have this happen from time to time with MySQL.  We allocate slightly too much memory only to have the OOM killer kick in and kill MySQL &#8211; not fun.</p>
<p>Using a large swap file isn&#8217;t the solution either.  If you overtune you can swap out a large portion of your application.  This can essentially yield a denial of service as the load on your server becomes so high that you can&#8217;t even SSH in after hours of usage.  The only solution is to reboot the box.</p>
<p>Using a small swap file avoids this.  If you&#8217;re swapping more than say 50MB you can have your monitoring system kick in and alert you before the limit is hit and your OOM killer kicks in.</p>
<p>We&#8217;re experimenting with this idea this week and I&#8217;m optimistic about the results.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/burtonator.wordpress.com/1838/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/burtonator.wordpress.com/1838/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/burtonator.wordpress.com/1838/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/burtonator.wordpress.com/1838/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/burtonator.wordpress.com/1838/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/burtonator.wordpress.com/1838/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/burtonator.wordpress.com/1838/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/burtonator.wordpress.com/1838/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/burtonator.wordpress.com/1838/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/burtonator.wordpress.com/1838/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=feedblog.org&blog=848832&post=1838&subd=burtonator&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://feedblog.org/2009/02/14/the-middle-path-and-the-solution-to-linux-swap/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">burtonator</media:title>
		</media:content>
	</item>
		<item>
		<title>Has SaaS Killed Open Source?</title>
		<link>http://feedblog.org/2009/01/30/has-saas-killed-open-source/</link>
		<comments>http://feedblog.org/2009/01/30/has-saas-killed-open-source/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 19:38:26 +0000</pubDate>
		<dc:creator>burtonator</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://feedblog.org/?p=1829</guid>
		<description><![CDATA[I&#8217;ve been thinking about SaaS (in the form of Spinn3r) and how it relates to Open Source for the past few months and I think I&#8217;ve come to some interesting conclusions.  I think SaaS might be a strong competitor to Open Source in that it&#8217;s cheaper and higher quality in a number of situations.
Apparently, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=feedblog.org&blog=848832&post=1829&subd=burtonator&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I&#8217;ve been thinking about SaaS (in the form of <a href="http://spinn3r.com">Spinn3r</a>) and how it relates to Open Source for the past few months and I think I&#8217;ve come to some interesting conclusions.  I think SaaS might be a strong competitor to <a href="http://www.cloudave.com/link/has-saas-killed-oss">Open Source</a> in that it&#8217;s cheaper and higher quality in a number of situations.</p>
<p>Apparently, <a href="http://www.yuuguu.com/blog/?p=37">I&#8217;m no the only one</a>: </p>
<blockquote><p>Open source is always driven by some organisation – a central body that leads community development efforts to support developers and build revenue streams. In essence, that body gives away the base code and knowledge of the community version to encourage development of the service and expand distribution; to make the software go ‘viral’.</p>
<p>However, I believe software as a service (SAAS) has undermined this model.</p>
<p>SAAS offers ready access to beautifully crafted applications and services through the browser for little or no initial cost. These applications supersede centrally-held open source projects since a. they are finished products (rather than base codes, which must be developed into end-user services) and b. can be easily found, used and shared by the end users of the application/service.</p></blockquote>
<p>More thoughts on the subject are <a href="http://www.cloudave.com/link/has-saas-killed-oss">floating in the blogosphere as well</a>:</p>
<blockquote><p>Opensource tends to build passionate users that consider themselves, to a certain extent “owners” and “developers” of the product in question. These communities tend to be rabidly loyal and have a tendency towards evangelisation. This is clearly a hugely powerful aspect of OSS and should be harnessed.</p>
<p>SaaS on the other hand tends to build networks or communities of individuals that share a commonality &#8211; be it use, interest whatever. SaaS users tend to be loyal to a point, but not nearly as loyal as opensource-ers.</p>
<p>To a certain extent SaaS enterprises have attempted to create the opensource level of community by embracing the concepts of beta-testing and user feedback and development. This however has been reasonably limited (mainly due to the fact that opensource is free, at some point a free beta-test of a SaaS product will generally swing over to a subscription based service).</p></blockquote>
<p>My experience running Spinn3r has be coming to similar conclusions.</p>
<p>First, we don&#8217;t compete with Open Source crawlers in our interactions with customers.  Why?  they&#8217;re amazingly expensive in comparison.</p>
<p>We run a cluster of 20-30 boxes and handle all aspects of running the crawler.  We&#8217;re about 1/10th of the cost vs doing it yourself since we can amortize our operations across dozens of customers.</p>
<p>In our situation.   Open Source isn&#8217;t free.  It&#8217;s 10x the cost of using Spinn3r.  It seems counter intuitive but TCO really comes into play here.  </p>
<p>Second.  We&#8217;re profitable and have no problem paying our developers, buying hardware, outsourcing development, buying tools, etc.  Open Source (at least in its purest form) has traditionally had problems raising capital and has often depended on the patronage model.  What&#8217;s worse, if they follow the MySQL/RedHat model they often put themselves at odds with their original community which can lead to tension.</p>
<p>This isn&#8217;t to say that Open Source is going to go away.  We&#8217;re big fans of Open Source. Most or our architecture is OSS.  Heck.  Even <a href="http://code.google.com/p/spinn3r-client/">our reference client</a> is Open Source.   </p>
<p>It just seems that SaaS is going to grow to push Open Source out of certain areas due to price, efficiency, and quality issues.</p>
<p>In the end I think this is good for the market and the industry as a whole.  </p>
<p>Certainly, our customers are very happy.  </p>
<p>PS.  As an aside.  I&#8217;ve always felt that free market economics and Open Source were always hand in hand.  When I was doing News Monster (which was both Open Source and Free Software) I would joke that it wasn&#8217;t &#8220;free as in beer&#8221; it was &#8220;free as in $29.95.&#8221;  </p>
<p>We made it easy to checkout NewsMonster directly from CVS and build your own version if you wanted but if you wanted the easy one click install (which included support) then you needed to pay $29.95.  Most of our users (99%) opted to pay&#8230; </p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/burtonator.wordpress.com/1829/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/burtonator.wordpress.com/1829/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/burtonator.wordpress.com/1829/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/burtonator.wordpress.com/1829/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/burtonator.wordpress.com/1829/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/burtonator.wordpress.com/1829/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/burtonator.wordpress.com/1829/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/burtonator.wordpress.com/1829/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/burtonator.wordpress.com/1829/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/burtonator.wordpress.com/1829/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=feedblog.org&blog=848832&post=1829&subd=burtonator&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://feedblog.org/2009/01/30/has-saas-killed-open-source/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">burtonator</media:title>
		</media:content>
	</item>
		<item>
		<title>On Write Caching Controllers and Distributed Database Failure Models</title>
		<link>http://feedblog.org/2008/12/17/on-write-caching-controllers-and-distributed-database-failure-models/</link>
		<comments>http://feedblog.org/2008/12/17/on-write-caching-controllers-and-distributed-database-failure-models/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 02:17:11 +0000</pubDate>
		<dc:creator>burtonator</dc:creator>
				<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://feedblog.org/?p=1802</guid>
		<description><![CDATA[The more databases you have in your cluster the greater the probability they&#8217;re going to fail.
It&#8217;s basically MTBF/N until you have one of these boxes crash. If you have 10k machines expect multiple failures per day.
If you&#8217;re performing realtime writes to these databases you can lose a DB in the middle of a write.
Now what? [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=feedblog.org&blog=848832&post=1802&subd=burtonator&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>The more databases you have in your cluster the greater the probability they&#8217;re going to fail.</p>
<p>It&#8217;s basically MTBF/N until you have one of these boxes crash. If you have 10k machines expect multiple failures per day.</p>
<p>If you&#8217;re performing realtime writes to these databases you can lose a DB in the middle of a write.</p>
<p>Now what?  Do you lose transactions?</p>
<p>Most people using InnoDB/MyISAM have used write caching controllers to solve this problem. </p>
<p>You buy this expensive card with 128MB of memory which temporarily caches writes.  The card has a battery so if you lose power you spin the disks until you can get your data onto the disks.</p>
<p>But as I mentioned before, these devices are expensive.  Expect them to add another 20% on the price of your cluster.</p>
<p>This doesn&#8217;t sound like a ton of cash if you have one or two machines but if you&#8217;re buying 50-1000 it&#8217;s a significant chunk of change.</p>
<p>Another way around this is to make sure your write hits at least two nodes (three if you&#8217;re paranoid).</p>
<p>If you&#8217;re using a sharded databased you might have 2-3 replicas per shard. </p>
<p>What you do is then make sure your transaction made it to one more node. </p>
<p>This is essentially what Google does. They have a <a href="http://www.chandrakin.com/paper2.pdf">distributed write ahead log</a> for an entire shard.</p>
<p>If one of their replicas in a shard fails the transaction is on two more boxes.  </p>
<p>For Google saving that extra %20 at their scale is a LOT of cash.</p>
<p>Hopefully the <a href="http://code.google.com/p/google-mysql-tools/wiki/SemiSyncReplication">semi-sync patch</a> is isolated soon.  This means you can now use the same fault recovery mechanism.  It doesn&#8217;t matter if a master fails as long as you have semi-sync, have the transaction data already on another box, and bring a new replica online quickly.</p>
<p>Now we can shave these write caching controllers out of our budget.</p>
<p>The main question is what type of performance hit will we take?</p>
<p>Fortunately, InnoDB has a few variables you can set.  </p>
<p>If you wet innodb_flush_log_at_trx_commit to zero then InnoDB will commit less often.  Meaning more data is buffered (but remember it&#8217;s already replicated to a slave).</p>
<p>Another is sync_bin&#8230; You should set this to zero.  This way the binary logs aren&#8217;t flushed too often.</p>
<p>The main question is which is faster:</p>
<p> &#8211; InnoDB with innodb_flush_log_at_trx_commit=1 and sync_bin=1 WITH a write caching controller</p>
<p>  or</p>
<p> &#8211; InnoDB with innodb_flush_log_at_trx_commit=0 and sync_bin=0 WITHOUT a write caching controller but with semi-sync.</p>
<p>I haven&#8217;t had time to run the benchmark but I suspect that the write caching controller is faster.  By how much is my main question.</p>
<p>Of course you&#8217;re going to need the <a href="http://code.google.com/p/google-mysql-tools/wiki/GlobalTransactionIds">global transaction ID patch</a> too. Without this you can&#8217;t really run three replicas per node.</p>
<p><b>Update :</b></p>
<p>Some more thoughts. </p>
<p>Yes.  You can lose an entire datacenter and then lose transactions.  That&#8217;s why you need more than one datacenter.  We&#8217;ve lost power three times this year (it isn&#8217;t fun).  </p>
<p>While InnoDB would probably perform faster on BBU hardware a Bigtable or log structured DB without fsync would write at almost the full disk head write speed (80-120MB/s).</p>
<p>I still want a hybrid flash/supercapacitor based controller.  Hopefully on the drives.  Then I can just power off the drives and the DRAM cache on the drives is written quickly to the flash.  </p>
<p>Does this exist yet?  HDDs are going to exit until 2010 for bulk storage (TB sized arrays) so I think they&#8217;re worth the investment.</p>
<p>They should only add $20-50 to the cost of your disks so probably worth the investment at that point.  </p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/burtonator.wordpress.com/1802/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/burtonator.wordpress.com/1802/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/burtonator.wordpress.com/1802/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/burtonator.wordpress.com/1802/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/burtonator.wordpress.com/1802/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/burtonator.wordpress.com/1802/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/burtonator.wordpress.com/1802/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/burtonator.wordpress.com/1802/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/burtonator.wordpress.com/1802/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/burtonator.wordpress.com/1802/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=feedblog.org&blog=848832&post=1802&subd=burtonator&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://feedblog.org/2008/12/17/on-write-caching-controllers-and-distributed-database-failure-models/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">burtonator</media:title>
		</media:content>
	</item>
		<item>
		<title>Thoughts on Fishworks, SSD, flash and high density storage.</title>
		<link>http://feedblog.org/2008/12/16/thoughts-on-fishworks-ssd-flash-and-high-density-storage/</link>
		<comments>http://feedblog.org/2008/12/16/thoughts-on-fishworks-ssd-flash-and-high-density-storage/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 05:10:35 +0000</pubDate>
		<dc:creator>burtonator</dc:creator>
				<category><![CDATA[SSD]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://feedblog.org/?p=1799</guid>
		<description><![CDATA[The Sun Fishworks guys were nice enough to invite me for a demo of their new 7000 series storage device.
We bang the heck out of our IO systems here at Spinn3r so having more options is always welcome.
Bryan Cantrill, one of the original DTrace developers, worked on this bad boy so there&#8217;s obviously going to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=feedblog.org&blog=848832&post=1799&subd=burtonator&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>The <a href="http://blogs.sun.com/fishworks/">Sun Fishworks</a> guys were nice enough to invite me for a demo of their new <a href="http://www.sun.com/storage/disk_systems/unified_storage/">7000 series storage device</a>.</p>
<p>We bang the heck out of our IO systems here at Spinn3r so having more options is always welcome.</p>
<p><a href="http://blogs.sun.com/bmc/">Bryan Cantrill</a>, one of the original DTrace developers, worked on this bad boy so there&#8217;s obviously going to be an emphasis on performance analysis.</p>
<p>This is one of the main competitive advantages of the 7000 series. </p>
<p>Out of the box you have a full admin console for performance tuning.  It doesn&#8217;t stop at just raw IOs because they&#8217;ve instrumented it with a bunch of dtrace scripts.</p>
<p>You can view IOPS per file, CPU, make runtime tuning and configuration changes.  Basically, the entire device can be monitored and configured with just a few clicks.</p>
<p>Apparently, they can&#8217;t really open source this thing because it hooks too far into OpenSolaris.  I&#8217;m very sympathetic to this problem though.  At Spinn3r we have a TON of infrastructure I would rather Open Source but I can&#8217;t because it&#8217;s too integrated into our full stack.</p>
<p>Of course I don&#8217;t have one of these guys in production.  The devil is ALWAYS in the details.  In the past I&#8217;ve thrown hardware I was really excited about into production only to have it fail a week later.</p>
<p>If you&#8217;re already an OpenSolaris shop this is probably a really easy purchase.  Linux?  Maybe not so much.  If you&#8217;re on MySQL it won&#8217;t really be able to introspect your InnoDB buffer pool.  It might be able to look at the individual files which would be nice.</p>
<p>In Linux you can run lsof but I really want an iotop so that I can see which files are being used and which are getting iops and where.  It seems you can do this with the 7000 but a curses based app would be nice as well.</p>
<p>This thing also has flash which is nice.  It&#8217;s basically meant as a front end read cache.  Blocks are moved from the disk and written sequentially to the flash to satisfy reads.</p>
<p>Looks like their flash is pretty much OEM STEC.  A stock Zeus IOPS drive at 16GB.  Apparently, they&#8217;re they only ones that actually work.</p>
<p>It&#8217;s still not what I really want for our in-memory database.  I want it to be flash all the way and be able to handle more than 10k random write IOPS. </p>
<p>The Fusion IO stuff is interesting but the driver isn&#8217;t Open Source.  The Micron stuff looks awesome as well.  </p>
<p>These guys are either going to have to go open source or standardize on a new Flash-aware SATA/SAS/FC interface.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/burtonator.wordpress.com/1799/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/burtonator.wordpress.com/1799/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/burtonator.wordpress.com/1799/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/burtonator.wordpress.com/1799/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/burtonator.wordpress.com/1799/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/burtonator.wordpress.com/1799/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/burtonator.wordpress.com/1799/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/burtonator.wordpress.com/1799/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/burtonator.wordpress.com/1799/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/burtonator.wordpress.com/1799/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=feedblog.org&blog=848832&post=1799&subd=burtonator&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://feedblog.org/2008/12/16/thoughts-on-fishworks-ssd-flash-and-high-density-storage/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">burtonator</media:title>
		</media:content>
	</item>
		<item>
		<title>Destroying MySQL</title>
		<link>http://feedblog.org/2008/12/04/destroying-mysql/</link>
		<comments>http://feedblog.org/2008/12/04/destroying-mysql/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 03:22:08 +0000</pubDate>
		<dc:creator>burtonator</dc:creator>
				<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://feedblog.org/?p=1794</guid>
		<description><![CDATA[Update: 
This post hit Reddit and now has 10k views.  This post was written for the MySQL community who pretty much already read my blog and know that I support MySQL (we use it in production, document bugs, contribute patches, etc).
While Postgres is a great database, MySQL still has a number of features that [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=feedblog.org&blog=848832&post=1794&subd=burtonator&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><b>Update: </b></p>
<p>This post hit Reddit and now has 10k views.  This post was written for the MySQL community who pretty much already read my blog and know that I support MySQL (we use it in production, document bugs, contribute patches, etc).</p>
<p>While Postgres is a great database, MySQL still has a number of features that Postgres doesn&#8217;t have.  One good example is the use of multiple storage engines (PBXT, InnoDB, MyISAM, etc).</p>
<p>The entire point of this post was to encourage Sun/MySQL to focus on the quality and stability of their releases.</p>
<p>Everyone I talk to who works for LARGE MySQL installations is complaining about the lack of quality and scalability.  These problems need to be fixed not routinely swept under the rug.</p>
<p><b>Original post: </b></p>
<p>Let&#8217;s say we wanted to destroy MySQL.  Basically, <a href="http://monty-says.blogspot.com/2008/11/oops-we-did-it-again-mysql-51-released.html">make sure no one EVER uses it again</a>.</p>
<p>Further, we want to simultaneously con as many people to fall into the MySQL trap and release products only to have MySQL crash and dump core. (This would have the added benefit of completely destroying the MySQL brand as new developers complain how they migrated to MySQL 5.0 only to have it crash.)</p>
<p>Well, I would perform the following:</p>
<p> &#8211; Release MySQL 4.1 with crash bugs.  Further, release features like subqueries that are pathologically designed to not actually use any indexes.  </p>
<p> &#8211; When the community complains, promise to never do it again and that you&#8217;ve learned your lesson.  Spend the next 6-12 months fixing these bugs.</p>
<p> &#8211; Release MySQL 5.0 with crash bugs.  Basically, cram as many features as possible and only begrudgingly accept patches.  </p>
<p> &#8211; When the community complains, promise to never do it again and that you&#8217;ve learned your lesson.  Spend the next 6-12 months fixing these bugs.</p>
<p> &#8211; Further, release TWO versions of MySQL and screw over your original community by keeping the latest and greatest releases from them.  Also, screw over your new community by making sure the new releases aren&#8217;t tested. </p>
<p> &#8211; Spend years talking about the quality of the next release and the massive new (and awesome) feature set.</p>
<p> &#8211; Slip your release date by 12 months.</p>
<p> &#8211; Allow crash bugs to remain in the new release</p>
<p> &#8211; The new features you were talking about?  Yeah.  They should be beta quality at best.  Basically, you want them to try the new features but have them crash when deployed into production.</p>
<p> &#8211; Further, new features you&#8217;ve been talking about this entire time (row based replication), shouldn&#8217;t be enabled by default because they&#8217;re unstable.</p>
<p> &#8211; When the community complains, promise to never do it again and that you&#8217;ve learned your lesson.  Spend the next 6-12 months fixing these bugs.</p>
<p>This might be a little harsh but I&#8217;m trying to make a point.  </p>
<p>I don&#8217;t think MySQL deliberately set out to accomplish this goal but they seem to be doing a good job.</p>
<p>MySQL is trying to ship features so they can sell to the market.  It&#8217;s a catch 22.  You&#8217;re not going to be able to sell an unstable product.</p>
<p>Further, these are anti-features for my company.  </p>
<p>I&#8217;m not going to be buying MySQL Enterprise anytime soon.  Further, I&#8217;m actively discouraging people from purchasing it&#8230;  </p>
<p>Why?  It&#8217;s just a bad deal.  They&#8217;re going to give you a binary which isn&#8217;t tested by the community and has limited development.  How is this a good idea?  </p>
<p>I&#8217;m going to be throwing down $20-30k in 2009 on MySQL development but it isn&#8217;t going to be given to Sun, MySQL, or Oracle.  It&#8217;s going to be given to companies like <a href="http://www.percona.com/">Percona</a>, <a href="http://openquery.com.au/">Open Query</a>, or <a href="http://provenscaling.com/">Proven Scaling</a> that actually care about their customers and release stable fixes to MySQL community.</p>
<p>We&#8217;re still on MySQL 4.1.  We&#8217;re <b>just</b> now migrating to 5.0.  Why?  Because we depend on performance improvements and fixes present in the community fork of 5.0.</p>
<p>These are not features/patches that are present in official Sun/MySQL binaries.</p>
<p>The Percona and OurDelta builds are good examples.  They include VERY important patches that are not present in MySQL 5.1 despite years of development.</p>
<p>About a year ago I needed a partitioning engine.  I played with MySQL 5.1&#8217;s partitioning engine which looked decent but it crashed when put it into production.</p>
<p>I gave them the benefit of the doubt because it wasn&#8217;t GA yet.  The bug that caused our crash &#8211; yeah, it&#8217;s still not fixed.</p>
<p>I waited two months and decided that a partitioning engine was too important to the success of <a href="http://spinn3r.com">my company</a> to wait around considering MySQL&#8217;s poor history.</p>
<p>We now have our own partition engine.  It&#8217;s in production, reliable, and serving our customers.  It&#8217;s also stable and has more features than the stock MySQL partitioning engine.</p>
<p>This is a recipe for failure.  </p>
<p>I have faith that MySQL can turn the boat around off but they&#8217;re going to need to totally halt development for a year and concentrate on stability.  </p>
<p>Heck, if you make the right decisions, I might even become a customer!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/burtonator.wordpress.com/1794/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/burtonator.wordpress.com/1794/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/burtonator.wordpress.com/1794/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/burtonator.wordpress.com/1794/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/burtonator.wordpress.com/1794/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/burtonator.wordpress.com/1794/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/burtonator.wordpress.com/1794/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/burtonator.wordpress.com/1794/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/burtonator.wordpress.com/1794/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/burtonator.wordpress.com/1794/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=feedblog.org&blog=848832&post=1794&subd=burtonator&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://feedblog.org/2008/12/04/destroying-mysql/feed/</wfw:commentRss>
		<slash:comments>34</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">burtonator</media:title>
		</media:content>
	</item>
		<item>
		<title>Desirable InnoDB Features</title>
		<link>http://feedblog.org/2008/12/02/desirable-innodb-features/</link>
		<comments>http://feedblog.org/2008/12/02/desirable-innodb-features/#comments</comments>
		<pubDate>Wed, 03 Dec 2008 03:32:23 +0000</pubDate>
		<dc:creator>burtonator</dc:creator>
				<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://feedblog.org/?p=1792</guid>
		<description><![CDATA[These are a few features I want to see implemented in InnoDB this year.
We need them for production so we&#8217;re probably going to throw down some cash to see this happen.  The patches will have to be Open Source of course.
If there are any companies out there that would like to co-sponsor these features [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=feedblog.org&blog=848832&post=1792&subd=burtonator&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>These are a few features I want to see implemented in InnoDB this year.</p>
<p>We need them for production so we&#8217;re probably going to throw down some cash to see this happen.  The patches will have to be Open Source of course.</p>
<p>If there are any companies out there that would like to co-sponsor these features feel free to add a note in the comments or contact me via email.</p>
<p><b>Native InnoDB warmup</b></p>
<p>We have about 100GB of InnoDB which needs to run 100% out of memory.  Our per-DB images are 32GB and the databases on these box fixes into about 25GB (a bit of room for growth).</p>
<p>Right now we have a hacked InnoDB warmup script that runs a number of SELECTS into a blackhole table which warmup the DB.</p>
<p>This MUST be amazingly inefficient as InnoDB could just scan the DB moving pages into memory as it reads forward.  One sequential scan of the table would be a LOT faster than our current random read.  Right now it takes us about 1.5 hours to warmup a 25GB database image.  </p>
<p>This is slightly related to a persistent and restored LRU buffer pool which Jeremy Cole suggested but different enough to suggest a separate architecture.</p>
<p><b>Faster recovery</b></p>
<p>Right now InnoDB recovery is DOG slow and 100% CPU bound.  Apparently, this us due to a poorly designed algorithm that does a full scan of a linked list on recovery.</p>
<p>I need to see this fixed because when a DB crashes I need to get it up and online ASAP.</p>
<p>This is also needed to improve our usage of InnoDB hotcopy for performing slave clones.  We take a snapshot of a running InnoDB database and perform recovery on a slave with the raw binary image.  Works great other than the fact that recovery takes ages.</p>
<p><b>Improved Operation for 100% Memory Databases</b></p>
<p>If we improve the performance of recovery, there exists some very amazing potential for ULTRA fast performance when running entirely out of memory.</p>
<p>One would use LARGE write ahead logs (20-50GB).  Enough to hold a few hours of transactions.</p>
<p>Then we could enable a mode for InnoDB to disable fuzzy checkpointing and instead continually write the full DB image sequentially to disk.  The DB would be continually doing a full checkpoint and deleting the previous database image.  If a box crashed the DB would just be restored from the write ahead logs.</p>
<p>The write transaction throughput in this situation would be seriously improved.  In theory this would be about 1/2 the full sequential throughput of the drive.  Fifty percent of the write performance would go to the WAL and the other 50% would be to the data files.</p>
<p>This would make InnoDB semi-log structured.  </p>
<p>Another alternative is to just continually flush starting from the beginning of the buffer pool and on to the end.  Then updating the WAL checkpoint so that the oldest block seen by the flush thread is cleaned up.</p>
<p>You would need to be 100% certain that your logs were sized large enough to store plenty of transactions so that it doesn&#8217;t force a checkpoint.</p>
<p>It could also completely eliminate InnoDB non-contiguous data and disk fragmentation.</p>
<p>Of course this might be a completely insane idea and perhaps I should just be using a log structure storage engine to begin with.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/burtonator.wordpress.com/1792/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/burtonator.wordpress.com/1792/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/burtonator.wordpress.com/1792/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/burtonator.wordpress.com/1792/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/burtonator.wordpress.com/1792/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/burtonator.wordpress.com/1792/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/burtonator.wordpress.com/1792/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/burtonator.wordpress.com/1792/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/burtonator.wordpress.com/1792/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/burtonator.wordpress.com/1792/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=feedblog.org&blog=848832&post=1792&subd=burtonator&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://feedblog.org/2008/12/02/desirable-innodb-features/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">burtonator</media:title>
		</media:content>
	</item>
		<item>
		<title>Violin&#8217;s Flash Device</title>
		<link>http://feedblog.org/2008/11/12/violins-flash-device/</link>
		<comments>http://feedblog.org/2008/11/12/violins-flash-device/#comments</comments>
		<pubDate>Thu, 13 Nov 2008 05:48:22 +0000</pubDate>
		<dc:creator>burtonator</dc:creator>
				<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://feedblog.org/?p=1788</guid>
		<description><![CDATA[Well this is awesome:
The flash version has an eight times larger capacity of 4TB, starting at 320GB and consists single level cell (SLC) NAND flash. Its latency is around 23 times slower at 70 microseconds. It supports more than 100,000 sustained random write IOPS and 200,000 read IOPS (4K blocks) and can do so for [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=feedblog.org&blog=848832&post=1788&subd=burtonator&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://www.theregister.co.uk/2008/11/10/violin_4tb_flash_memory_appliance/">Well this is awesome:</a></p>
<blockquote><p>The flash version has an eight times larger capacity of 4TB, starting at 320GB and consists single level cell (SLC) NAND flash. Its latency is around 23 times slower at 70 microseconds. It supports more than 100,000 sustained random write IOPS and 200,000 read IOPS (4K blocks) and can do so for ten years. According to Violin, users would need 500 15,000 rpm Fibre Channel drives to deliver this level of performance.</p></blockquote>
<p>The biggest barrier to running MySQL/InnoDB on a device like this is that it&#8217;s going to be 100% CPU bound.</p>
<p>My advice to the guys at Fusion IO or Violin is to give/loan one of your lower end machines to Percona, MySQL AB, or even just reach out to one of the alpha geeks. </p>
<p>Of course over time this stuff will just get fixed.  </p>
<p>Your devices are going to be CPU bound at first but with motivation they will quickly fix the problem and you&#8217;ll sell more customers.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/burtonator.wordpress.com/1788/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/burtonator.wordpress.com/1788/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/burtonator.wordpress.com/1788/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/burtonator.wordpress.com/1788/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/burtonator.wordpress.com/1788/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/burtonator.wordpress.com/1788/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/burtonator.wordpress.com/1788/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/burtonator.wordpress.com/1788/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/burtonator.wordpress.com/1788/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/burtonator.wordpress.com/1788/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=feedblog.org&blog=848832&post=1788&subd=burtonator&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://feedblog.org/2008/11/12/violins-flash-device/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">burtonator</media:title>
		</media:content>
	</item>
		<item>
		<title>MySQL InnoDB Isolated Patches for 5.0.37, 5.0.67 and Percona&#8217;s 5.0.68 Branch.</title>
		<link>http://feedblog.org/2008/10/02/mysql-innodb-isolated-patches-for-5037-5067-and-perconas-5068-branch/</link>
		<comments>http://feedblog.org/2008/10/02/mysql-innodb-isolated-patches-for-5037-5067-and-perconas-5068-branch/#comments</comments>
		<pubDate>Thu, 02 Oct 2008 18:30:57 +0000</pubDate>
		<dc:creator>burtonator</dc:creator>
				<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://feedblog.org/?p=1746</guid>
		<description><![CDATA[We&#8217;re migrating from MySQL 4.1.x to 5.0.x at work and one of the key features we need is the ability to freeze InnoDB and prevent it from writing to disk.
We do this to aid in syncing masters and slaves and performing backups.
Basically we freeze a master, copy the data to a new slave, unfreeze the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=feedblog.org&blog=848832&post=1746&subd=burtonator&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>We&#8217;re migrating from MySQL 4.1.x to 5.0.x at work and one of the key features we need is the ability to freeze InnoDB and prevent it from writing to disk.</p>
<p>We do this to aid in syncing masters and slaves and performing backups.</p>
<p>Basically we freeze a master, copy the data to a new slave, unfreeze the master, bring up the new slave, and then setup replication to start from right after we froze the master.</p>
<p>It&#8217;s MUCH faster than performing a mysqldump (20x faster).  A mysqldump tends to both do a ton of random seeks on disk as well as burn up a single core.</p>
<p>This type of &#8216;innodb hot copy&#8217; is only bottlenecked on disk and gigabit ethernet IO.</p>
<p>In theory you can sync at 125MB/s&#8230;</p>
<p>David ended up spending the time to isolate, test, and retarget the <a href="http://david415.wordpress.com/2008/10/02/innodb-freeze-patch/">patch for various MySQL versions</a>. </p>
<p>We tested this and one of the interesting properties is that it can actually continue to execute UPDATES as long as you&#8217;re using innodb_flush_log_at_trx_commit=0.</p>
<p>Anyway, I&#8217;d really like to see this land in <a href="https://launchpad.net/drizzle">Drizzle</a>, and MySQL +5.0.69.   </p>
<p>It only modifies eight lines of code so seems like a pretty no brainer.</p>
<p>Up until this point we were using xfs_freeze but ran into a nasty bug where read() would block during a file copy.  Apparently, xfs_freeze was designed to block for writes but not for reads.</p>
<p>My theory is that there&#8217;s a bug or a race condition between sync and xfs_freeze  which is leading to a partially dirty page cache preventing us from reading while the filesystem is frozen.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/burtonator.wordpress.com/1746/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/burtonator.wordpress.com/1746/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/burtonator.wordpress.com/1746/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/burtonator.wordpress.com/1746/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/burtonator.wordpress.com/1746/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/burtonator.wordpress.com/1746/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/burtonator.wordpress.com/1746/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/burtonator.wordpress.com/1746/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/burtonator.wordpress.com/1746/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/burtonator.wordpress.com/1746/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=feedblog.org&blog=848832&post=1746&subd=burtonator&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://feedblog.org/2008/10/02/mysql-innodb-isolated-patches-for-5037-5067-and-perconas-5068-branch/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">burtonator</media:title>
		</media:content>
	</item>
	</channel>
</rss>