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

<channel>
	<title> &#187; MySQL</title>
	<atom:link href="http://palominodb.com/blog/index.php/category/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://palominodb.com/blog</link>
	<description></description>
	<lastBuildDate>Sun, 08 Nov 2009 16:35:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Where we&#8217;ve been&#8230;</title>
		<link>http://palominodb.com/blog/2009/11/08/where-weve-been/</link>
		<comments>http://palominodb.com/blog/2009/11/08/where-weve-been/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 16:35:29 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Palomino]]></category>

		<guid isPermaLink="false">http://palominodb.com/blog/?p=25</guid>
		<description><![CDATA[You might notice that I haven&#8217;t blogged in oh, 2 years.  How remiss of me.  The only defense I have is that we&#8217;ve been non-stop busy!  Since then we&#8217;ve built our client portfolio, brought in two new team members, presented at MySQL Conference and still managed to get into any number of shenanigans.   Still, that [...]]]></description>
			<content:encoded><![CDATA[<p>You might notice that I haven&#8217;t blogged in oh, 2 years.  How remiss of me.  The only defense I have is that we&#8217;ve been non-stop busy!  Since then we&#8217;ve built our client portfolio, brought in two new team members, presented at MySQL Conference and still managed to get into any number of shenanigans.   Still, that is no excuse.  Let me give a summary of some of the interesting things we&#8217;ve been up to:</p>
<p>* Helping a client in the midst of a 10x growth period.</p>
<p>* Assisting clients in SOX compliance and acquisition readiness.</p>
<p>* Numerous upgrades to 5.1.</p>
<p>* Integrating Percona xtrahotbackup with MySQL-zrm</p>
<p>* Rolling out and tuning Percona 5.1 binaries w/xtraDB plugin</p>
<p>* Using mk-query-digest to help clients get visibility into their systems without turning on invasive logging.</p>
<p>* Security audits and roll-outs (much to the dismay of developer communities across the world! *evil laugh here*)</p>
<p>* Implementation of a new database historical tracker that combines rancid schema and user monitoring, historical versioning and historical volumetrics. (more on this soon!)</p>
<p>* Breakdancing!</p>
<p>* and much much more.</p>
]]></content:encoded>
			<wfw:commentRss>http://palominodb.com/blog/2009/11/08/where-weve-been/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Checksum</title>
		<link>http://palominodb.com/blog/2007/11/12/mysql-checksum/</link>
		<comments>http://palominodb.com/blog/2007/11/12/mysql-checksum/#comments</comments>
		<pubDate>Mon, 12 Nov 2007 17:12:07 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://palominodb.com/blog/2007/11/12/mysql-checksum/</guid>
		<description><![CDATA[This is another tool in the same toolkit as archiver.  I just saw a great blog post on it at http://blog.arabx.com.au/?p=883.  Documentation can be found at http://mysqltoolkit.sourceforge.net/doc/mysql-checksum-filter.html.  This is an invaluable tool for ensuring your replicated tables are staying in sync, something that MySQL replication does not do.  Tables will drift [...]]]></description>
			<content:encoded><![CDATA[<p>This is another tool in the same toolkit as archiver.  I just saw a great blog post on it at http://blog.arabx.com.au/?p=883.  Documentation can be found at http://mysqltoolkit.sourceforge.net/doc/mysql-checksum-filter.html.  This is an invaluable tool for ensuring your replicated tables are staying in sync, something that MySQL replication does not do.  Tables will drift and if you are dealing with critical data for read support, reports or backups, this will prove invaluable.</p>
]]></content:encoded>
			<wfw:commentRss>http://palominodb.com/blog/2007/11/12/mysql-checksum/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Version Consistency</title>
		<link>http://palominodb.com/blog/2007/11/11/version-consistency/</link>
		<comments>http://palominodb.com/blog/2007/11/11/version-consistency/#comments</comments>
		<pubDate>Sun, 11 Nov 2007 22:03:45 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Process]]></category>

		<guid isPermaLink="false">http://palominodb.com/blog/2007/11/11/version-consistency/</guid>
		<description><![CDATA[Everyone puts lip service to the concept of keeping versions consistent between servers but it is consistently one of the most broken best practices I see amongst my clients.  The problems with such inconsistency are legion, and I&#8217;ll point out a few here.
Mismatch between production and development:  Development environments are often neglected, particularly [...]]]></description>
			<content:encoded><![CDATA[<p>Everyone puts lip service to the concept of keeping versions consistent between servers but it is consistently one of the most broken best practices I see amongst my clients.  The problems with such inconsistency are legion, and I&#8217;ll point out a few here.</p>
<p><strong>Mismatch between production and development:</strong>  Development environments are often neglected, particularly when it comes to OS and DBMS patches.  When this happens I consistently find myself in a catch-22 when it is time to do patching in production.  With nowhere to test a patch, you have to either go in blind and pray (never the most optimal choice) or neglect the patch, potentially retaining security vulnerabilities or bugs or limiting the access to potential performance or feature improvements.  This is especially concerning in complex environments like an Oracle RAC cluster, where patches can be tricky at best.  Of course, when working with any features outside of pure DML, you can expect occasional glitches as you introduce change, particularly when working with triggers, procedures, replication, partitioning, or any other complex feature.</p>
<p><strong>Mismatch between MySQL masters and slaves:</strong>  In MySQL, a lot of pain is taken to allow a slave&#8217;s version to be higher than the master&#8217;s.  This can be a godsend in an upgrade scenario but I wouldn&#8217;t rely on this without significant testing.  There are numerous features that may function incorrectly in such a scenario, particularly if you are using technologies that are relatively new and thus might be changing significantly between release versions, such as triggers in a 5.0.xx release.  My recommendations are simple.  If you&#8217;re running in day to day operations, you have to maintain consistency in your database versions.  If you want to use  replication as a way to do a rolling upgrade across a replicated cluster, test it thoroughly in development and make sure you test any procedures, views, triggers and functions against every possible storage engine and partitioned vs. non-partitioned tables.  If your application does DDL, then test that as well.  I can&#8217;t stress this one enough.  I&#8217;ve had clients who were plagued with replication problems that &#8220;magically&#8221; went away once we brought their RDBMS and OS versions into sync.</p>
<p><strong>Consistency between functional clusters: </strong>When I say functional cluster, I&#8217;m talking about a group of databases, usually replicated or physically clustered that support the same application component.  In high activity environments, this kind of functional partitioning can be crucial in a scaling strategy.  However, lack of discipline can cause these clusters to be built at or migrated to different versions over time. While this may not lead to isaster if your team is disciplined, at it&#8217;s best you will find your resources taxed.  You&#8217;ll need to maintain multiple server builds, you&#8217;ll need to do a lot more qa at the data access tier and will require more steps in case you need to trade hardware between functional clusters.  If you don&#8217;t have rock solid documentation and processes, new servers will be built at different versions, potentially even introduced into production with the wrong version.  There will be redo work and troubleshooting that plagues you to varying levels.</p>
<p>To recap, when it comes to the same database in various environments (dev, test, stage etc&#8230;) there is no reason to allow for version drift.  You must incorporate proper upgrade and deployment processes that, combined with discipline, will maintain that consistency.  A proper configuration database can help with this as well.  When it comes to a functional cluster, there absolutely must be consistency as well.  There is a place for version mismatch in a rolling upgrade strategy, but only here, and only with extensive testing where possible.  And finally, if there are valid reasons to have different versions across different functional clusters, be prepared for rigorous discipline and overhead in your administrative processes.</p>
]]></content:encoded>
			<wfw:commentRss>http://palominodb.com/blog/2007/11/11/version-consistency/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Toolkit &#8211; Archiver</title>
		<link>http://palominodb.com/blog/2007/10/23/mysql-toolkit-archiver/</link>
		<comments>http://palominodb.com/blog/2007/10/23/mysql-toolkit-archiver/#comments</comments>
		<pubDate>Tue, 23 Oct 2007 03:48:19 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://palominodb.com/blog/2007/10/23/mysql-toolkit-archiver/</guid>
		<description><![CDATA[The MySQL Toolkit can be found at http://mysqltoolkit.sourceforge.net/.  It is coded and maintained by Baron Schwartz (www.xaprb.com).  I&#8217;ve been using the archiver tool he wrote lately, and wanted to share this tool.  In every web environment I&#8217;ve worked in, there is data that is collected for analysis and that grows quite rapidly. [...]]]></description>
			<content:encoded><![CDATA[<p>The MySQL Toolkit can be found at http://mysqltoolkit.sourceforge.net/.  It is coded and maintained by Baron Schwartz (www.xaprb.com).  I&#8217;ve been using the archiver tool he wrote lately, and wanted to share this tool.  In every web environment I&#8217;ve worked in, there is data that is collected for analysis and that grows quite rapidly.  User activity logs in particular can quickly grow out of control, and generally have no place in a front-end database after a certain amount of time.  I&#8217;ll go into approaches to deciding what and how to archive in another post, but often this tool can prove very useful in moving data between databases or simply removing it.</p>
<p>I actually use the archiver in two different client sites.  In one situation I have a significant influx of logs representing user activity.  As with most data, only a limited window of time is required for analysis in the front-end.  So we use archiver to move the older data to a separate datawarehouse.  In another environment, we&#8217;ve wrapped it into a larger program for redistributing data between shards in a large cluster.<br />
It is an excellent piece of code.  I have not run into a bug as of yet, and it is highly configurable in regards to commit frequencies, transaction sizes, retries etc&#8230;  Additionally, performance is a consideration, scanning the indexes forward only to create efficiency while working with large datasets.  As the documentation states:</p>
<p>&#8220;The strategy is to find the first row(s), then scan some index forward-only to find more rows efficiently.  Each subsequent query should not scan the entire table; it should seek into the index, then scan until it finds more archivable rows. .&#8221;</p>
<p>I have been an Oracle DBA for longer than I&#8217;d care to think about, and the world of open source is relatively new to me.  I am consistently impressed with the open-source community that creates amazingly useful tools such as this.  It is a refreshing change from the world of Oracle where everything is in the thousands or more of dollars.  If you can support this kind of work through contributions of time or money, I&#8217;d strongly suggest you do so.</p>
]]></content:encoded>
			<wfw:commentRss>http://palominodb.com/blog/2007/10/23/mysql-toolkit-archiver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.518 seconds -->
