<?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>church of default &#187; I am not a DBA</title>
	<atom:link href="http://default.io/category/i-am-not-a-dba/feed/" rel="self" type="application/rss+xml" />
	<link>http://default.io</link>
	<description>entropy jihad</description>
	<lastBuildDate>Thu, 09 Sep 2010 16:19: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>NoSQL Stand Up Routine</title>
		<link>http://default.io/2009/11/nosql-stand-up%c2%a0routine/</link>
		<comments>http://default.io/2009/11/nosql-stand-up%c2%a0routine/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 07:36:25 +0000</pubDate>
		<dc:creator>jim</dc:creator>
				<category><![CDATA[I am not a DBA]]></category>

		<guid isPermaLink="false">http://default.io/?p=239</guid>
		<description><![CDATA[this is great: 

hattip: High Scalability &#8211; High Scalability  &#8211; Brian Aker&#8217;s Hilarious NoSQL Stand Up Routine.
]]></description>
			<content:encoded><![CDATA[<p>this is great: </p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/LhnGarRsKnA&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en_US&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/LhnGarRsKnA&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en_US&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"></embed></object></p>
<p>hattip: <a href="http://highscalability.com/blog/2009/11/25/brian-akers-hilarious-nosql-stand-up-routine.html">High Scalability &#8211; High Scalability  &#8211; Brian Aker&#8217;s Hilarious NoSQL Stand Up Routine</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://default.io/2009/11/nosql-stand-up%c2%a0routine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Working around the Percona MySQL RPM dependancy conflict on RHEL/CentOS 5</title>
		<link>http://default.io/2009/11/working-around-the-percona-mysql-rpm-dependancy-conflict-on-rhelcentos-5/</link>
		<comments>http://default.io/2009/11/working-around-the-percona-mysql-rpm-dependancy-conflict-on-rhelcentos-5/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 04:19:18 +0000</pubDate>
		<dc:creator>jim</dc:creator>
				<category><![CDATA[I am not a DBA]]></category>

		<guid isPermaLink="false">http://default.io/?p=154</guid>
		<description><![CDATA[First off I want to say that what you&#8217;re about to see is a tactical retreat from best practices that should very much be considered the exception.
In a CentOS/RHEL 5 environment installing the Percona MySQL rpm&#8217;s will include installing a package named MySQL-shared-percona.  That package provides two key client libraries:
[root@server1 ~]# rpm -ql MySQL-shared-percona
/usr/lib64/libmysqlclient.so
/usr/lib64/libmysqlclient.so.16
/usr/lib64/libmysqlclient.so.16.0.0
/usr/lib64/libmysqlclient_r.so
/usr/lib64/libmysqlclient_r.so.16
/usr/lib64/libmysqlclient_r.so.16.0.0

The [...]]]></description>
			<content:encoded><![CDATA[<p>First off I want to say that what you&#8217;re about to see is a <em>tactical retreat</em> from best practices that should very much be considered the exception.</p>
<p>In a CentOS/RHEL 5 environment installing the Percona MySQL rpm&#8217;s will include installing a package named <strong>MySQL-shared-percona</strong>.  That package provides two key client libraries:</p>
<p><code>[root@server1 ~]# rpm -ql MySQL-shared-percona<br />
/usr/lib64/libmysqlclient.so<br />
/usr/lib64/libmysqlclient.so.16<br />
/usr/lib64/libmysqlclient.so.16.0.0<br />
/usr/lib64/libmysqlclient_r.so<br />
/usr/lib64/libmysqlclient_r.so.16<br />
/usr/lib64/libmysqlclient_r.so.16.0.0<br />
</code></p>
<p>The plain old <strong>mysql</strong> package from RHEL upstream on the other hand provides one version back:<br />
<code><br />
[root@server2 ~]# rpm -ql mysql | grep libmysql<br />
/usr/lib64/mysql/libmysqlclient.so.15<br />
/usr/lib64/mysql/libmysqlclient.so.15.0.0<br />
/usr/lib64/mysql/libmysqlclient_r.so.15<br />
/usr/lib64/mysql/libmysqlclient_r.so.15.0.0<br />
</code></p>
<p>The packages in RHEL/CentOS 5 repos (including EPEL) are complied expecting &#8220;15&#8243;, but our Percona MySQL RPM is giving us &#8220;16&#8243;.  Yum&#8217;s solution is to try and install both, but there&#8217;s a catch.</p>
<p>Take for instance this attempt to install the <a href="http://code.google.com/p/maatkit/downloads/list">Maatkit rpm</a>.   It requires <strong>perl-DBD-mysql</strong> which being a native distro package is expecting version &#8220;15&#8243; of those libraries.<br />
<code><br />
[root@server1 ~]$ yum localinstall --nogpgcheck maatkit-5014-1.noarch.rpm<br />
Loaded plugins: fastestmirror<br />
Setting up Local Package Process<br />
Examining maatkit-5014-1.noarch.rpm: maatkit-5014-1.noarch<br />
Marking maatkit-5014-1.noarch.rpm to be installed<br />
Loading mirror speeds from cached hostfile<br />
 * addons: centos.mirror.nac.net<br />
 * base: mirror.cs.vt.edu<br />
 * epel: serverbeach1.fedoraproject.org<br />
 * extras: mirror.trouble-free.net<br />
 * updates: centos.mirror.nac.net<br />
Resolving Dependencies<br />
--> Running transaction check<br />
---> Package maatkit.noarch 0:5014-1 set to be updated<br />
--> Processing Dependency: perl(DBD::mysql) >= 1.0 for package: maatkit<br />
--> Processing Dependency: perl(Term::ReadKey) >= 2.10 for package: maatkit<br />
--> Running transaction check<br />
---> Package perl-DBD-MySQL.x86_64 0:3.0007-2.el5 set to be updated<br />
--> Processing Dependency: libmysqlclient.so.15(libmysqlclient_15)(64bit) for package: perl-DBD-MySQL<br />
--> Processing Dependency: libmysqlclient.so.15()(64bit) for package: perl-DBD-MySQL<br />
---> Package perl-TermReadKey.x86_64 0:2.30-4.el5 set to be updated<br />
--> Running transaction check<br />
---> Package mysql.x86_64 0:5.0.77-3.el5 set to be updated<br />
--> Processing Conflict: mysql conflicts MySQL<br />
--> Finished Dependency Resolution<br />
mysql-5.0.77-3.el5.x86_64 from base has depsolving problems<br />
  --> mysql conflicts with MySQL-server-percona<br />
Error: mysql conflicts with MySQL-server-percona<br />
 You could try using --skip-broken to work around the problem<br />
 You could try running: package-cleanup --problems<br />
                        package-cleanup --dupes<br />
                        rpm -Va --nofiles --nodigest<br />
The program package-cleanup is found in the yum-utils package.<br />
</code></p>
<p><strong>MySQL-server-percona</strong> explicitly conflicts with <strong>mysql</strong>.  Similar results can be found with anything that requires <strong>php-mysql</strong>.</p>
<p>So now what?</p>
<p>Well it turns out the upstream MySQL packages have accounted for this.  They put out a &#8220;<strong>-compat</strong>&#8221; package for lots of versions of lots of distros, in this case including RHEL 5, that contains the other library versions that the &#8220;normal&#8221; mysql package would normally have provided.  <a href="http://downloads.mysql.com/archives/mysql-5.1/">Downloadable from here.</a></p>
<p><code><br />
[root@server1 ~]# rpm -qlp MySQL-shared-compat-5.1.39-0.rhel5.x86_64.rpm<br />
/usr/lib64/libmysqlclient.so<br />
/usr/lib64/libmysqlclient.so.12<br />
/usr/lib64/libmysqlclient.so.12.0.0<br />
/usr/lib64/libmysqlclient.so.14<br />
/usr/lib64/libmysqlclient.so.14.0.0<br />
/usr/lib64/libmysqlclient.so.15<br />
/usr/lib64/libmysqlclient.so.15.0.0<br />
/usr/lib64/libmysqlclient.so.16<br />
/usr/lib64/libmysqlclient.so.16.0.0<br />
/usr/lib64/libmysqlclient_r.so<br />
/usr/lib64/libmysqlclient_r.so.12<br />
/usr/lib64/libmysqlclient_r.so.12.0.0<br />
/usr/lib64/libmysqlclient_r.so.14<br />
/usr/lib64/libmysqlclient_r.so.14.0.0<br />
/usr/lib64/libmysqlclient_r.so.15<br />
/usr/lib64/libmysqlclient_r.so.15.0.0<br />
/usr/lib64/libmysqlclient_r.so.16<br />
/usr/lib64/libmysqlclient_r.so.16.0.0<br />
</code></p>
<p>Thing is, that won&#8217;t install clean on its own because it also tries to provide &#8220;16&#8243;, which conflicts with the Percona package:<br />
<code><br />
[root@server1 ~]$ rpm -Uvh MySQL-shared-compat-5.1.39-0.rhel5.x86_64.rpm<br />
Preparing...                ########################################### [100%]<br />
        file /usr/lib64/libmysqlclient.so.16.0.0 from install of MySQL-shared-compat-5.1.39-0.rhel5.x86_64 conflicts with file from package MySQL-shared-percona-5.1.39-8.rhel5.x86_64<br />
        file /usr/lib64/libmysqlclient_r.so.16.0.0 from install of MySQL-shared-compat-5.1.39-0.rhel5.x86_64 conflicts with file from package MySQL-shared-percona-5.1.39-8.rhel5.x86_64<br />
</code></p>
<p>So here&#8217;s where we have to do the old one-step-back thing and <em>&#8211;force</em> it:<br />
<code><br />
[root@server1 ~]$ rpm -Uvh MySQL-shared-compat-5.1.39-0.rhel5.x86_64.rpm --force<br />
Preparing...                ########################################### [100%]<br />
   1:MySQL-shared-compat    ########################################### [100%]<br />
</code></p>
<p>Now for the case of the non &#8220;16&#8243; libraries this is good because it gives us something that should be close enough.   However for the specific libraries that our new server and client packages are built to use it&#8217;d be nice if they were dealing with the right copy, so now we force the Percona <em>-shared</em> package back on top of the MySQL one we just installed:<br />
<code><br />
[root@server1 ~]$  rpm -Uvh MySQL-shared-percona-5.1.39-8.rhel5.x86_64.rpm --force<br />
Preparing...                ########################################### [100%]<br />
   1:MySQL-shared-percona   ########################################### [100%]<br />
</code></p>
<p>Now we have all the versions of the mysql client libraries we need, and things install cleanly:<br />
<code><br />
[root@server1 ~]$ yum localinstall maatkit-5014-1.noarch.rpm --nogpgcheck<br />
Loaded plugins: fastestmirror<br />
Setting up Local Package Process<br />
Examining maatkit-5014-1.noarch.rpm: maatkit-5014-1.noarch<br />
Marking maatkit-5014-1.noarch.rpm to be installed<br />
Loading mirror speeds from cached hostfile<br />
 * addons: centos.mirror.nac.net<br />
 * base: mirror.cs.vt.edu<br />
 * epel: serverbeach1.fedoraproject.org<br />
 * extras: centos.mirror.nac.net<br />
 * updates: centos.mirror.nac.net<br />
Resolving Dependencies<br />
--> Running transaction check<br />
---> Package maatkit.noarch 0:5014-1 set to be updated<br />
--> Processing Dependency: perl(DBD::mysql) >= 1.0 for package: maatkit<br />
--> Processing Dependency: perl(Term::ReadKey) >= 2.10 for package: maatkit<br />
--> Running transaction check<br />
---> Package perl-DBD-MySQL.x86_64 0:3.0007-2.el5 set to be updated<br />
---> Package perl-TermReadKey.x86_64 0:2.30-4.el5 set to be updated<br />
--> Finished Dependency Resolution</p>
<p>Dependencies Resolved</p>
<p>================================================================================================================================================================================================================================================================================<br />
 Package                                                             Arch                                                      Version                                                          Repository                                                                 Size<br />
================================================================================================================================================================================================================================================================================<br />
Installing:<br />
 maatkit                                                             noarch                                                    5014-1                                                           /maatkit-5014-1.noarch                                                    3.2 M<br />
Installing for dependencies:<br />
 perl-DBD-MySQL                                                      x86_64                                                    3.0007-2.el5                                                     core-0                                                                    148 k<br />
 perl-TermReadKey                                                    x86_64                                                    2.30-4.el5                                                       epel                                                                       32 k</p>
<p>Transaction Summary<br />
================================================================================================================================================================================================================================================================================<br />
Install      3 Package(s)<br />
Update       0 Package(s)<br />
Remove       0 Package(s)</p>
<p>Total size: 3.4 M<br />
Total download size: 179 k<br />
Is this ok [y/N]: y<br />
(1/2): perl-TermReadKey-2.30-4.el5.x86_64.rpm                                                                                                                                                                                                            |  32 kB     00:00<br />
(2/2): perl-DBD-MySQL-3.0007-2.el5.x86_64.rpm                                                                                                                                                                                                            | 148 kB     00:00<br />
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br />
Total                                                                                                                                                                                                                                           2.2 MB/s | 179 kB     00:00<br />
Running rpm_check_debug<br />
Running Transaction Test<br />
Finished Transaction Test<br />
Transaction Test Succeeded<br />
Running Transaction<br />
  Installing     : perl-TermReadKey                                                                                                                                                                                                                                         1/3<br />
  Installing     : perl-DBD-MySQL                                                                                                                                                                                                                                           2/3<br />
  Installing     : maatkit                                                                                                                                                                                                                                                  3/3</p>
<p>Installed:<br />
  maatkit.noarch 0:5014-1</p>
<p>Dependency Installed:<br />
  perl-DBD-MySQL.x86_64 0:3.0007-2.el5                                                                                                   perl-TermReadKey.x86_64 0:2.30-4.el5</p>
<p>Complete!<br />
</code></p>
<p>Ta Da.   You can <em>yum install</em> with abandon again.</p>
<p>Credit to David Murphy for the key step here from his comments on <a href="http://www.percona.com/docs/wiki/release:start">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://default.io/2009/11/working-around-the-percona-mysql-rpm-dependancy-conflict-on-rhelcentos-5/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>MyISAM is better for write-heavy tables because InnoDB has a full table lock on insert.</title>
		<link>http://default.io/2009/08/myisam-is-better-for-write-heavy-tables-because-innodb-has-a-full-table-lock-on-insert/</link>
		<comments>http://default.io/2009/08/myisam-is-better-for-write-heavy-tables-because-innodb-has-a-full-table-lock-on-insert/#comments</comments>
		<pubDate>Sun, 09 Aug 2009 20:12:13 +0000</pubDate>
		<dc:creator>jim</dc:creator>
				<category><![CDATA[I am not a DBA]]></category>

		<guid isPermaLink="false">http://default.io/?p=105</guid>
		<description><![CDATA[Wait&#8230; what?
Bullshit, thats backwards.
Thats what I thought.  Then my DBA schooled me on two new feathers in my mysql wizards cap:
1.) if you&#8217;re very very careful, myisam supports concurrent inserts, which means you can write to a table like crazy without locking it
2.) innodb prior to 5.1.22 does not have a table lock on [...]]]></description>
			<content:encoded><![CDATA[<p>Wait&#8230; what?</p>
<p>Bullshit, thats backwards.</p>
<p>Thats what I thought.  Then my DBA schooled me on two new feathers in my mysql wizards cap:<br />
1.) if you&#8217;re very very careful, myisam supports <a href="http://dev.mysql.com/doc/refman/5.0/en/concurrent-inserts.html">concurrent inserts</a>, which means you can write to a table like crazy without locking it<br />
2.) <a href="http://www.mysqlperformanceblog.com/2007/09/26/innodb-auto-inc-scalability-fixed/">innodb prior to 5.1.22</a> does not have a table lock on insert, but it does have a lock on generating the next entry for an auto_increment column, such that any insert into that table that needs a new auto incremented ID is stuck in line waiting for its turn.  Which isn&#8217;t technically a table lock, but if most of your inserts are new records using that auto incremented column, its a similar result.</p>
<p>So if you combine the two corner cases of an app that almost only ever append-inserts and a particular version of mysql, the conventional wisdom on innodb vs. myisam completely inverts itself.</p>
<p>databases are hard</p>
]]></content:encoded>
			<wfw:commentRss>http://default.io/2009/08/myisam-is-better-for-write-heavy-tables-because-innodb-has-a-full-table-lock-on-insert/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>convergance!</title>
		<link>http://default.io/2009/08/convergance/</link>
		<comments>http://default.io/2009/08/convergance/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 02:31:15 +0000</pubDate>
		<dc:creator>jim</dc:creator>
				<category><![CDATA[I am not a DBA]]></category>

		<guid isPermaLink="false">http://default.io/?p=86</guid>
		<description><![CDATA[Headline says it all: XtraDB has been commited to MariaDB
Looks like the Open Database Alliance is paying off:
XtraDB has been commited to MariaDB server and will be included in binary releases of MariaDB (scheduled on end of August – September) as replacement of InnoDB storage engine.
Combine this with OurDelta kinda going dormant, you&#8217;ve got all [...]]]></description>
			<content:encoded><![CDATA[<p>Headline says it all: <a href="http://www.mysqlperformanceblog.com/2009/08/03/xtradb-has-been-commited-to-mariadb/">XtraDB has been commited to MariaDB</a></p>
<p>Looks like the <a href="http://monty-says.blogspot.com/2009/05/open-database-alliance-founded.html">Open Database Alliance</a> is paying off:</p>
<blockquote><p>XtraDB has been commited to MariaDB server and will be included in binary releases of MariaDB (scheduled on end of August – September) as replacement of InnoDB storage engine.</p></blockquote>
<p>Combine this with <a href="http://ourdelta.org/">OurDelta</a> kinda going dormant, you&#8217;ve got all the major forks and add-ons combining into one unified build in MariaDB.  This&#8217;ll give us something to run for the next year or two before we all switch to <a href="http://drizzle.org/">drizzle</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://default.io/2009/08/convergance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
