<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xmlns:gr="http://www.google.com/schemas/reader/atom/" xmlns:idx="urn:atom-extension:indexing" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" idx:index="no" gr:dir="ltr"><!--
Content-type: Preventing XSRF in IE.

--><generator uri="http://www.google.com/reader">Google Reader</generator><id>tag:google.com,2005:reader/user/07820900200928170485/bundle/Planet Tao of Mac</id><title>Planet Tao of Mac</title><subtitle type="html">Replacement for Planet Tao of Mac</subtitle><gr:continuation>CPaq4dPDhq4C</gr:continuation><author><name>Rui</name></author><updated>2012-02-09T03:20:16Z</updated><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/planettao" /><feedburner:info uri="planettao" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-nd/2.0/" /><logo>http://feeds.feedburner.com/~fc/planettao?bg=99CCFF&amp;fg=444444&amp;anim=0</logo><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fplanettao" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fplanettao" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fplanettao" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/planettao" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fplanettao" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fplanettao" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fplanettao" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><entry gr:crawl-timestamp-msec="1328757616648"><id gr:original-id="http://mjtsai.com/blog/?p=4274">tag:google.com,2005:reader/item/2d05a4a324961c18</id><category term="Technology" /><title type="html">WSJ on Sandboxing</title><published>2012-02-09T02:29:10Z</published><updated>2012-02-09T02:29:10Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/planettao/~3/hrfQQ9Z-UiA/" type="text/html" /><content xml:base="http://mjtsai.com/blog" type="html">&lt;p&gt;&lt;a href="http://online.wsj.com/article/SB10001424052970203315804577209314228870028.html"&gt;Jessica E. Vascellaro&lt;/a&gt; (via &lt;a href="https://twitter.com/jsnell/status/167428627389087744"&gt;Jason Snell&lt;/a&gt;):&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Mac developer Mark Munz, of Vancouver, Wash., says to comply with Apple’s new rules, he has to remove key features of his text-reformatting app TextSoap that integrate with other programs.&lt;/p&gt;
&lt;p&gt;As a workaround, he’s working on a “helper app” that Mac App Store users could download separately to restore the extra functionality. “It sort of defeats the purpose of what sandboxing is about,” says Mr. Munz, who is president of Unmarked Software LLC.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Unfortunately, that approach isn’t an option if API bugs or omissions prevent core features of the application from working in the sandbox.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/planettao/~4/hrfQQ9Z-UiA" height="1" width="1"/&gt;</content><author><name>Michael Tsai</name></author><source gr:stream-id="feed/http://mjtsai.com/blog/feed/"><id>tag:google.com,2005:reader/feed/http://mjtsai.com/blog/feed/</id><title type="html">Michael Tsai</title><link rel="alternate" href="http://mjtsai.com/blog" type="text/html" /></source><feedburner:origLink>http://mjtsai.com/blog/2012/02/08/wsj-on-sandboxing/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1328753797764"><id gr:original-id="http://mjtsai.com/blog/?p=4268">tag:google.com,2005:reader/item/a6e0654f1a681438</id><category term="Technology" /><title type="html">How iTunes Match Works for Copyright Holders</title><published>2012-02-09T02:05:30Z</published><updated>2012-02-09T02:05:30Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/planettao/~3/Vj6CPwZglW8/" type="text/html" /><content xml:base="http://mjtsai.com/blog" type="html">&lt;p&gt;&lt;a href="http://blog.tunecore.com/2012/02/apple-imatch-the-first-royalties-are-in.html"&gt;Jeff Price&lt;/a&gt; (via &lt;a href="http://daringfireball.net/linked/2012/02/08/itunes-match"&gt;John Gruber&lt;/a&gt;):&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;A person has a song on her computer hard drive. She clicks on the song and plays it. No one is getting paid. The same person pays iTunes $25 for iMatch. She now clicks on the same song and plays it through her iMatch service. Copyright holders get paid.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Two interesting points here. First, you pay Apple a flat fee for the &lt;em&gt;ability&lt;/em&gt; to download, whether or not you actually do; Apple pays the music labels &lt;em&gt;each time&lt;/em&gt; you actually download. So Apple is playing the odds here, hoping that the average user won’t have more downloads than expected. Second, the labels get paid even if you’re just downloading a backup of music that you’d already bought on CD. I can see why Apple likes this, but it doesn’t seem like a good precedent for users.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/planettao/~4/Vj6CPwZglW8" height="1" width="1"/&gt;</content><author><name>Michael Tsai</name></author><source gr:stream-id="feed/http://mjtsai.com/blog/feed/"><id>tag:google.com,2005:reader/feed/http://mjtsai.com/blog/feed/</id><title type="html">Michael Tsai</title><link rel="alternate" href="http://mjtsai.com/blog" type="text/html" /></source><feedburner:origLink>http://mjtsai.com/blog/2012/02/08/how-itunes-match-works-for-copyright-holders/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1328753797764"><id gr:original-id="http://mjtsai.com/blog/?p=4266">tag:google.com,2005:reader/item/77f4ffb4963edb04</id><category term="Technology" /><title type="html">The Real Paper</title><published>2012-02-09T01:53:10Z</published><updated>2012-02-09T01:53:10Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/planettao/~3/oWe0FD_GuoQ/" type="text/html" /><content xml:base="http://mjtsai.com/blog" type="html">&lt;p&gt;&lt;a href="http://blog.thephoenix.com/BLOGS/phlog/archive/2012/02/08/bill-keller-new-york-times-stole-our-column-should-we-sue.aspx"&gt;The Boston Phoenix&lt;/a&gt; says that &lt;a href="http://nocera.blogs.nytimes.com/2012/02/03/a-few-words-about-clark-booth/"&gt;The New York Times&lt;/a&gt; published a PDF of another newspaper’s article without obtaining permission (via &lt;a href="http://news.ycombinator.com/item?id=3568659"&gt;Hacker News&lt;/a&gt;). However, I was unable to verify this because the paper of record has (apparently to avoid embarrassment) removed all references to said PDF.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/planettao/~4/oWe0FD_GuoQ" height="1" width="1"/&gt;</content><author><name>Michael Tsai</name></author><source gr:stream-id="feed/http://mjtsai.com/blog/feed/"><id>tag:google.com,2005:reader/feed/http://mjtsai.com/blog/feed/</id><title type="html">Michael Tsai</title><link rel="alternate" href="http://mjtsai.com/blog" type="text/html" /></source><feedburner:origLink>http://mjtsai.com/blog/2012/02/08/the-real-paper/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1328732866795"><id gr:original-id="http://mjtsai.com/blog/?p=4254">tag:google.com,2005:reader/item/d1dd8f29f22779cf</id><category term="Technology" /><title type="html">Path Uploads Your Entire iPhone Address Book to Its Servers</title><published>2012-02-08T20:26:52Z</published><updated>2012-02-08T20:26:52Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/planettao/~3/rDS3gKlcnZY/" type="text/html" /><content xml:base="http://mjtsai.com/blog" type="html">&lt;p&gt;In 2010, &lt;a href="http://mjtsai.com/blog/2010/10/01/curated-doesnt-necessarily-mean-secure/"&gt;I wrote&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;I don’t understand why iOS makes such a big deal about permission to access location data, when any random app, even one that shouldn’t need network access at all, can access my address book, photos, and clipboard and upload them to who-knows-where.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Yesterday, &lt;a href="http://mclov.in/2012/02/08/path-uploads-your-entire-address-book-to-their-servers.html"&gt;Arun Thampi&lt;/a&gt; wrote:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Upon inspecting closer, I noticed that my &lt;strong&gt;entire address book (including full names, emails and phone numbers) was being sent as a plist to Path&lt;/strong&gt;. Now I don’t remember having given permission to Path to access my address book and send its contents to its servers, so I created a completely new “Path” and repeated the experiment and I got the same result – my address book was in Path’s hands.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="http://daringfireball.net/linked/2012/02/08/path"&gt;John Gruber&lt;/a&gt; notes that the &lt;a href="http://mclov.in/2012/02/08/path-uploads-your-entire-address-book-to-their-servers.html#comment-432202082"&gt;response from Path&lt;/a&gt; is not very satisfying. Is this &lt;a href="http://dcurt.is/stealing-your-address-book"&gt;really&lt;/a&gt; “currently the industry best practice”? See, for example, these questions from &lt;a href="http://mclov.in/2012/02/08/path-uploads-your-entire-address-book-to-their-servers.html#comment-432211641"&gt;Matt Gemmell&lt;/a&gt;. There’s no automated way to get them to delete your data. Rule 17.1 of the App Store Review Guidelines seems to prohibit this sort of behavior without the user’s consent, yet &lt;a href="http://itunes.apple.com/us/app/path/id403639508?mt=8"&gt;Path&lt;/a&gt; has been in the curated App Store for over a year and Apple doesn’t seem to have noticed that it’s sending this information back to the server &lt;strike&gt;in cleartext&lt;/strike&gt;. Now that the news has broken, Apple has neither pulled the app nor approved the update that asks users to opt in. As &lt;a href="https://twitter.com/petermaurer/status/167315253812666368"&gt;Peter Maurer&lt;/a&gt; says, “No technology will ever protect us from Trojan horses. Rules that destroy functionality are mere security theater.”&lt;/p&gt;
&lt;p&gt;Update (2012-02-08): The &lt;a href="http://blog.path.com/post/17274932484/we-are-sorry"&gt;official response from Path&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;We are deeply sorry if you were uncomfortable with how our application used your phone contacts.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;That could have been phrased better. Also, &lt;a href="http://gawker.com/5883549/dont-forgive-path-the-creepy-iphone-company-that-misled-us-once-already"&gt;Gawker&lt;/a&gt; quotes Path CEO Dave Morin, in November 2010:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Path does not retain or store any of your information in any way.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Good thing they will “continue to be transparent.”&lt;/p&gt;
&lt;p&gt;Also, in 2010, &lt;a href="http://scripting.com/stories/2010/11/15/theTechIndustryIsAVirus.html"&gt;Dave Winer&lt;/a&gt; noticed that something wasn’t right, but he’d forgotten about it until &lt;a href="http://scripting.com/stories/2012/02/08/take3.html"&gt;now&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Update (2012-02-09): &lt;a href="http://gawker.com/5883549/dont-forgive-path-the-creepy-iphone-company-that-misled-us-once-already"&gt;Gawker&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;The official version from Morin is that the statement was technically accurate, at the time he made it. He just changed his mind.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://twitter.com/petermaurer/status/167522277141909504"&gt;Peter Maurer&lt;/a&gt; links to this screenshot of &lt;a href="http://twitpic.com/8hagc6"&gt;Path’s new opt-in alert&lt;/a&gt;, &lt;a href="http://twitter.theinfo.org/167522277141909504"&gt;noting&lt;/a&gt; that it isn’t very transparent. It just asks whether you want to invite your friends, without explaining what this entails for your personal data. However, Ole Zorn links to &lt;a href="http://yfrog.com/h7ttsgp"&gt;this screenshot&lt;/a&gt; in which the alert actually says “Path needs to send contacts to our server.”&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/planettao/~4/rDS3gKlcnZY" height="1" width="1"/&gt;</content><author><name>Michael Tsai</name></author><source gr:stream-id="feed/http://mjtsai.com/blog/feed/"><id>tag:google.com,2005:reader/feed/http://mjtsai.com/blog/feed/</id><title type="html">Michael Tsai</title><link rel="alternate" href="http://mjtsai.com/blog" type="text/html" /></source><feedburner:origLink>http://mjtsai.com/blog/2012/02/08/path-uploads-your-entire-iphone-address-book-to-its-servers/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1328691673261"><id gr:original-id="http://blog.pedrocustodio.com/?p=9500">tag:google.com,2005:reader/item/53d5f0285e54ed62</id><category term="FunStuff" /><category term="Viagens" /><title type="html">Digitals</title><published>2012-02-08T09:00:46Z</published><updated>2012-02-08T09:00:46Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/planettao/~3/nLwHWdgxjyU/" type="text/html" /><content xml:base="http://blog.pedrocustodio.com/" type="html">&lt;p&gt;&lt;a href="http://chriscrutchfield.tv"&gt;Chris Crutchfield&lt;/a&gt; created this awesome, freakish little video – &lt;a href="http://vimeo.com/35873217"&gt;Digitals&lt;/a&gt; – to recap a moment in time when he got an email, an sms, a phone call, a Facebook message and two tweets all within about 5 seconds of one another.&lt;/p&gt;
&lt;p&gt;It’s interesting that it feels so “crazy” when seen like this in a movie, but this the reality for most of us, just another day in our lives. &lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/pedrocustodio/~4/DbB1YBd0fLI" height="1" width="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/planettao/~4/nLwHWdgxjyU" height="1" width="1"/&gt;</content><author><name>pecus</name></author><source gr:stream-id="feed/http://blog.pedrocustodio.com/feed/"><id>tag:google.com,2005:reader/feed/http://blog.pedrocustodio.com/feed/</id><title type="html">/var/log</title><link rel="alternate" href="http://blog.pedrocustodio.com" type="text/html" /></source><feedburner:origLink>http://feedproxy.google.com/~r/pedrocustodio/~3/DbB1YBd0fLI/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1328636552641"><id gr:original-id="http://blog.pedrocustodio.com/?p=9384">tag:google.com,2005:reader/item/950827ab55a53d62</id><category term="ServiceDesign" /><category term="Vídeo" /><title type="html">Designing Better Service Experiences</title><published>2012-02-07T17:35:02Z</published><updated>2012-02-07T17:35:02Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/planettao/~3/TNtFq3oPe-c/" type="text/html" /><content xml:base="http://blog.pedrocustodio.com/" type="html">&lt;p&gt;&lt;a href="http://continuuminnovation.com/"&gt;Continuum&lt;/a&gt; and the &lt;a href="http://www.aiga.org/"&gt;AIGA&lt;/a&gt; convened a group of &lt;a href="http://vimeo.com/34557634"&gt;top business leaders and innovators&lt;/a&gt; from a variety of backgrounds and industries to discuss how designing a service experience with purpose can transform a company’s image and make people’s lives better.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/planettao/~4/TNtFq3oPe-c" height="1" width="1"/&gt;</content><author><name>pecus</name></author><source gr:stream-id="feed/http://blog.pedrocustodio.com/feed/"><id>tag:google.com,2005:reader/feed/http://blog.pedrocustodio.com/feed/</id><title type="html">/var/log</title><link rel="alternate" href="http://blog.pedrocustodio.com" type="text/html" /></source><feedburner:origLink>http://blog.pedrocustodio.com/2012/02/07/designing-better-service-experiences/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1328634846764"><id gr:original-id="http://mjtsai.com/blog/?p=4250">tag:google.com,2005:reader/item/37a92183c37cfb33</id><category term="Technology" /><title type="html">AirPort Utility 6.0</title><published>2012-02-07T16:11:26Z</published><updated>2012-02-07T16:11:26Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/planettao/~3/Xddi4-YHJ9c/" type="text/html" /><content xml:base="http://mjtsai.com/blog" type="html">&lt;p&gt;&lt;a href="http://tidbits.com/e/12760"&gt;Glenn Fleishman&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;You may like, for most network purposes, the simplicity of version 6. It looks to me as though Apple has pruned at least half of the options available in nested dialog boxes and elsewhere. (You may also hate it for this reason.) For average users, having fewer choices with better presentation is a plus. For network admins and advanced users, you’ll be cursing Apple as you download the previous version.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Will the missing features be restored in an update to 6.0? AirPort Utility 5.6 works today, but what happens the next time Mac OS X and iCloud are updated? Since Apple has not stated its intent, I think you have to assume that the current 6.0 feature set is what they plan to support going forward.&lt;/p&gt;
&lt;p&gt;As it happens, though, I’m no longer using AirPort Utility. A few months ago, I decided to retire a Time Capsule that I had inherited. I’d never been able to get Time Machine to work reliably with it. And something had changed so that, even though I never used its storage features, the hard drive was always spinning loudly. Apple’s $179 AirPort Extreme seemed like overkill. I just needed a wireless router with a few Ethernet ports—no AirTunes, printer sharing, or Back to My Mac. Plus, reviews mentioned that the newer Apple base stations make a high-pitched noise. That would drive me crazy when watching TV.&lt;/p&gt;
&lt;p&gt;I ended up getting a $35 Cisco router. I ignored the sketchy looking software on the CD, which promised to copy over the settings from my old router, and just set it up via Safari. So far so good. Download speeds are actually faster than with the Time Capsule.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/planettao/~4/Xddi4-YHJ9c" height="1" width="1"/&gt;</content><author><name>Michael Tsai</name></author><source gr:stream-id="feed/http://mjtsai.com/blog/feed/"><id>tag:google.com,2005:reader/feed/http://mjtsai.com/blog/feed/</id><title type="html">Michael Tsai</title><link rel="alternate" href="http://mjtsai.com/blog" type="text/html" /></source><feedburner:origLink>http://mjtsai.com/blog/2012/02/07/airport-utility-6-0/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1328605680699"><id gr:original-id="http://blog.pedrocustodio.com/?p=9267">tag:google.com,2005:reader/item/1ab736a16c7f4670</id><category term="Sustainable" /><category term="Urban Life" /><category term="UX" /><title type="html">Urbanflow: an operating system for cities</title><published>2012-02-07T09:02:16Z</published><updated>2012-02-07T09:02:16Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/planettao/~3/jMNry_fDwMk/" type="text/html" /><content xml:base="http://blog.pedrocustodio.com/" type="html">&lt;p&gt;In a time when the urban population has outpaced the one living in rural environments, our cities although a marvelous achievement (think about the logistics and food provision systems that power up a city), they tend to be inefficient, slow and disconnected from the majority of their citizens.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://helsinki.urbanflow.io/"&gt;Urbanflow&lt;/a&gt; proposition, a joint effort of &lt;a href="http://nordkapp.fi/"&gt;Nordkapp&lt;/a&gt; and &lt;a href="http://urbanscale.org/"&gt;Urbanflow&lt;/a&gt; (founded by &lt;a href="https://twitter.com/#!/agpublic"&gt;Adam Greenfield&lt;/a&gt;) aims to take advantage of urban screens as means to provide not just locally-oriented information (maps, points of interest, etc.) but also to provide a wide range of more generic information about the city (air quality, traffic, etc), converting what used to be a static snapshot of information into an interactive window towards the ins and outs the city. &lt;/p&gt;
&lt;p&gt;I found here in Düsseldorf a very interesting example of a realtime sculpture – &lt;a href="http://www.360cities.net/image/near-the-rheinturm-duesseldorf-germany?utm_medium=all_images&amp;amp;utm_source=google_earth#-153.42,34.93,68.1"&gt;The Energy Pyramid&lt;/a&gt; which displays in realtime the amount of energy, gaz and warm water being consumed by the city.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/pedrocustodio/~4/6rRp9AVKE3Q" height="1" width="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/planettao/~4/jMNry_fDwMk" height="1" width="1"/&gt;</content><author><name>pecus</name></author><source gr:stream-id="feed/http://blog.pedrocustodio.com/feed/"><id>tag:google.com,2005:reader/feed/http://blog.pedrocustodio.com/feed/</id><title type="html">/var/log</title><link rel="alternate" href="http://blog.pedrocustodio.com" type="text/html" /></source><feedburner:origLink>http://feedproxy.google.com/~r/pedrocustodio/~3/6rRp9AVKE3Q/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1328604688596"><id gr:original-id="http://blog.pedrocustodio.com/?p=9213">tag:google.com,2005:reader/item/f29425e8f31b509b</id><category term="Vídeo" /><category term="Visualization" /><title type="html">Robot Readable World</title><published>2012-02-07T08:50:46Z</published><updated>2012-02-07T08:50:46Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/planettao/~3/UAGY4WRnSTQ/" type="text/html" /><content xml:base="http://blog.pedrocustodio.com/" type="html">&lt;blockquote&gt;&lt;p&gt;As robots begin to inhabit the world alongside us, how do they see and gather meaning from our streets, cities, media and from us? &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Read more about it &lt;a href="http://berglondon.com/blog/2012/02/06/robot-readable-world-the-film/"&gt;@BERG&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/pedrocustodio/~4/lKlBqBZwLm8" height="1" width="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/planettao/~4/UAGY4WRnSTQ" height="1" width="1"/&gt;</content><author><name>pecus</name></author><source gr:stream-id="feed/http://blog.pedrocustodio.com/feed/"><id>tag:google.com,2005:reader/feed/http://blog.pedrocustodio.com/feed/</id><title type="html">/var/log</title><link rel="alternate" href="http://blog.pedrocustodio.com" type="text/html" /></source><feedburner:origLink>http://feedproxy.google.com/~r/pedrocustodio/~3/lKlBqBZwLm8/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1328457589084"><id gr:original-id="http://www.bytebot.net/blog/?p=2298">tag:google.com,2005:reader/item/107aef932621b80f</id><category term="MySQL" /><category term="FOSDEM" /><category term="Frédéric Descamps" /><category term="Percona Toolkit" /><title type="html">Managing MySQL with Percona Toolkit by Frédéric Descamps</title><published>2012-02-05T15:58:15Z</published><updated>2012-02-05T15:58:15Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/planettao/~3/dweosbWwYJY/managing-mysql-with-percona-toolkit-by-frederic-descamps" type="text/html" /><content xml:base="http://www.bytebot.net/blog" type="html">&lt;p&gt;Frédéric Descamps of &lt;a href="http://www.percona.com/"&gt;Percona&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Percona Toolkit is Maatkit &amp;amp; Aspersa combined. Opensource and the tools are very useful for a DBA.&lt;/p&gt;
&lt;p&gt;You need Perl, DBI, DBD::mysql, Term::ReadKey. Most tools are written in Perl, and whatever is in Bash is being re-written in Perl. There is also a tarball or RPM or DEB packages.&lt;/p&gt;
&lt;p&gt;Know your environment. The hardware &amp;amp; OS are crucial for you to know. How much memory/CPU do you use? Do you use swap? Is this a physical/virtual machine? Do you have free space? What kind of RAID controller? Volumes? Disk? What about the network interfaces? What IO schedulers are used? Which filesystem is the data stored on? To answer all that, just use &lt;tt&gt;&lt;a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-summary.html"&gt;pt-summary&lt;/a&gt;&lt;/tt&gt;.&lt;/p&gt;
&lt;p&gt;Know your MySQL environment. Version? Build? How many databases? Where is the data directory? What about replication? What are key InnoDB settings? Storage engine in use? Index type? Foreign keys? Full text indexes? To answer all this and more use &lt;a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-mysql-summary.html"&gt;&lt;tt&gt;pt-mysql-summary&lt;/tt&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;pt-slave-find shows you the topology and replication hierarchy of your MySQL replication instances. An inventory of replicas!&lt;/p&gt;
&lt;p&gt;Where is my disk I/O going? Use &lt;tt&gt;&lt;a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-diskstats.html"&gt;pt-diskstats&lt;/a&gt;&lt;/tt&gt; which is an improved iostat. There is &lt;tt&gt;&lt;a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-ioprofile.html"&gt;pt-ioprofile&lt;/a&gt;&lt;/tt&gt; but it can be dangerous in production.&lt;/p&gt;
&lt;p&gt;Now its time to get more intimate with your database. Let’s try to find the answer to these questions: how are the indexes used? Are there duplicate keys? Which queries are eating most of the resources? You can use &lt;a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-duplicate-key-checker.html"&gt;&lt;tt&gt;pt-duplicate-key-checker&lt;/tt&gt;&lt;/a&gt; to check for duplicate/redundant indexes or foreign keys. &lt;a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-index-usage.html"&gt;&lt;tt&gt;pt-index-usage&lt;/tt&gt;&lt;/a&gt; can tell you which indexes are unused. If you think you have bad SQL, check out &lt;a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-query-advisor.html"&gt;&lt;tt&gt;pt-query-advisor&lt;/tt&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can use &lt;a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-query-digest.html"&gt;&lt;tt&gt;pt-query-digest&lt;/tt&gt;&lt;/a&gt; to analyze the slow query log and show a profile of the workload. You mostly use this with slow query logs &amp;amp; tcpdump’s. Be careful when you have dropped packets — results may tend to be fake then!&lt;/p&gt;
&lt;p&gt;After all this, its time to maintain your environment.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-deadlock-logger.html"&gt;&lt;tt&gt;pt-deadlock-logger&lt;/tt&gt;&lt;/a&gt; checks InnoDB status to log MySQL deadlock information. It needs to run continually to capture things.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-fk-error-logger.html"&gt;&lt;tt&gt;pt-fk-error-logger&lt;/tt&gt;&lt;/a&gt; extracts and logs MySQL foreign key errors.&lt;/p&gt;
&lt;p&gt;&lt;tt&gt;&lt;a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-online-schema-change.html"&gt;pt-online-schema-change&lt;/a&gt;&lt;/tt&gt; to alter tables. It makes a “shadow copy” and swaps them. Extremely useful for large, long-running ALTER. Facebook uses the same technique.&lt;/p&gt;
&lt;p&gt;Validate your upgrades as upgrades are the leading cause of downtime. Are queries using different indexes? Is query execution plan different? New errors? See &lt;tt&gt;&lt;a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-upgrade.html"&gt;pt-upgrade&lt;/a&gt;&lt;/tt&gt; for this. Best to run this on a third machine (i.e. the old machine and a new machine to see how it goes).&lt;/p&gt;
&lt;p&gt;Verify replication integrity – &lt;tt&gt;&lt;a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-table-checksum.html"&gt;pt-table-checksum&lt;/a&gt;&lt;/tt&gt;. Perform an online replication consistency check or checksum MySQL tables efficiently on one or many servers. Use it routinely (mandatory for 95% of MySQL users). Put it in a weekly crontab. Repair differences with &lt;tt&gt;pt-table-sync&lt;/tt&gt;.&lt;/p&gt;
&lt;p&gt;Repair out-of-sync replicas – &lt;tt&gt;&lt;a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-table-sync.html"&gt;pt-table-sync&lt;/a&gt;&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;Measure delay acfurately – &lt;tt&gt;&lt;a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-heartbeat.html"&gt;pt-heartbeat&lt;/a&gt;&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;Deliberately delay replication – &lt;tt&gt;&lt;a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-slave-delay.html"&gt;pt-slave-delay&lt;/a&gt;&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;Watch &amp;amp; restart MySQL replication after errors – &lt;a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-slave-restart.html"&gt;&lt;tt&gt;pt-slave-restart&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When there are problems, get the symptoms when it hurts. Look at &lt;tt&gt;&lt;a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-stalk.html"&gt;pt-stalk&lt;/a&gt;&lt;/tt&gt; (wait for a condition to occur them begin collecting data – eg. everytime the threads go over 2,000 you have a problem, so it collects stuff – it calls &lt;tt&gt;pt-collect&lt;/tt&gt;), &lt;tt&gt;&lt;a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-collect.html"&gt;pt-collect&lt;/a&gt;&lt;/tt&gt; (collect information from a server for some period of time), and &lt;tt&gt;&lt;a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-sift.html"&gt;pt-sift&lt;/a&gt;&lt;/tt&gt;.&lt;/p&gt;
&lt;p&gt;&lt;tt&gt;&lt;a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-mext.html"&gt;pt-mext&lt;/a&gt;&lt;/tt&gt; looks at many samples of MySQL &lt;tt&gt;SHOW GLOBAL STATUS&lt;/tt&gt; side-by-side. Default STATUS shows counter since the MySQL instances started. It is very helpful to see a delta of recent activity.&lt;/p&gt;
&lt;p&gt;The future: &lt;a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-query-digest.html"&gt;&lt;tt&gt;pt-query-digest&lt;/tt&gt;&lt;/a&gt; will do query reviews; &lt;tt&gt;pt-stalk&lt;/tt&gt; will do “magical fault detection algorithm”. Its all opensource and its all on Launchpad at &lt;a href="https://launchpad.net/percona-toolkit"&gt;lp:percona-toolkit&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2012/02/05/practical-mysql-indexing-guidelines-by-stephane-combaudon" rel="bookmark" title="Permanent Link: Practical MySQL Indexing guidelines by Stéphane Combaudon"&gt;Practical MySQL Indexing guidelines by Stéphane Combaudon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2012/02/05/replication-features-of-2011-by-sergey-petrunia" rel="bookmark" title="Permanent Link: Replication features of 2011 by Sergey Petrunia"&gt;Replication features of 2011 by Sergey Petrunia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2012/02/05/mysql-synchronous-replication-in-practice-with-galera-by-oli-sennhauser" rel="bookmark" title="Permanent Link: MySQL synchronous replication in practice with Galera by Oli Sennhauser"&gt;MySQL synchronous replication in practice with Galera by Oli Sennhauser&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;&lt;p&gt;&lt;iframe src="http://feedads.g.doubleclick.net/~ah/f/67eiqfmeldrdscqfdtvq741osc/300/250?ca=1&amp;amp;fh=280#http%3A%2F%2Fwww.bytebot.net%2Fblog%2Farchives%2F2012%2F02%2F05%2Fmanaging-mysql-with-percona-toolkit-by-frederic-descamps" width="100%" height="280" frameborder="0" scrolling="no" marginwidth="0" marginheight="0"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;div&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=DjZUixVrZLA:8MTXyoizufw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=DjZUixVrZLA:8MTXyoizufw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?i=DjZUixVrZLA:8MTXyoizufw:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=DjZUixVrZLA:8MTXyoizufw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?i=DjZUixVrZLA:8MTXyoizufw:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=DjZUixVrZLA:8MTXyoizufw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?d=dnMXMwOfBR0" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ColinCharles/~4/DjZUixVrZLA" height="1" width="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/planettao/~4/dweosbWwYJY" height="1" width="1"/&gt;</content><author><name>Colin Charles</name></author><source gr:stream-id="feed/http://www.bytebot.net/blog/feed"><id>tag:google.com,2005:reader/feed/http://www.bytebot.net/blog/feed</id><title type="html">Colin Charles Agenda</title><link rel="alternate" href="http://www.bytebot.net/blog" type="text/html" /></source><feedburner:origLink>http://feedproxy.google.com/~r/ColinCharles/~3/DjZUixVrZLA/managing-mysql-with-percona-toolkit-by-frederic-descamps</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1328452415910"><id gr:original-id="http://www.bytebot.net/blog/?p=2295">tag:google.com,2005:reader/item/3350aa63f6f7f21f</id><category term="MariaDB" /><category term="MySQL" /><category term="FOSDEM" /><category term="replication" /><category term="Sergey Petrunia" /><title type="html">Replication features of 2011 by Sergey Petrunia</title><published>2012-02-05T14:32:45Z</published><updated>2012-02-05T14:32:45Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/planettao/~3/iXXG3Co7XBE/replication-features-of-2011-by-sergey-petrunia" type="text/html" /><content xml:base="http://www.bytebot.net/blog" type="html">&lt;p&gt;&lt;a href="http://s.petrunia.net/blog/"&gt;Sergey Petrunia&lt;/a&gt; of the &lt;a href="http://mariadb.org/"&gt;MariaDB&lt;/a&gt; project &amp;amp;&lt;a href="http://montyprogram.com/"&gt; Monty Program&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;MySQL 5.5 GA at the end of 2010. MariaDB 5.3 RC towards the end of 2011 (beta in June 2011).&lt;/p&gt;
&lt;p&gt;MySQL 5.5 is merged to Percona Server 5.5 which included semi-sync replication, slave fsync options, atuomatic relay log recovery, RBR slave type conversions (question if this is useful or not), individual log flushing (very useful, but not many using), replication heartbeat, SHOW RELAYLOG EVENTS. About 2/3rds of the audience use MySQL 5.5 in production, with only 2 people using semi-sync replication.&lt;/p&gt;
&lt;p&gt;MariaDB 5.3 brings replication features brings group commit in the binary log, which is merged into Percona Server 5.5. Checksums for binlog events which is merged from MySQL 5.6. Sergey goes in-depth about the &lt;a href="http://kb.askmonty.org/en/group-commit-for-the-binary-log"&gt;group commit for the binary log&lt;/a&gt;. To find out a little more about MariaDB replication changes, see &lt;a href="http://kb.askmonty.org/en/replication"&gt;Replication&lt;/a&gt; in the Knowledgebase.&lt;/p&gt;
&lt;p&gt;There are several implementations of group commit. Facebook started it, followed by MariaDB &amp;amp; Oracle. Percona 5.5 is GA so the feature is there, its not in MySQL 5.6 (yet?), and MariaDB 5.3 is where its at. Seems like the MariaDB implementation is the best so far – refer to the &lt;a href="https://www.facebook.com/note.php?note_id=10150261692455933"&gt;Facebook benchmark&lt;/a&gt; performed by Mark Callaghan.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kb.askmonty.org/en/annotate_rows_log_event"&gt;Annotated RBR&lt;/a&gt; poses a compatibility problem. MariaDB 5.3 has annotate_rows, while MySQL 5.6 has rows_query event. They are different events. So you cannot have a MariaDB 5.3 master and a MySQL 5.6 slave at this moment. So MySQL 5.6 will have a flag to mark “ignorable” binlog events which will be merged into MariaDB and this will make binary logs compatible again.&lt;/p&gt;
&lt;p&gt;There is now also optimized &lt;a href="http://kb.askmonty.org/en/row-based-replication-with-no-primary-key"&gt;RBR for tables with no primary key&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;MySQL 5.6 also has crash-safe slave (replication information stored in tables). Crash-safe master (binary log recovery if the server starts &amp;amp; sees the binary log is corrupted). &lt;a href="http://dev.mysql.com/doc/refman/5.6/en/news-5-6-3.html"&gt;Parallel event execution&lt;/a&gt; is something that is new in MySQL 5.6 which is the most important feature for Sergey.&lt;/p&gt;
&lt;p&gt;Pre-heating: There is mk-slave-prefetch (&lt;a href="https://twitter.com/#!/xaprb/status/128876485472829440"&gt;famous quote&lt;/a&gt;: “Please don’t use mk-slave-prefetch on #MySQL unless you are Facebook.”). There is &lt;a href="http://yoshinorimatsunobu.blogspot.com/2011/10/making-slave-pre-fetching-work-better.html"&gt;replication booster&lt;/a&gt; by Yoshinori Matsunobu. There is a &lt;a href="http://dom.as/2011/12/03/replication-prefetching/"&gt;Python version&lt;/a&gt; of mk-slave-prefetch that Facebook uses.&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2012/02/05/mariadb-5-3-query-optimizer-by-sergey-petrunia" rel="bookmark" title="Permanent Link: MariaDB 5.3 query optimizer by Sergey Petrunia"&gt;MariaDB 5.3 query optimizer by Sergey Petrunia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2011/04/20/where-is-mariadb-today" rel="bookmark" title="Permanent Link: Where is MariaDB today?"&gt;Where is MariaDB today?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2012/02/05/building-simple-complex-replication-clusters-with-tungsten-replicator-by-giuseppe-maxia" rel="bookmark" title="Permanent Link: Building simple &amp;amp; complex replication clusters with Tungsten Replicator by Giuseppe Maxia"&gt;Building simple &amp;amp; complex replication clusters with Tungsten Replicator by Giuseppe Maxia&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;&lt;p&gt;&lt;iframe src="http://feedads.g.doubleclick.net/~ah/f/67eiqfmeldrdscqfdtvq741osc/300/250?ca=1&amp;amp;fh=280#http%3A%2F%2Fwww.bytebot.net%2Fblog%2Farchives%2F2012%2F02%2F05%2Freplication-features-of-2011-by-sergey-petrunia" width="100%" height="280" frameborder="0" scrolling="no" marginwidth="0" marginheight="0"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;div&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=e9ct7Lg6_NY:WaKaQdwdPXM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=e9ct7Lg6_NY:WaKaQdwdPXM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?i=e9ct7Lg6_NY:WaKaQdwdPXM:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=e9ct7Lg6_NY:WaKaQdwdPXM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?i=e9ct7Lg6_NY:WaKaQdwdPXM:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=e9ct7Lg6_NY:WaKaQdwdPXM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?d=dnMXMwOfBR0" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ColinCharles/~4/e9ct7Lg6_NY" height="1" width="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/planettao/~4/iXXG3Co7XBE" height="1" width="1"/&gt;</content><author><name>Colin Charles</name></author><source gr:stream-id="feed/http://www.bytebot.net/blog/feed"><id>tag:google.com,2005:reader/feed/http://www.bytebot.net/blog/feed</id><title type="html">Colin Charles Agenda</title><link rel="alternate" href="http://www.bytebot.net/blog" type="text/html" /></source><feedburner:origLink>http://feedproxy.google.com/~r/ColinCharles/~3/e9ct7Lg6_NY/replication-features-of-2011-by-sergey-petrunia</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1328450363830"><id gr:original-id="http://www.bytebot.net/blog/?p=2292">tag:google.com,2005:reader/item/3e9b4a0e5b287c96</id><category term="MySQL" /><category term="FOSDEM" /><category term="giuseppe maxia" /><category term="MySQL Sandbox" /><title type="html">MySQL Creatively in a Sandbox by Giuseppe Maxia</title><published>2012-02-05T13:57:47Z</published><updated>2012-02-05T13:57:47Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/planettao/~3/JR0x8RmuqlM/mysql-creatively-in-a-sandbox-by-giuseppe-maxia" type="text/html" /><content xml:base="http://www.bytebot.net/blog" type="html">&lt;p&gt;&lt;a href="http://datacharmer.blogspot.com/"&gt;Giuseppe Maxia&lt;/a&gt; of &lt;a href="http://continuent.com/"&gt;Continuent&lt;/a&gt; and long time creator of &lt;a href="http://mysqlsandbox.net/"&gt;MySQL Sandbox&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Only works on Unix-like servers. Works with MySQL, Percona &amp;amp; MariaDB servers. MySQL server has the data directory, the port and the socket – you can’t share these.&lt;/p&gt;
&lt;p&gt;To use it: make_sandbox foo.tar.gz. Then just do ./use.&lt;/p&gt;
&lt;p&gt;$SANDBOX_HOME is ~/sandboxes. You can also create ~/opt/mysql/ and if you have MySQL 5.0.91 binary in that directory, you can just do “sb 5.1.91″.&lt;/p&gt;
&lt;p&gt;Sandbox has features to start replication systems as well. You can have varying master/slave setups with varying versions as well (good idea to test from MySQL -&amp;gt; MariaDB master-&amp;gt;slave for migration).&lt;/p&gt;
&lt;p&gt;You can now also play with tungsten-sandbox, which is a great way to start playing with Tungsten Replicator (see &lt;a href="http://code.google.com/p/tungsten-toolbox/wiki/TungstenSandbox"&gt;documentation&lt;/a&gt; and &lt;a href="http://code.google.com/p/tungsten-toolbox/"&gt;tungsten-toolbox&lt;/a&gt;). There is apparently also a MySQL Cluster sandbox tool that someone is working on.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2012/02/05/building-simple-complex-replication-clusters-with-tungsten-replicator-by-giuseppe-maxia" rel="bookmark" title="Permanent Link: Building simple &amp;amp; complex replication clusters with Tungsten Replicator by Giuseppe Maxia"&gt;Building simple &amp;amp; complex replication clusters with Tungsten Replicator by Giuseppe Maxia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2012/02/05/mysql-ha-reloaded-by-ivan-zoratti" rel="bookmark" title="Permanent Link: MySQL HA reloaded by Ivan Zoratti"&gt;MySQL HA reloaded by Ivan Zoratti&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2012/02/05/mysql-synchronous-replication-in-practice-with-galera-by-oli-sennhauser" rel="bookmark" title="Permanent Link: MySQL synchronous replication in practice with Galera by Oli Sennhauser"&gt;MySQL synchronous replication in practice with Galera by Oli Sennhauser&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;&lt;p&gt;&lt;iframe src="http://feedads.g.doubleclick.net/~ah/f/67eiqfmeldrdscqfdtvq741osc/300/250?ca=1&amp;amp;fh=280#http%3A%2F%2Fwww.bytebot.net%2Fblog%2Farchives%2F2012%2F02%2F05%2Fmysql-creatively-in-a-sandbox-by-giuseppe-maxia" width="100%" height="280" frameborder="0" scrolling="no" marginwidth="0" marginheight="0"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;div&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=t603AFaivIs:r4Z-CkHHKHA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=t603AFaivIs:r4Z-CkHHKHA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?i=t603AFaivIs:r4Z-CkHHKHA:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=t603AFaivIs:r4Z-CkHHKHA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?i=t603AFaivIs:r4Z-CkHHKHA:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=t603AFaivIs:r4Z-CkHHKHA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?d=dnMXMwOfBR0" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ColinCharles/~4/t603AFaivIs" height="1" width="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/planettao/~4/JR0x8RmuqlM" height="1" width="1"/&gt;</content><author><name>Colin Charles</name></author><source gr:stream-id="feed/http://www.bytebot.net/blog/feed"><id>tag:google.com,2005:reader/feed/http://www.bytebot.net/blog/feed</id><title type="html">Colin Charles Agenda</title><link rel="alternate" href="http://www.bytebot.net/blog" type="text/html" /></source><feedburner:origLink>http://feedproxy.google.com/~r/ColinCharles/~3/t603AFaivIs/mysql-creatively-in-a-sandbox-by-giuseppe-maxia</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1328448654187"><id gr:original-id="http://www.bytebot.net/blog/?p=2289">tag:google.com,2005:reader/item/60e0621eb1650f03</id><category term="MariaDB" /><category term="MySQL" /><category term="FOSDEM" /><category term="Steve Hardy" /><title type="html">Optimizing your InnoDB buffer pool usage by Steve Hardy</title><published>2012-02-05T13:29:02Z</published><updated>2012-02-05T13:29:02Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/planettao/~3/fnlq8TjvTVs/optimizing-your-innodb-buffer-pool-usage-by-steve-hardy" type="text/html" /><content xml:base="http://www.bytebot.net/blog" type="html">&lt;p&gt;Steve Hardy of &lt;a href="http://www.zarafa.com/"&gt;Zarafa&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Work that has been done to make Zarafa better. Why do you optimise your buffer pool? To decrease your I/O load. How can you do it? Buy more RAM, page compression, less (smaller) data, rearrange data.&lt;/p&gt;
&lt;p&gt;MariaDB or Percona Server allows you to inspect your &lt;a href="http://www.percona.com/docs/wiki/percona-server:features:innodb_buffer_pool_pages"&gt;buffer pool&lt;/a&gt; (unsure if this is now available in MySQL 5.6). Giuseppe in the audience says this is available in MySQL 5.6, but Steve used this on MariaDB 5.2.&lt;/p&gt;
&lt;p&gt;Strategies to fix it: Make records smaller. Remove indexes if you can use others almost as efficiently. Make records that are accessed around the same time have a higher chance of being on the same page. Use page compression. Buy more RAM. Try Batched Key Access (BKA) in MariaDB 5.3+.&lt;/p&gt;
&lt;p&gt;Best to view the presentation since there are specific examples that speak about how Zarafa solves their problems like a user trying to sort their email, etc.&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2008/04/09/batched-key-access-join-previews-available" rel="bookmark" title="Permanent Link: Batched Key Access Join Previews available"&gt;Batched Key Access Join Previews available&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2012/02/05/mariadb-5-3-query-optimizer-by-sergey-petrunia" rel="bookmark" title="Permanent Link: MariaDB 5.3 query optimizer by Sergey Petrunia"&gt;MariaDB 5.3 query optimizer by Sergey Petrunia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2012/01/30/mariadbmysql-users-in-paris-brussels" rel="bookmark" title="Permanent Link: MariaDB/MySQL users in Paris &amp;amp; Brussels"&gt;MariaDB/MySQL users in Paris &amp;amp; Brussels&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;&lt;p&gt;&lt;iframe src="http://feedads.g.doubleclick.net/~ah/f/67eiqfmeldrdscqfdtvq741osc/300/250?ca=1&amp;amp;fh=280#http%3A%2F%2Fwww.bytebot.net%2Fblog%2Farchives%2F2012%2F02%2F05%2Foptimizing-your-innodb-buffer-pool-usage-by-steve-hardy" width="100%" height="280" frameborder="0" scrolling="no" marginwidth="0" marginheight="0"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;div&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=6vuTBaj-Xs0:dmDvTMyF89Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=6vuTBaj-Xs0:dmDvTMyF89Y:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?i=6vuTBaj-Xs0:dmDvTMyF89Y:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=6vuTBaj-Xs0:dmDvTMyF89Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?i=6vuTBaj-Xs0:dmDvTMyF89Y:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=6vuTBaj-Xs0:dmDvTMyF89Y:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?d=dnMXMwOfBR0" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ColinCharles/~4/6vuTBaj-Xs0" height="1" width="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/planettao/~4/fnlq8TjvTVs" height="1" width="1"/&gt;</content><author><name>Colin Charles</name></author><source gr:stream-id="feed/http://www.bytebot.net/blog/feed"><id>tag:google.com,2005:reader/feed/http://www.bytebot.net/blog/feed</id><title type="html">Colin Charles Agenda</title><link rel="alternate" href="http://www.bytebot.net/blog" type="text/html" /></source><feedburner:origLink>http://feedproxy.google.com/~r/ColinCharles/~3/6vuTBaj-Xs0/optimizing-your-innodb-buffer-pool-usage-by-steve-hardy</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1328447040740"><id gr:original-id="http://www.bytebot.net/blog/?p=2286">tag:google.com,2005:reader/item/36714434587913a8</id><category term="MariaDB" /><category term="MySQL" /><category term="FOSDEM" /><category term="Stéphane Combaudon" /><title type="html">Practical MySQL Indexing guidelines by Stéphane Combaudon</title><published>2012-02-05T13:01:06Z</published><updated>2012-02-05T13:01:06Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/planettao/~3/-9zDCDC0-lQ/practical-mysql-indexing-guidelines-by-stephane-combaudon" type="text/html" /><content xml:base="http://www.bytebot.net/blog" type="html">&lt;p&gt;Stéphane Combaudon of Dailymotion.&lt;/p&gt;
&lt;p&gt;Index: separate data structure to speed up SELECTs. Think of index in a book. In MySQL, key=index. Consider that indexes are trees.&lt;/p&gt;
&lt;p&gt;InnoDB’s clustered index – data is stored with the Primary Key (PK) so PK lookups are fast. Secondary keys hold the PK values. Designing InnoDB PK’s with care is critical for performance.&lt;/p&gt;
&lt;p&gt;An index can filter and/or sort values. An index can contain all the fields needed for the query you don’t need to go to the table (a covering index).&lt;/p&gt;
&lt;p&gt;MySQL only uses 1 index per table per query (not 100% true – OR clauses), so think of a composite index when you can. Can’t index TEXT fields (use a prefix). Same for BLOBs and long VARCHARs.&lt;/p&gt;
&lt;p&gt;Indexes: speed up queries, increases the size of your dataset, slows down writes. How big is the write slowdown? Simple test by Stephane, for in-memory workloads he says adding 2 keys makes performance 2x worse; for on-disk workloads he says its 40x worse. Never neglect the slowdown of your writes when you have an index. There is a graph in the slidedeck.&lt;/p&gt;
&lt;p&gt;What is a bad index? Unused indexes. Redundant indexes. Duplicate indexes.&lt;/p&gt;
&lt;p&gt;Indexing is not an exact science, but guessing is probably not the best way to design indexes. Always check your assumptions – EXPLAIN does not tell you everything, time your queries with different index combinations, SHOW PROFILES is often valuable. Slow query log is a good place to start.&lt;/p&gt;
&lt;p&gt;Many slides with examples, so I hope Stephane posts the deck soon. If possible, try to sort &amp;amp; filter (an index is not always the best for sorting).&lt;/p&gt;
&lt;p&gt;InnoDB’s clustered index is always covering. SELECT by PK is the fastest access with InnoDB.&lt;/p&gt;
&lt;p&gt;An index can give you 3 benefits: filtering, sorting, covering.&lt;/p&gt;
&lt;p&gt;See &lt;a href="http://kb.askmonty.org/en/user-statistics"&gt;Userstats v2 &lt;/a&gt;- you need Percona Server or MariaDB 5.2+. See also pt-duplicate-key-checker to find redundant indexes easily. See also pt-index-usage to help answer questions not covered by userstats.&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2012/02/05/sphinx-user-stories-by-stephane-varoqui" rel="bookmark" title="Permanent Link: Sphinx user stories by Stéphane Varoqui"&gt;Sphinx user stories by Stéphane Varoqui&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2012/02/05/managing-mysql-with-percona-toolkit-by-frederic-descamps" rel="bookmark" title="Permanent Link: Managing MySQL with Percona Toolkit by Frédéric Descamps"&gt;Managing MySQL with Percona Toolkit by Frédéric Descamps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2008/04/15/mysql-full-text-search-by-alex-rubin" rel="bookmark" title="Permanent Link: MySQL Full Text Search by Alex Rubin"&gt;MySQL Full Text Search by Alex Rubin&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;&lt;p&gt;&lt;iframe src="http://feedads.g.doubleclick.net/~ah/f/67eiqfmeldrdscqfdtvq741osc/468/60#http%3A%2F%2Fwww.bytebot.net%2Fblog%2Farchives%2F2012%2F02%2F05%2Fpractical-mysql-indexing-guidelines-by-stephane-combaudon" width="100%" height="60" frameborder="0" scrolling="no" marginwidth="0" marginheight="0"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;div&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=-NAkXamnINw:cP5Tk6HOIhY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=-NAkXamnINw:cP5Tk6HOIhY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?i=-NAkXamnINw:cP5Tk6HOIhY:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=-NAkXamnINw:cP5Tk6HOIhY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?i=-NAkXamnINw:cP5Tk6HOIhY:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=-NAkXamnINw:cP5Tk6HOIhY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?d=dnMXMwOfBR0" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ColinCharles/~4/-NAkXamnINw" height="1" width="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/planettao/~4/-9zDCDC0-lQ" height="1" width="1"/&gt;</content><author><name>Colin Charles</name></author><source gr:stream-id="feed/http://www.bytebot.net/blog/feed"><id>tag:google.com,2005:reader/feed/http://www.bytebot.net/blog/feed</id><title type="html">Colin Charles Agenda</title><link rel="alternate" href="http://www.bytebot.net/blog" type="text/html" /></source><feedburner:origLink>http://feedproxy.google.com/~r/ColinCharles/~3/-NAkXamnINw/practical-mysql-indexing-guidelines-by-stephane-combaudon</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1328445203752"><id gr:original-id="http://www.bytebot.net/blog/?p=2283">tag:google.com,2005:reader/item/d2144ea7adfa4ff8</id><category term="MySQL" /><category term="FOSDEM" /><category term="Galera" /><category term="Oli Sennhauser" /><title type="html">MySQL synchronous replication in practice with Galera by Oli Sennhauser</title><published>2012-02-05T12:30:42Z</published><updated>2012-02-05T12:30:42Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/planettao/~3/VckSZsrdzm0/mysql-synchronous-replication-in-practice-with-galera-by-oli-sennhauser" type="text/html" /><content xml:base="http://www.bytebot.net/blog" type="html">&lt;p&gt;&lt;a href="http://www.shinguz.ch/"&gt;Oli Sennhauser&lt;/a&gt; of &lt;a href="http://fromdual.com/"&gt;FromDual&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Synchronous multi-master replication with the Galera plugin. Your application connects to the load balancer and it redirects read/write traffic to the various MySQL Galera nodes. Tested a setup with 17 SQL nodes and you can have even more. Scaling reads and also a little bit for scaling writes is what Galera is good for.&lt;/p&gt;
&lt;p&gt;If one node fails, the other two nodes still communicates with each other and the load balancer is aware of the failed node.&lt;/p&gt;
&lt;p&gt;Why Galera? There is master-slave replication but its not multi-master, and its asynchronous and you can get inconsistencies. There is master-master replication but its asynchronous and can have inconsistencies and conflicts if you write on both nodes. MHA/MMM/Tungsten are not providing new technology but are based on the MySQL replication technology. MySQL Cluster is another solution but its not InnoDB storage &amp;amp; your need new know-how for Cluster. Also Cluster has problems with fast JOINs. Active/Passive failover clustering, but too often you have resources idling. Schooner being closed &amp;amp; expensive is hard to know much about what they’re doing.&lt;/p&gt;
&lt;p&gt;Galera is synchronous &amp;amp; based on InnoDB (others should in theory be possible). Active-active real multi-master topology. True parallel replication on row level. Cluster speaks with each other. There is no slave lag. Won’t lose transactions. Read/write scalability, write throughput can be improved but can’t scale in the way like MySQL Cluster.&lt;/p&gt;
&lt;p&gt;Disadvantages? Its not native MySQL binaries/sources but a patch. Codership provides binaries. Higher probability of deadlocks. When you do a full sync (like when a node comes back after downtime), one node is blocked. This is why the minimum you need a 3-node cluster. Also if you do a full sync with a database larger than 50GB, the recommended method is to use mysqldump (which can be very slow). You can use rsync. Percona is working on xtrabackup to do a full sync between nodes.&lt;/p&gt;
&lt;p&gt;Setup: 3 nodes are recommended. Or just 2 nodes and one for garbd (Galera Arbitrator Daemon). 2 nodes works but pay attention to a split brain scenario. Go to the Codership website, download their binaries and wsrep (the Galera plug-in). Create your own user on all nodes (don’t use the default root user). You then need to configure my.cnf (there have been discussions for a galera.conf, but Oli just uses my.cnf). Galera works only with InnoDB, so in my.cnf make the default storage engine InnoDB (don’t for example, by accident have MyISAM tables).&lt;/p&gt;
&lt;p&gt;The demo has a strange Galera start script, but its not been easy to work. Just start MySQL usually like you would do.&lt;/p&gt;
&lt;p&gt;SST is Snapshot State Transfer (SST). Its the initial full sync between the 1st and the other node. SST blocks the donor node (hence why you need 3 nodes). With Galera v2.0, there is also incremental state transfer. It should be GA in February 2012. You can get deltas as opposed to the full sync. You can configure which will be the donor node.&lt;/p&gt;
&lt;p&gt;Currently there are 27 variables about Galera in v1.1. You can do it just by doing SHOW GLOBAL VARIABLES LIKE ‘wsrep%’;. The plugin itself, wsrep_provider_options has plenty of options &amp;amp; plenty of room for tuning. SHOW GLOBAL STATUS LIKE ‘wsrep%’; currently has 38 status information fields in Galera v1.1.&lt;/p&gt;
&lt;p&gt;For load balancing, you can do it in your application (on your own). You can also use Connector/J which provides load balancing. There is also a PHP MySQLnd that works.&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2012/02/05/mysql-ha-reloaded-by-ivan-zoratti" rel="bookmark" title="Permanent Link: MySQL HA reloaded by Ivan Zoratti"&gt;MySQL HA reloaded by Ivan Zoratti&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2007/06/05/ticketmaster-thrives-on-mysql-replication" rel="bookmark" title="Permanent Link: Ticketmaster thrives on MySQL Replication"&gt;Ticketmaster thrives on MySQL Replication&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2012/02/05/new-mysql-5-6-features-by-oli-sennhauser" rel="bookmark" title="Permanent Link: New MySQL 5.6 Features by Oli Sennhauser"&gt;New MySQL 5.6 Features by Oli Sennhauser&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;&lt;p&gt;&lt;iframe src="http://feedads.g.doubleclick.net/~ah/f/67eiqfmeldrdscqfdtvq741osc/468/60#http%3A%2F%2Fwww.bytebot.net%2Fblog%2Farchives%2F2012%2F02%2F05%2Fmysql-synchronous-replication-in-practice-with-galera-by-oli-sennhauser" width="100%" height="60" frameborder="0" scrolling="no" marginwidth="0" marginheight="0"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;div&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=c9sQUJM59CY:a16vrA4B7RY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=c9sQUJM59CY:a16vrA4B7RY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?i=c9sQUJM59CY:a16vrA4B7RY:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=c9sQUJM59CY:a16vrA4B7RY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?i=c9sQUJM59CY:a16vrA4B7RY:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=c9sQUJM59CY:a16vrA4B7RY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?d=dnMXMwOfBR0" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ColinCharles/~4/c9sQUJM59CY" height="1" width="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/planettao/~4/VckSZsrdzm0" height="1" width="1"/&gt;</content><author><name>Colin Charles</name></author><source gr:stream-id="feed/http://www.bytebot.net/blog/feed"><id>tag:google.com,2005:reader/feed/http://www.bytebot.net/blog/feed</id><title type="html">Colin Charles Agenda</title><link rel="alternate" href="http://www.bytebot.net/blog" type="text/html" /></source><feedburner:origLink>http://feedproxy.google.com/~r/ColinCharles/~3/c9sQUJM59CY/mysql-synchronous-replication-in-practice-with-galera-by-oli-sennhauser</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1328443141823"><id gr:original-id="http://www.bytebot.net/blog/?p=2280">tag:google.com,2005:reader/item/99a8e54e9101d097</id><category term="MySQL" /><category term="FOSDEM" /><category term="Mark Riddoch" /><title type="html">Optimising SQL applications by using client side tools by Mark Riddoch</title><published>2012-02-05T11:54:14Z</published><updated>2012-02-05T11:54:14Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/planettao/~3/hBjtC8m7u40/optimising-sql-applications-by-using-client-side-tools-by-mark-riddoch" type="text/html" /><content xml:base="http://www.bytebot.net/blog" type="html">&lt;p&gt;Mark Riddoch of &lt;a href="http://www.skysql.com/"&gt;SkySQL&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This was a talk about the future in general. What people would like. Etc. Not about something that exists yet, hence the sparse notes.&lt;/p&gt;
&lt;p&gt;Trace statements are good for the “why”. You move on to the debugger, but what is a useful SQL debugger? Profilers addresses the “when”.&lt;/p&gt;
&lt;p&gt;SQL developer tools: manually run queries (traditional route for development, effective way to test SQL statements, some indication of performance), server logs (alerts developers of serious issues like the slow query log – identify poorly written queries, requires server access, not effective in a cloud environment (?)), external monitoring (network sniffing of connection packets, Ethereal dissectors – allow individual connections to be traced, no server access, privileged network access, complex to interpret, possibility of packet loss), intrusive tools (insert “proxy” between client &amp;amp; server to intercept all traffic, imposes delay &amp;amp; requires setup modification).&lt;/p&gt;
&lt;p&gt;Client-side tools – client modification or hook via connectors (query logging, profiling). The Java connector has profiling. Should there be a connector slow query log? So there’s no requirement for server access and its per client rather than per server.&lt;/p&gt;
&lt;p&gt;Plans: roll out connector query logs for Java, C, and scripting languages built on Connector/C. SQL Parser for report generation/fuzzy matching. Create post-processing tools. Query log comparisons – detect fluctuation in execution time, plan flip alerting, replay log.&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2007/01/31/open-source-tools-to-run-a-small-medium-sized-business" rel="bookmark" title="Permanent Link: Open source tools to run a small-medium sized business"&gt;Open source tools to run a small-medium sized business&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2012/02/05/practical-mysql-indexing-guidelines-by-stephane-combaudon" rel="bookmark" title="Permanent Link: Practical MySQL Indexing guidelines by Stéphane Combaudon"&gt;Practical MySQL Indexing guidelines by Stéphane Combaudon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2007/03/24/leaving-summer-of-code-applications-to-the-last-minute" rel="bookmark" title="Permanent Link: Leaving Summer of Code applications to the last minute?"&gt;Leaving Summer of Code applications to the last minute?&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;&lt;p&gt;&lt;iframe src="http://feedads.g.doubleclick.net/~ah/f/67eiqfmeldrdscqfdtvq741osc/468/60#http%3A%2F%2Fwww.bytebot.net%2Fblog%2Farchives%2F2012%2F02%2F05%2Foptimising-sql-applications-by-using-client-side-tools-by-mark-riddoch" width="100%" height="60" frameborder="0" scrolling="no" marginwidth="0" marginheight="0"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;div&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=sO__FR0kYX4:LvdjKYwr25k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=sO__FR0kYX4:LvdjKYwr25k:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?i=sO__FR0kYX4:LvdjKYwr25k:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=sO__FR0kYX4:LvdjKYwr25k:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?i=sO__FR0kYX4:LvdjKYwr25k:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=sO__FR0kYX4:LvdjKYwr25k:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?d=dnMXMwOfBR0" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ColinCharles/~4/sO__FR0kYX4" height="1" width="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/planettao/~4/hBjtC8m7u40" height="1" width="1"/&gt;</content><author><name>Colin Charles</name></author><source gr:stream-id="feed/http://www.bytebot.net/blog/feed"><id>tag:google.com,2005:reader/feed/http://www.bytebot.net/blog/feed</id><title type="html">Colin Charles Agenda</title><link rel="alternate" href="http://www.bytebot.net/blog" type="text/html" /></source><feedburner:origLink>http://feedproxy.google.com/~r/ColinCharles/~3/sO__FR0kYX4/optimising-sql-applications-by-using-client-side-tools-by-mark-riddoch</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1328441155071"><id gr:original-id="http://www.bytebot.net/blog/?p=2265">tag:google.com,2005:reader/item/521dddd1520f02e3</id><category term="MySQL" /><category term="FOSDEM" /><category term="mysql cluster" /><category term="ndb" /><category term="NDBCLUSTER" /><category term="Ralf Gebhardt" /><title type="html">MySQL Cluster by Ralf Gebhardt</title><published>2012-02-05T11:25:32Z</published><updated>2012-02-05T11:25:32Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/planettao/~3/vLObpRMt4b4/mysql-cluster-by-ralf-gebhardt" type="text/html" /><content xml:base="http://www.bytebot.net/blog" type="html">&lt;p&gt;Ralf Gebhardt of &lt;a href="http://www.skysql.com/"&gt;SkySQL&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Cluster: shared nothing architecture (no single point of failure), synchronous replication between nodes, ACID transactions, row level locking. In-memory storage (some data can be stored on disk, but indexes must be in-memory). Checkpointing to disk for durability. It supports two types of indexes – ordered T-trees, unique hash indexes. Online operations like adding node groups, software upgrades, table alterations. Quick standard architecture diagram displayed about MySQL Cluster.&lt;/p&gt;
&lt;p&gt;Network partitioning protocol is designed to avoid a split brain scenario. Is there at least one node from each node group? If not then this part cannot continue – graceful shutdown. Are all nodes present from any node group? If so, then this is the only viable cluster – continue to operate. Ask the arbitrator – the arbitrator which parts will continue if no arbitrator is available the cluster shuts down.&lt;/p&gt;
&lt;p&gt;Durability – in order for a node to recover fast some data is stored locally. The REDO log is synchronized by global checkpoints (GCP). The DataMemory is synchronized by local checkpoints (LCP).&lt;/p&gt;
&lt;p&gt;I agree with Ralf — almost impossible to talk about NDB in 25 minutes. Its very deep, you’d need at least three hours to grasp it well.&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2012/02/05/mysql-synchronous-replication-in-practice-with-galera-by-oli-sennhauser" rel="bookmark" title="Permanent Link: MySQL synchronous replication in practice with Galera by Oli Sennhauser"&gt;MySQL synchronous replication in practice with Galera by Oli Sennhauser&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2012/02/05/practical-mysql-indexing-guidelines-by-stephane-combaudon" rel="bookmark" title="Permanent Link: Practical MySQL Indexing guidelines by Stéphane Combaudon"&gt;Practical MySQL Indexing guidelines by Stéphane Combaudon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2012/02/05/managing-mysql-with-percona-toolkit-by-frederic-descamps" rel="bookmark" title="Permanent Link: Managing MySQL with Percona Toolkit by Frédéric Descamps"&gt;Managing MySQL with Percona Toolkit by Frédéric Descamps&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;&lt;p&gt;&lt;iframe src="http://feedads.g.doubleclick.net/~ah/f/67eiqfmeldrdscqfdtvq741osc/300/250?ca=1&amp;amp;fh=280#http%3A%2F%2Fwww.bytebot.net%2Fblog%2Farchives%2F2012%2F02%2F05%2Fmysql-cluster-by-ralf-gebhardt" width="100%" height="280" frameborder="0" scrolling="no" marginwidth="0" marginheight="0"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;div&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=dnPMTkZ_Y1o:O5PnWPtVsGA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=dnPMTkZ_Y1o:O5PnWPtVsGA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?i=dnPMTkZ_Y1o:O5PnWPtVsGA:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=dnPMTkZ_Y1o:O5PnWPtVsGA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?i=dnPMTkZ_Y1o:O5PnWPtVsGA:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=dnPMTkZ_Y1o:O5PnWPtVsGA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?d=dnMXMwOfBR0" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ColinCharles/~4/dnPMTkZ_Y1o" height="1" width="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/planettao/~4/vLObpRMt4b4" height="1" width="1"/&gt;</content><author><name>Colin Charles</name></author><source gr:stream-id="feed/http://www.bytebot.net/blog/feed"><id>tag:google.com,2005:reader/feed/http://www.bytebot.net/blog/feed</id><title type="html">Colin Charles Agenda</title><link rel="alternate" href="http://www.bytebot.net/blog" type="text/html" /></source><feedburner:origLink>http://feedproxy.google.com/~r/ColinCharles/~3/dnPMTkZ_Y1o/mysql-cluster-by-ralf-gebhardt</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1328439721919"><id gr:original-id="http://www.bytebot.net/blog/?p=2262">tag:google.com,2005:reader/item/574eb34221f0a1ed</id><category term="MySQL" /><category term="FOSDEM" /><category term="giuseppe maxia" /><category term="replication" /><category term="Tungsten Replicator" /><title type="html">Building simple &amp;amp; complex replication clusters with Tungsten Replicator by Giuseppe Maxia</title><published>2012-02-05T11:01:26Z</published><updated>2012-02-05T11:01:26Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/planettao/~3/j-T_QkxKfVM/building-simple-complex-replication-clusters-with-tungsten-replicator-by-giuseppe-maxia" type="text/html" /><content xml:base="http://www.bytebot.net/blog" type="html">&lt;p&gt;&lt;a href="http://datacharmer.blogspot.com/"&gt;Giuseppe Maxia&lt;/a&gt; of &lt;a href="http://continuent.com/"&gt;Continuent&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;MySQL replication is single threaded. Multi-master replication is complex with MySQL. Circular replication works but is very fragile. Once you’ve achieved the feat, how do you avoid conflicts? The lack of global transaction ID today also means you may have slaves that may not be synchronized fully. Finally, some people like to replicate to PostgreSQL, Oracle and MongoDB.&lt;/p&gt;
&lt;p&gt;This is where &lt;a href="http://code.google.com/p/tungsten-replicator/"&gt;Tungsten Replicator&lt;/a&gt; comes into place. Opensource. 100% GPLv2. You can do easy failover (no need to synchronize the slaves manually when a master dies), have multiple masters, multiple sources to a single slave, conflict prevention, parallel replication, and replicate to Oracle/PostgreSQL database (heterogeneous replication – Oracle-&amp;gt;MySQL is not opensource, but MySQL-&amp;gt;Oracle is).&lt;/p&gt;
&lt;p&gt;Parallel replication: ability to replicate with multiple thread at once. Sharded by database (all big sites already use this naturally). Good choice for slave lag problems. Bad choice for single database projects. In their tests to measure slave catch up time between standard MySQL &amp;amp; Tungsten slave with 1hr of sysbench and some 130GB of data, MySQL replication takes 4.5h to catchup, and Tungsten takes less than 1 hour to catchup. This comparison was not made with MySQL 5.6 (the same parallel replication feature at this moment in 5.6 is quite buggy). No need to install Tungsten on the master (Tungsten needs to be on slave). Replication can revert to native salve with 2 commands, but the failover is an issue — so install Tungsten on both!&lt;/p&gt;
&lt;p&gt;Conflict prevention. When you have multiple masters you are tempted to do many things that you shouldn’t. Tungsten provides the multi-master topology. Tungsten can help you avoid conflicts. Decide you want to shard your information by database – Tungsten can enforce such rules. Define the rules, applied to either the master or the slave and you can then state to make replication fail or drop silently or drop with a warning.&lt;/p&gt;
&lt;p&gt;You can create clusters very quickly with Tungsten. You can install from a centralized point to many servers. You need Java, Ruby, SSH access and a MySQL user with all privileges (used for replication).&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2012/02/05/mysql-creatively-in-a-sandbox-by-giuseppe-maxia" rel="bookmark" title="Permanent Link: MySQL Creatively in a Sandbox by Giuseppe Maxia"&gt;MySQL Creatively in a Sandbox by Giuseppe Maxia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2012/02/05/mysql-ha-reloaded-by-ivan-zoratti" rel="bookmark" title="Permanent Link: MySQL HA reloaded by Ivan Zoratti"&gt;MySQL HA reloaded by Ivan Zoratti&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2012/02/05/replication-features-of-2011-by-sergey-petrunia" rel="bookmark" title="Permanent Link: Replication features of 2011 by Sergey Petrunia"&gt;Replication features of 2011 by Sergey Petrunia&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;&lt;p&gt;&lt;iframe src="http://feedads.g.doubleclick.net/~ah/f/67eiqfmeldrdscqfdtvq741osc/300/250?ca=1&amp;amp;fh=280#http%3A%2F%2Fwww.bytebot.net%2Fblog%2Farchives%2F2012%2F02%2F05%2Fbuilding-simple-complex-replication-clusters-with-tungsten-replicator-by-giuseppe-maxia" width="100%" height="280" frameborder="0" scrolling="no" marginwidth="0" marginheight="0"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;div&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=03B1VkGCpNE:Z2E8Kxw4E88:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=03B1VkGCpNE:Z2E8Kxw4E88:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?i=03B1VkGCpNE:Z2E8Kxw4E88:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=03B1VkGCpNE:Z2E8Kxw4E88:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?i=03B1VkGCpNE:Z2E8Kxw4E88:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=03B1VkGCpNE:Z2E8Kxw4E88:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?d=dnMXMwOfBR0" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ColinCharles/~4/03B1VkGCpNE" height="1" width="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/planettao/~4/j-T_QkxKfVM" height="1" width="1"/&gt;</content><author><name>Colin Charles</name></author><source gr:stream-id="feed/http://www.bytebot.net/blog/feed"><id>tag:google.com,2005:reader/feed/http://www.bytebot.net/blog/feed</id><title type="html">Colin Charles Agenda</title><link rel="alternate" href="http://www.bytebot.net/blog" type="text/html" /></source><feedburner:origLink>http://feedproxy.google.com/~r/ColinCharles/~3/03B1VkGCpNE/building-simple-complex-replication-clusters-with-tungsten-replicator-by-giuseppe-maxia</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1328437819181"><id gr:original-id="http://www.bytebot.net/blog/?p=2259">tag:google.com,2005:reader/item/358cf84e4744fc19</id><category term="MySQL" /><category term="FOSDEM" /><category term="Sphinx" /><category term="Vladimir Fedorkov" /><title type="html">How to offload MySQL server with Sphinx by Vladimir Fedorkov</title><published>2012-02-05T10:29:05Z</published><updated>2012-02-05T10:29:05Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/planettao/~3/8BVdwrh6gms/how-to-offload-mysql-server-with-sphinx-by-vladimir-fedorkov" type="text/html" /><content xml:base="http://www.bytebot.net/blog" type="html">&lt;p&gt;Vladimir Fedorkov of &lt;a href="http://sphinxsearch.com/"&gt;Sphinx&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Presentation started out with a very nice presentation of candies to all the audience members.&lt;/p&gt;
&lt;p&gt;What is Sphinx? Another (C++) daemon on your boxes. Can be queried via API (PHP, Python, etc.) or MySQL-compatible protocol and SQL queries (SphinxQL). Some query examples are in the slides, here’s one about &lt;a href="http://kb.askmonty.org/en/about-sphinxse"&gt;SphinxSE in the KB&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;MyISAM FTS is good but becomes slow with half a million documents. InnoDB has FTS now but he’s not tried it (and neither has anyone in the audience to see it compare with MyISAM FTS).&lt;/p&gt;
&lt;p&gt;Geographical distance is the distance measuring the surface of the earth (two pairs of float values – latitude, longitude). In Sphinx, there is support for GEODIST(Lat,Long,Lat2,Long2) in Sphinx.&lt;/p&gt;
&lt;p&gt;Segments are good for price ranges on a site, date ranges, etc. Use INTERVAL(field, x0, x1, …, xN).&lt;/p&gt;
&lt;p&gt;Keep huge text collections out of the database. sql_field = path_to_file_text. Tell Sphinx to index text not from MySQL but out in the filesystem. Keep the metadata inside the database but keep the actual data outside of the database. max_file_field_buffer needs to be set properly.&lt;/p&gt;
&lt;p&gt;You can do proximity search with Sphinx — find the words “hello world” within a ten word block, for example.&lt;/p&gt;
&lt;p&gt;Resources: the &lt;a href="http://sphinxsearch.com/docs/"&gt;documentation&lt;/a&gt;, a book by O’Reilly: &lt;a href="http://www.amazon.com/gp/product/0596809557/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=colincharles-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0596809557"&gt;Introduction to Search with Sphinx: From installation to relevance tuning&lt;/a&gt;&lt;img style="border:none!important;margin:0px!important" src="http://www.assoc-amazon.com/e/ir?t=colincharles-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0596809557" border="0" alt="" width="1" height="1"&gt; (sold out at the FOSDEM O’Reilly booth!), and their &lt;a href="http://sphinxsearch.com/community/"&gt;community&lt;/a&gt; page including wiki, forum, etc.&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2008/04/15/mysql-full-text-search-by-alex-rubin" rel="bookmark" title="Permanent Link: MySQL Full Text Search by Alex Rubin"&gt;MySQL Full Text Search by Alex Rubin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2012/02/05/sphinx-user-stories-by-stephane-varoqui" rel="bookmark" title="Permanent Link: Sphinx user stories by Stéphane Varoqui"&gt;Sphinx user stories by Stéphane Varoqui&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2008/01/28/morning-sessions-at-mysql-miniconf" rel="bookmark" title="Permanent Link: Morning sessions at MySQL MiniConf"&gt;Morning sessions at MySQL MiniConf&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;&lt;p&gt;&lt;iframe src="http://feedads.g.doubleclick.net/~ah/f/67eiqfmeldrdscqfdtvq741osc/468/60#http%3A%2F%2Fwww.bytebot.net%2Fblog%2Farchives%2F2012%2F02%2F05%2Fhow-to-offload-mysql-server-with-sphinx-by-vladimir-fedorkov" width="100%" height="60" frameborder="0" scrolling="no" marginwidth="0" marginheight="0"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;div&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=ZIUYCbtFwRo:_7OsTdXwylo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=ZIUYCbtFwRo:_7OsTdXwylo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?i=ZIUYCbtFwRo:_7OsTdXwylo:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=ZIUYCbtFwRo:_7OsTdXwylo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?i=ZIUYCbtFwRo:_7OsTdXwylo:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=ZIUYCbtFwRo:_7OsTdXwylo:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?d=dnMXMwOfBR0" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ColinCharles/~4/ZIUYCbtFwRo" height="1" width="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/planettao/~4/8BVdwrh6gms" height="1" width="1"/&gt;</content><author><name>Colin Charles</name></author><source gr:stream-id="feed/http://www.bytebot.net/blog/feed"><id>tag:google.com,2005:reader/feed/http://www.bytebot.net/blog/feed</id><title type="html">Colin Charles Agenda</title><link rel="alternate" href="http://www.bytebot.net/blog" type="text/html" /></source><feedburner:origLink>http://feedproxy.google.com/~r/ColinCharles/~3/ZIUYCbtFwRo/how-to-offload-mysql-server-with-sphinx-by-vladimir-fedorkov</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1328436018974"><id gr:original-id="http://www.bytebot.net/blog/?p=2256">tag:google.com,2005:reader/item/308b6bc17584cce5</id><category term="MariaDB" /><category term="MySQL" /><category term="FOSDEM" /><category term="Optimizer" /><category term="Sergey Petrunia" /><title type="html">MariaDB 5.3 query optimizer by Sergey Petrunia</title><published>2012-02-05T09:59:23Z</published><updated>2012-02-05T09:59:23Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/planettao/~3/Z_v1Nsk1p18/mariadb-5-3-query-optimizer-by-sergey-petrunia" type="text/html" /><content xml:base="http://www.bytebot.net/blog" type="html">&lt;p&gt;&lt;a href="http://s.petrunia.net/blog/"&gt;Sergey Petrunia&lt;/a&gt; of the &lt;a href="http://mariadb.org/"&gt;MariaDB&lt;/a&gt; project.&lt;/p&gt;
&lt;p&gt;What exactly is not working in MySQL? MySQL is poor at decision support/analytics. With large datasets you need special disk access strategies. Complex queries like insufficient subquery support and big joins are common int he MySQL world.&lt;/p&gt;
&lt;p&gt;DBT-3 is used, scale=30, with a 75GB database and run a query “average price of item between a range of dates”. Query time took some 45 minutes to execute. Why? Run iostat -x to see what is going on. See that the CPU is mostly idle, so its an IO-bound load. Next you run SHOW ENGINE INNODB STATUS and you’ll see how many reads per second is happening. Possible solution is to get more RAM or get an SSD (good to speedup OLTP workloads, but analytics over data is probably not viable since SSDs are small and not cheap).&lt;/p&gt;
&lt;p&gt;The MySQL/MariaDB solution to the above problem is improved disk access strategies: &lt;a href="http://kb.askmonty.org/en/multi-range-read-optimization"&gt;multi-range read (MRR)&lt;/a&gt; and batched key access (BKA). In MariaDB, MRR/BKA need to be enabled (they are not turned on by default). The query time only took 3 minutes 48 seconds, which is some 11.8x faster than the previous 45 minutes.If you look at EXPLAIN output, its almost as same as before, expect the Extra filed. iostat -x will now show some CPU load, svctm down as well (so its not random disk seeks anymore — some 8ms seek time on a regular 7,200rpm disk), SHOW ENGINE INNODB STATUS will show some 10,000 reads per second rather than the previous 200.&lt;/p&gt;
&lt;p&gt;If you are on Fedora, check out the Systemtap feature to look at I/O patterns. stap &lt;a href="http://sourceware.org/systemtap/examples/io/deviceseeks.stp"&gt;deviceseeks.stp&lt;/a&gt; -c “sleep 60″.&lt;/p&gt;
&lt;p&gt;Subqueries handling in MariaDB 5.3: check out the &lt;a href="http://kb.askmonty.org/en/subquery-optimizations-map"&gt;Subquery Optimizations Map&lt;/a&gt;. Only about 10% of the audience use optimizer hints in MySQL.&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2012/02/05/replication-features-of-2011-by-sergey-petrunia" rel="bookmark" title="Permanent Link: Replication features of 2011 by Sergey Petrunia"&gt;Replication features of 2011 by Sergey Petrunia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2010/02/05/mariadb-5-1-42-released" rel="bookmark" title="Permanent Link: MariaDB 5.1.42 released!"&gt;MariaDB 5.1.42 released!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bytebot.net/blog/archives/2010/04/02/mariadb-5-1-44-released" rel="bookmark" title="Permanent Link: MariaDB 5.1.44 released"&gt;MariaDB 5.1.44 released&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;&lt;p&gt;&lt;iframe src="http://feedads.g.doubleclick.net/~ah/f/67eiqfmeldrdscqfdtvq741osc/300/250?ca=1&amp;amp;fh=280#http%3A%2F%2Fwww.bytebot.net%2Fblog%2Farchives%2F2012%2F02%2F05%2Fmariadb-5-3-query-optimizer-by-sergey-petrunia" width="100%" height="280" frameborder="0" scrolling="no" marginwidth="0" marginheight="0"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;div&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=zrAGZt5N_HU:ASqus8lUS9s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=zrAGZt5N_HU:ASqus8lUS9s:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?i=zrAGZt5N_HU:ASqus8lUS9s:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=zrAGZt5N_HU:ASqus8lUS9s:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?i=zrAGZt5N_HU:ASqus8lUS9s:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ColinCharles?a=zrAGZt5N_HU:ASqus8lUS9s:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ColinCharles?d=dnMXMwOfBR0" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ColinCharles/~4/zrAGZt5N_HU" height="1" width="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/planettao/~4/Z_v1Nsk1p18" height="1" width="1"/&gt;</content><author><name>Colin Charles</name></author><source gr:stream-id="feed/http://www.bytebot.net/blog/feed"><id>tag:google.com,2005:reader/feed/http://www.bytebot.net/blog/feed</id><title type="html">Colin Charles Agenda</title><link rel="alternate" href="http://www.bytebot.net/blog" type="text/html" /></source><feedburner:origLink>http://feedproxy.google.com/~r/ColinCharles/~3/zrAGZt5N_HU/mariadb-5-3-query-optimizer-by-sergey-petrunia</feedburner:origLink></entry></feed>

