<?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>MySQL Expert &#124; MySQL Performance &#124; MySQL Consulting</title>
	<atom:link href="http://ronaldbradford.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://ronaldbradford.com/blog</link>
	<description>Expert times and information on MySQL</description>
	<lastBuildDate>Wed, 08 May 2013 19:34:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Percona Ireland??</title>
		<link>http://ronaldbradford.com/blog/percona-ireland-2013-05-08/</link>
		<comments>http://ronaldbradford.com/blog/percona-ireland-2013-05-08/#comments</comments>
		<pubDate>Wed, 08 May 2013 19:34:00 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=4302</guid>
		<description><![CDATA[Anybody else noticed that Percona appears to not be a US entity any more? I observed it today. $ sudo /usr/bin/innobackupex ... InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy and Percona Ireland Ltd 2009-2012. All Rights Reserved. This software is published under the GNU GENERAL PUBLIC LICENSE Version 2, June 1991. In previous [...]]]></description>
			<content:encoded><![CDATA[<p>Anybody else noticed that Percona appears to not be a US entity any more?</p>
<p>I observed it today.</p>
<pre>
$ sudo /usr/bin/innobackupex ...
InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy
and Percona Ireland Ltd 2009-2012.  All Rights Reserved.

This software is published under
the GNU GENERAL PUBLIC LICENSE Version 2, June 1991.
</pre>
<p>In previous versions this did say Percona Inc, 2009-2012.</p>
<p>The footer of the <a href="http://www.percona.com/doc/percona-xtrabackup/">Documentation</a> also states © Copyright Percona Ireland Ltd. 2009-2013. </p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/percona-ireland-2013-05-08/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Percona Live Conference Recommendations</title>
		<link>http://ronaldbradford.com/blog/percona-live-conference-recommendations-2013-02-28/</link>
		<comments>http://ronaldbradford.com/blog/percona-live-conference-recommendations-2013-02-28/#comments</comments>
		<pubDate>Thu, 28 Feb 2013 15:45:17 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[percona live]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=4289</guid>
		<description><![CDATA[While many attendees are repeat offenders, if 2013 is your first MySQL conference and you are relatively new with MySQL (say < 2 years experience), it can be daunting to determine which of the 8 or more concurrent sessions you should attend during the conference. Here are my top recommendations that give you a good [...]]]></description>
			<content:encoded><![CDATA[<p><a style="float:right; margin:10px" href="http://www.percona.com/live/mysql-conference-2013/"><img src="http://s0.percona.com/percona-live/plmce13/badges/123x123-speaking.png" width="123" height="123" alt="Percona Live MySQL Conference and Expo, April 22-25, 2013" title="Discover the Power of MySQL" /></a></p>
<p>While many attendees are repeat offenders, if 2013 is your first MySQL conference and you are relatively new with MySQL (say < 2 years experience), it can be daunting to determine which of the 8 or more concurrent sessions you should attend during the conference.</p>
<p>Here are my top recommendations that give you a good grounding in the various conference topics and a wealth of experience from known MySQL authorities, on important topics.</p>
<ol>
<li><a href="http://www.percona.com/live/mysql-conference-2013/sessions/backup-today-saves-you-tomorrow">A backup today saves you tomorrow</a> by Ben Mildred at Pythian.  Losing your data is a terrible experience. Learn what is needed to keep your data safe and you system highly available.</li>
<li><a href="http://www.percona.com/live/mysql-conference-2013/sessions/survey-percona-toolkit-command-line-tools-mysql">Survey of Percona Toolkit: Command-Line tools for MySQL</a> by Daniel Nichter at Percona.  There are a wealth of additional MySQL tools that any resource should be familiar with. These are some of the most popular.</li>
<li><a href="http://www.percona.com/live/mysql-conference-2013/sessions/script-it-make-professional-dba-tools-out-nothing">Script It. Make Professional DBA tools out of nothing</a> by Giuseppe Maxia at Continuent. I seasoned expert in the MySQL field, his expertise is invaluable to learn how to use MySQL effeciently. Giuseppe is also the creator of MySQL Sandbox, a huge productivity tool for developers.</li>
<li><a href="http://www.percona.com/live/mysql-conference-2013/sessions/practices-reducing-mysql-database-size">Practices for reducing MySQL database size</a> by Yoshinori Matsunobu at Facebook. This is a consulting technique I use for great advantage with clients to improve performance. Yoshinori is also one of the most popular technical speakers at events.</li>
<li><a href="http://www.percona.com/live/mysql-conference-2013/sessions/mha-getting-started-and-moving-past-quirks">MHA: Getting started and moving past the quirks</a> by Colin Charles at Monty Program.  Creating a HA environment is essential for any successful application. MHA is one open source approach that should be considered.</li>
<li><a href="http://www.percona.com/live/mysql-conference-2013/sessions/managing-data-and-data-archiving-using-mysql-56-new-features-portable-tablespace-and">Managing data and data archiving using MySQL 5.6 new features of portable tablespace and exchange partition</a> by Marco tusa at Pythian.  If there was one footnote feature in MySQL 5.6 that has a huge benefit, this is the feature. As data continues to grow rapidly in size, archiving is more important.</li>
</ol>
<p>This year&#8217;s conference talks are organized by topic and skill level. This can also help you find talks specific to your needs. Topics include the following:</p>
<ul>
<li>Developing Applications</li>
<li>Tools</li>
<li>Best Practices for Businesses</li>
<li>Database Administration</li>
<li>Utilizing Hardware</li>
<li>Replication and High Availability Strategies</li>
<li>Treads in Architecture and Design</li>
<li>New Features</li>
</ul>
<p>2013 is sure to be a great event, with a lineup of many MySQL product features for the MySQL ecosystem.</p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/percona-live-conference-recommendations-2013-02-28/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When is the error log filename not the right filename</title>
		<link>http://ronaldbradford.com/blog/when-is-the-error-log-filename-not-the-right-filename-2013-02-22/</link>
		<comments>http://ronaldbradford.com/blog/when-is-the-error-log-filename-not-the-right-filename-2013-02-22/#comments</comments>
		<pubDate>Fri, 22 Feb 2013 15:38:31 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[log-error]]></category>
		<category><![CDATA[mysql error log]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=4282</guid>
		<description><![CDATA[When evaluating a MySQL system one of the first things to look at is the MySQL error log. This is defined by the log[_-]error variable in the MySQL Configuration file. Generally found like: grep log.error /etc/my.cnf log_error=/var/lib/mysql/logs/mysql_error_log log-error=/var/lib/mysql/logs/mysql_error_log It is possible to find multiple rows because this could be defined in the [mysqld] and [mysqld_safe] [...]]]></description>
			<content:encoded><![CDATA[<p>When evaluating a MySQL system one of the first things to look at is the MySQL error log.  This is defined by the log[_-]error variable in the MySQL Configuration file.  Generally found like:</p>
<pre>
grep log.error /etc/my.cnf
log_error=/var/lib/mysql/logs/mysql_error_log
log-error=/var/lib/mysql/logs/mysql_error_log
</pre>
<p>It is possible to find multiple rows because this could be defined in the [mysqld] and [mysqld_safe] sections.  It is also possible it is incorrectly defined twice in any given section.</p>
<p>Immediately I see a problem here, and the following describes why. If you look at this file name, in this case it&#8217;s actually found, but the file is empty.  </p>
<pre>
$ ls -l /var/lib/mysql/logs/mysql_error_log
-rw-r----- 1 mysql mysql 0 Feb 19 20:35 /var/lib/mysql/logs/mysql_error_log
</pre>
<p>An error log should never exist and be empty, because starting the instance producing messages. An error log could be empty because the system does a log rotate (BTW, never rotate the error log, see <a href="http://ronaldbradford.com/blog/the-correct-approach-to-rolling-mysql-logs-2010-02-22/">The correct approach to rolling MySQL logs</a>). However it is empty in this case because MySQL is not writing to the error log filename as defined, because it does not have file extension.   NOTE: there is no .log or similar extension.  Looking more closely.</p>
<pre>
$ ls -l /var/lib/mysql/logs/mysql_error_log*
-rw-r----- 1 mysql mysql      0 Feb 19 20:35 /var/lib/mysql/logs/mysql_error_log
-rw-rw---- 1 mysql root  394530 Feb 19 20:35 /var/lib/mysql/logs/mysql_error_log.err
</pre>
<p>As you can see, MySQL has overwritten your parameter and given the file an extension, as verified by the runtime value.</p>
<pre>
mysql> show global variables like 'log_error';
+---------------+-----------------------------------------+
| Variable_name | Value                                   |
+---------------+-----------------------------------------+
| log_error     | /var/lib/mysql/logs/mysql_error_log.err |
+---------------+-----------------------------------------+
</pre>
<p>So, the tip is, always use .log for your MySQL error (and slow query log).</p>
<p>NOTE: Placing the log files in the MySQL datadir (which defaults to /var/lib/mysql) is also a bad idea. A topic for another blog post at a later time.</p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/when-is-the-error-log-filename-not-the-right-filename-2013-02-22/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The MySQL symlink trap</title>
		<link>http://ronaldbradford.com/blog/the-mysql-symlink-trap-2013-02-08/</link>
		<comments>http://ronaldbradford.com/blog/the-mysql-symlink-trap-2013-02-08/#comments</comments>
		<pubDate>Fri, 08 Feb 2013 18:41:04 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=4276</guid>
		<description><![CDATA[Many users of MySQL install and use the standard directories for MySQL data and binary logs. Generally this is /var/lib/mysql. As your system grows and you need more disk space on the general OS partition that commonly holds /tmp, /usr and often /home, you create a dedicated partition, for example /mysql. The MySQL data, binary [...]]]></description>
			<content:encoded><![CDATA[<p>Many users of MySQL install and use the standard directories for MySQL data and binary logs.  Generally this is /var/lib/mysql.<br />
As your system grows and you need more disk space on the general OS partition that commonly holds /tmp, /usr and often /home, you create a dedicated partition, for example /mysql. The MySQL data, binary logs etc are then moved to this partition (hopefully in dedicated directories). For example data is placed in /mysql/data.<br />
Often however, a symbolic link (symlink) is used to so MySQL still refers to the data in /var/lib/mysql.</p>
<p>When it comes to removing the symlink and correctly configuring MySQL, you first stop MySQL and correctly defining the datadir my.cnf variable to point to the right location. However, MySQL still keeps the legacy directory information around and this will cause MySQL replication to fail in several ways when you attempt to restart your MySQL instance.</p>
<p>The <strong>binary log index</strong>, the <strong>relay log index</strong>, and the <strong>relay log info</strong> files all contain the legacy path.  MySQL does not make it easy to also determine these actual files. </p>
<p>The relay_log_index variable defines the index, but defaults to [relay_log].index when not defined, so with SHOW GLOBAL VARIABLES this may be blank.<br />
log-bin-index  is an configurable option, but no matching global variable.  It defaults to [log-bin].index.<br />
relay_log_info will contain a value, generally only a file that is relevant to the data directory.</p>
<p>In these situations, your only option to to manually edit these files, specifying the new datadir (or log-bin) path in order to correctly remove symlinks.</p>
<p>The best advice, is to consider the design of your system first, and never place data in default locations if you feel this has to be modified later. Define those dedicated directories before you start using your MySQL instance.</p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/the-mysql-symlink-trap-2013-02-08/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>What OS do you use for MySQL?</title>
		<link>http://ronaldbradford.com/blog/what-os-do-you-use-for-mysql-2013-02-04/</link>
		<comments>http://ronaldbradford.com/blog/what-os-do-you-use-for-mysql-2013-02-04/#comments</comments>
		<pubDate>Mon, 04 Feb 2013 16:08:49 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=4269</guid>
		<description><![CDATA[In looking at operating systems in use for last year I found a very high concentration of RedHat/CentOS 5, and Ubuntu LTS operating systems. I would like to get a better picture of what is really used for MySQL production systems. Please take a moment to help me out. This survey only has one question. [...]]]></description>
			<content:encoded><![CDATA[<p>In looking at operating systems in use for last year I found a very high concentration of RedHat/CentOS 5, and Ubuntu LTS operating systems.  I would like to get a better picture of what is really used for MySQL production systems.<br />
Please take a moment to help me out. <a href="http://www.surveymonkey.com/s/MXBGLRF">This survey only has one question</a>.</p>
<p>Thanks</p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/what-os-do-you-use-for-mysql-2013-02-04/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Poor programming practices</title>
		<link>http://ronaldbradford.com/blog/poor-programming-practices-2013-02-01/</link>
		<comments>http://ronaldbradford.com/blog/poor-programming-practices-2013-02-01/#comments</comments>
		<pubDate>Fri, 01 Feb 2013 17:00:19 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[The Daily WTF]]></category>
		<category><![CDATA[bad code]]></category>
		<category><![CDATA[refactoring]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=4259</guid>
		<description><![CDATA[When will it stop. These amateur programmers that simply cut/paste code really affect those good programmers in the ecosystem trying to make a decent living. I was reviewing a developed (but incomplete) PHP/MySQL system using a common framework (which in itself is irrelevant for this post). In one source file there were 12 repetitions of [...]]]></description>
			<content:encoded><![CDATA[<p>When will it stop.  These amateur programmers that simply cut/paste code really affect those good programmers in the ecosystem trying to make a decent living.  I was reviewing a developed (but incomplete) PHP/MySQL system using a common framework (which in itself is irrelevant for this post).</p>
<p>In one source file there were 12 repetitions of the following code:</p>
<pre>
   //permissions
    $this->security_model->setUserPermissions($id);
    if (!array_key_exists($id,$this->session->userdata['permissions']) OR
	!array_key_exists('id', $this->session->userdata['permissions'][$id]) OR
	!array_key_exists('scope', $this->session->userdata['permissions'][$id]['name'])){
      $this->session->set_flashdata('alert', 'You are not authorized to go there.');
      redirect($this->agent->referrer());
    }
</pre>
<p>It&#8217;s bad enough when code is repeated and not put in a simple re factored function. When it&#8217;s repeated 12 times in one file, and OMG over 100 times in the product, that is a recipe for bugs, and high maintenance codes due to extremely poor coding practice.</p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/poor-programming-practices-2013-02-01/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Carbonite Online Backup is a fraud</title>
		<link>http://ronaldbradford.com/blog/carbonite-online-backup-is-a-fraud-2013-01-29/</link>
		<comments>http://ronaldbradford.com/blog/carbonite-online-backup-is-a-fraud-2013-01-29/#comments</comments>
		<pubDate>Tue, 29 Jan 2013 16:54:57 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Professional]]></category>
		<category><![CDATA[The Daily WTF]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[carbonite]]></category>
		<category><![CDATA[fraud]]></category>
		<category><![CDATA[recovery]]></category>
		<category><![CDATA[WTF]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=4252</guid>
		<description><![CDATA[Do not listen to the hype or the advertising. Carbonite backup solution is a fraud. I never realized the extent of the failures of the software until I had a problem, which is when you expect and demand commercial software you pay for to work. Ironically, looking now via Google search for Carbonite restore problems [...]]]></description>
			<content:encoded><![CDATA[<p>Do not listen to the hype or the advertising.  <a href="http://www.carbonite.com" target="_blank">Carbonite</a> backup solution is a fraud.  I never realized the extent of the failures of the software until I had a problem, which is when you expect and demand commercial software you pay for to work.</p>
<p>Ironically, looking now via Google search for <a href="https://www.google.com/search?q=carbonite+restore+problems&#038;oq=carbonite+restore+problems" target="_blank">Carbonite restore problems</a> there are plenty of horror stories.  And just to add to the experience, the <a href="http://dictionary.reference.com/browse/carbonite?s=t">definition of Carbonite</a> in the dictionary is &#8220;Explosive&#8221;.</p>
<p>Here is the first red flag.  You logon to the website, and if you click on &#8220;View Files&#8221;, or under the &#8220;Backup&#8221; tab with a nice cloud icon you click &#8220;Access Files&#8221;, there is no information available.  You will receive the error &#8220;We are unable to access your files on this computer right now. Please contact Customer Support at http://www.carbonite.com/support for further assistance.&#8221;.      What is really means is &#8220;Until your computer is online and your Carbonite software is working, you have no access to the details of your files that <b>are apparently</b> backed up.&#8221;  </p>
<p>When you contact customer support, they have no idea what that message means, and after wasting your time (for me in a chat session), a ticket was opened with technical support. The problem is there is no way to track your ticket online, get updates, post information etc.  I minimized the window, and now my chat session is closed (most likely by the rather ill informed customer representative).  Guess what? There is no information about the ticket number in your account. So I may as not every had that conversation, any evidence of it is now lost.</p>
<p>I was told that until a technical support person could access my computer there was no way I could access my files. WTF?  If there is no centralized list or log of my files on your backup solution, and no way to see this, how do I know you ever backed up my files. A fancy progress bar that flashes and says backing up files. Any 2 year old can write that faux display.  Red flag number 2.   It seems the only way to see my files is to install this software on yet another system to restore files. That is as Google Searching indicates, a likely lesson in extreme frustration</p>
<p>The ultimate cause of the problem was my system crashed, and when it restarted, Cabonite software was in this stuck state of &#8220;Registering&#8221;.  I was told to just re-install the software, that&#8217;s not an answer in my books.  That is red flag number 3.</p>
<p>I have definitely removed my credit card from their site to stop any automatic renewal of this crap software.</p>
<p>For the record, my home office backup solution includes important files on a Drobo. Backups of Documents to DropBox and then sync&#8217;d to another system.  Backup of all files on several machines to a central external USB, and then regular backups of that which are taken offsite.</p>
<p>You cannot be too careful with important things like photos.  Unfortunately this solution lacks a central catalog, and versioning of files (I.e. I overwrote an important presentation and did not realize for a few months, when I looked at all my backups of this, 3 or 4 copies, they were all the overwritten file, not the original.  It took about a day to actually find a copied version, not a backed up version)</p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/carbonite-online-backup-is-a-fraud-2013-01-29/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Upgrading to MySQL 5.5 on Ubuntu 10.04 LTS</title>
		<link>http://ronaldbradford.com/blog/upgrading-to-mysql-5-5-on-ubuntu-10-04-lts-2013-01-22/</link>
		<comments>http://ronaldbradford.com/blog/upgrading-to-mysql-5-5-on-ubuntu-10-04-lts-2013-01-22/#comments</comments>
		<pubDate>Tue, 22 Jan 2013 17:01:37 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[10.04 LTS]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[mysql 5.5]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[upgrade]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=4244</guid>
		<description><![CDATA[Ubuntu does not provide an apt-get repository package for MySQL 5.5 on this older OS, however this is still a widely used long term support version. The following steps will upgrade an existing MySQL 5.1 apt-get version to a standard MySQL 5.5 binary. Step 1. Remove existing MySQL 5.1 retaining data and configuration sudo su [...]]]></description>
			<content:encoded><![CDATA[<p>Ubuntu does not provide an apt-get repository package for MySQL 5.5 on this older OS, however this is still a widely used long term support version.  The following steps will upgrade an existing MySQL 5.1 apt-get version to a standard MySQL 5.5 binary.</p>
<h3>Step 1. Remove existing MySQL 5.1 retaining data and configuration</h3>
<pre>
sudo su -
service mysql stop
cp -r /etc/mysql /etc/mysql.51
cp -r /var/lib/mysql /var/lib/mysql.51
which mysqld
dpkg -P mysql-server mysql-server-5.1 mysql-server-core-5.1
which mysqld
which mysql
dpkg -P mysql-client-5.1 mysql-client-core-5.1
which mysql
dpkg -P libdbd-mysql-perl libmysqlclient16 mysql-common
# This will not remove /etc/mysql if any other files are in the directory
dpkg -l | grep mysql
[ -d /etc/mysql ] &#038;&#038; mv /etc/mysql /etc/mysql.uninstall
cp -r /etc/mysql.51 /etc/mysql
</pre>
<h3>2. Prepare configuration and required directories.</h3>
<pre>
sudo su -
MYCNF="/etc/mysql/my.cnf"
grep basedir ${MYCNF}
sed -ie "s/^basedir.*$/basedir=\/opt\/mysql/" ${MYCNF}
grep basedir ${MYCNF}
sed -ie "/^\[mysqld_safe\]/a\
skip-syslog" ${MYCNF}
chown -R mysql:mysql /var/lib/mysql
mkdir -p /var/run/mysqld
sudo chown mysql:mysql /var/run/mysqld
</pre>
<h3>Install MySQL 5.5</h3>
<pre>
sudo su -
mkdir -p /opt
cd /opt
# Install MySQL 5.5 Binaries
apt-get install -y libaio-dev  # New 5.5 dependency
wget http://cdn.mysql.com/Downloads/MySQL-5.5/mysql-5.5.28-linux2.6-x86_64.tar.gz
tar xvfz mysql*.tar.gz
ln -s mysql-5.5.28-linux2.6-x86_64 /opt/mysql
echo "export MYSQL_HOME=/opt/mysql
export PATH=\$MYSQL_HOME/bin:\$PATH" > /etc/profile.d/mysql.sh
chmod +x /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
echo $MYSQL_HOME
echo $PATH
which mysql
</pre>
<h3>4. Upgrade and verify MySQL Instance</h3>
<pre>
su - mysql
cd $MYSQL_HOME
bin/mysqld_safe --skip-syslog &#038;
tail /var/log/mysql/error.log
# There will be some expected ERRORS in error log
bin/mysql_upgrade -uroot
bin/mysqladmin -uroot  shutdown
bin/mysqld_safe --skip-syslog &#038;
tail -100 /var/log/mysql/error.log
mysql -uroot -e "SELECT VERSION();"
bin/mysqladmin -uroot  shutdown
exit
</pre>
<h3>5. Setup MySQL for system use</h3>
<pre>
# As Root
sudo su -
INIT="/etc/init.d/mysqld"
cp /opt/mysql/support-files/mysql.server ${INIT}
sed -ie "s/^basedir=$/basedir=\/opt\/mysql/;s/^datadir=$/datadir=\/var\/lib\/mysql/" ${INIT}
${INIT} start
mysql -uroot -e "SELECT VERSION();"
${INIT} stop
</pre>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/upgrading-to-mysql-5-5-on-ubuntu-10-04-lts-2013-01-22/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The heavy handed LinkedIn approach to your contacts</title>
		<link>http://ronaldbradford.com/blog/the-heavy-handed-approach-to-your-contacts-2013-01-04/</link>
		<comments>http://ronaldbradford.com/blog/the-heavy-handed-approach-to-your-contacts-2013-01-04/#comments</comments>
		<pubDate>Fri, 04 Jan 2013 18:05:15 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Professional]]></category>
		<category><![CDATA[FAIL]]></category>
		<category><![CDATA[LinkedIn]]></category>
		<category><![CDATA[User Experience]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=4214</guid>
		<description><![CDATA[I recently wanted to add two individuals to my list of professional contacts at LinkedIn. I was extremely disappointed at the modified user interface (UI) experience that made it difficult to do so. In the past, you just entered a list of emails. Many companies these days pressure you into opening up your entire network [...]]]></description>
			<content:encoded><![CDATA[<p>I recently wanted to add two individuals to my list of professional contacts at <a href="http://linkedin.com">LinkedIn</a>.  I was extremely disappointed at the modified user interface (UI) experience that made it difficult to do so. In the past, you just entered a list of emails.</p>
<p>Many companies these days pressure you into opening up your entire network of contacts for their benefits of knowing your social graph.  This is unacceptable.  </p>
<p>You have to go thru the following complexity just to send an email request for connection in LinkedIn now.</p>
<ul>
<li>Add Connections</li>
<li>Select any email (last button of options)</li>
<li>Click Invite by individual email (hidden at bottom of page)</li>
</ul>
<p><img src="http://media.ronaldbradford.com/images/linkedin1.png" /></p>
<p><img src="http://media.ronaldbradford.com/images/linkedin2.png" /></p>
<p><img src="http://media.ronaldbradford.com/images/linkedin3.png" /></p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/the-heavy-handed-approach-to-your-contacts-2013-01-04/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Not a cool new feature for Master_Host</title>
		<link>http://ronaldbradford.com/blog/not-a-cool-new-feature-for-master_host-2013-01-04/</link>
		<comments>http://ronaldbradford.com/blog/not-a-cool-new-feature-for-master_host-2013-01-04/#comments</comments>
		<pubDate>Fri, 04 Jan 2013 14:37:14 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[CHANGE MASTER]]></category>
		<category><![CDATA[mysql MHA]]></category>
		<category><![CDATA[SHOW SLAVE STATUS]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=4202</guid>
		<description><![CDATA[I was surprised to find on a customer MySQL server this new syntax for Master_host in SHOW SLAVE STATUS. mysql> SHOW SLAVE STATUS\G *************************** 1. row *************************** Slave_IO_State: Connecting to master Master_Host: testdb1.xxx.com or 10.XXX.XX.XXX Master_User: repl Master_Port: 3306 Connect_Retry: 60 Master_Log_File: db1-354215-bin-log.000005 Read_Master_Log_Pos: 1624 Relay_Log_File: db2-354214-relay-log.000001 Is this a fancy new Percona Server feature? [...]]]></description>
			<content:encoded><![CDATA[<p>I was surprised to find on a customer MySQL server this new syntax for Master_host in SHOW SLAVE STATUS.</p>
<pre>
mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
               Slave_IO_State: Connecting to master
<b>                  Master_Host: testdb1.xxx.com or 10.XXX.XX.XXX</b>
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: db1-354215-bin-log.000005
          Read_Master_Log_Pos: 1624
               Relay_Log_File: db2-354214-relay-log.000001
   </pre>
<p>Is this a fancy new Percona Server feature?  No. It&#8217;s operator error.</p>
<p>We read a little further to find.</p>
<pre>
mysql> SHOW SLAVE STATUS\G
...
             Slave_IO_Running: Connecting

...
                Last_IO_Errno: 2005
                Last_IO_Error: error connecting to master 'repl@ testdb1.xxx.com or 10.XXX.XX.XXX' - retry-time: 60  retries: 86400
</pre>
<p>How can this be created.<br />
Using MySQL MHA, you get the following message in the output of commands to manage replication.</p>
<pre>
...
Thu Jan  3 17:06:40 2013 - [info]  All other slaves should start replication from here.
Statement should be: CHANGE MASTER TO MASTER_HOST='testdb1.xxx.com or 10.XXX.XX.XXX', MASTER_PORT=3306,
 MASTER_LOG_FILE='db1-354215-bin-log.000005', MASTER_LOG_POS=1624, MASTER_USER='repl',
MASTER_PASSWORD='xxx';
...
</pre>
<p>Needless to say, this syntax was taken literately, and MySQL did not complain.</p>
<p>I would suggest here that while MySQL does not do any validation on the value of the MASTER_HOST value in the CHANGE MASTER TO command to ensure it is resolvable  it should at least do some validation to ensure the value is either a DNS entry or an IPV4,IPV6 value, that is space &#8216; &#8216;, is not a valid character in these situations.</p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/not-a-cool-new-feature-for-master_host-2013-01-04/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Installing MySQL MHA with Percona Server</title>
		<link>http://ronaldbradford.com/blog/installing-mysql-mha-with-percona-server-2013-01-03/</link>
		<comments>http://ronaldbradford.com/blog/installing-mysql-mha-with-percona-server-2013-01-03/#comments</comments>
		<pubDate>Thu, 03 Jan 2013 15:56:20 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[mysql MHA]]></category>
		<category><![CDATA[Percona Server]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=4195</guid>
		<description><![CDATA[MySQL MHA by Oracle ACE Director Yoshinori Matsunobu is an excellent open source tool to help in providing HA with native MySQL replication. The installation however is dependent on some Perl packages and to the untrained eye this may be an issue if you are using Percona Server as your choice of MySQL implementation. The [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/mysql-master-ha/">MySQL MHA</a> by Oracle ACE Director <a href="http://yoshinorimatsunobu.blogspot.com/">Yoshinori Matsunobu</a> is an excellent open source tool to help in providing HA with native MySQL replication. The installation however is dependent on some Perl packages and to the untrained eye this may be an issue if you are using <a href="http://www.percona.com/software/percona-server">Percona Server</a> as your choice of MySQL implementation.</p>
<p>The MHA Node page requires the <b>perl-DBD-MySQL</b> package to be installed. The installation on RedHat/CentOS/Oracle Linux  look like this:</p>
<pre>
$ sudo yum install perl-DBD-MySQL
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.anl.gov
* extras: mirror.anl.gov
* updates: mirror.anl.gov
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package perl-DBD-MySQL.x86_64 0:3.0007-2.el5 set to be updated
--> Finished Dependency Resolution
</pre>
<p>However, recently with a client the following error &#8220;mysql conflicts with Percona-Server&#8221; occurred.</p>
<pre>
$ sudo yum install perl-DBD-MySQL
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.anl.gov
* extras: mirror.anl.gov
* updates: mirror.anl.gov
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package perl-DBD-MySQL.x86_64 0:3.0007-2.el5 set to be updated
--> Processing Dependency: libmysqlclient.so.15(libmysqlclient_15)(64bit) for package: perl-DBD-MySQL
--> Processing Dependency: libmysqlclient.so.15()(64bit) for package: perl-DBD-MySQL
--> Running transaction check
---> Package mysql.x86_64 0:5.0.95-1.el5_7.1 set to be updated
--> Processing Conflict: mysql conflicts MySQL
--> Finished Dependency Resolution
mysql-5.0.95-1.el5_7.1.x86_64 from updates has depsolving problems
 --> mysql conflicts with Percona-Server-client-55
Error: mysql conflicts with Percona-Server-client-55
</pre>
<p>This is actually an easy problem to solve, but if you are unfamiliar with all the various MySQL packages for RPM&#8217;s, and you installed Percona Server with the standard documented commands you may get lost. What is necessary is the installation of the compatibility libraries, as simple as:</p>
<pre>
$ sudo yum install -y Percona-Server-shared-compat
</pre>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/installing-mysql-mha-with-percona-server-2013-01-03/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SQLSTATE[HY000]: General error: 2006 MySQL server has gone away</title>
		<link>http://ronaldbradford.com/blog/sqlstatehy000-general-error-2006-mysql-server-has-gone-away-2013-01-02/</link>
		<comments>http://ronaldbradford.com/blog/sqlstatehy000-general-error-2006-mysql-server-has-gone-away-2013-01-02/#comments</comments>
		<pubDate>Wed, 02 Jan 2013 16:47:16 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[max_allowed_packet]]></category>
		<category><![CDATA[timeout]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=4185</guid>
		<description><![CDATA[This would have to be one of the most common MySQL error messages that is misleading to the end user developer. The MySQL Manual page confirms the broad range of possible conditions, but offers little to a PHP developer that does not speak MySQL Geek. I am commonly asked to help solve this issue from [...]]]></description>
			<content:encoded><![CDATA[<p>This would have to be one of the most common MySQL error messages that is misleading to the end user developer.  The <a href="http://dev.mysql.com/doc/refman/5.5/en/gone-away.html">MySQL Manual page</a> confirms the broad range of possible conditions, but offers little to a PHP developer that does not speak MySQL Geek.  I am commonly asked to help solve this issue from a developer.</p>
<p>The problem is that there are several conditions that can cause this error, and a more meaningful explanation to the end user would help in addressing the issue.  In general terms, this actually means &#8220;Your SQL statement has failed because the connection to the database has been disconnected because of ???&#8221;.  </p>
<p>Here are a few common situations and how to check for what &#8220;???&#8221; is.</p>
<h3>1. Your MySQL server really did go away.</h3>
<p>We can easily check this by looking at the server uptime and the server error log. </p>
<pre>
$ mysql -uroot -p -e "show global status like 'uptime';"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Uptime        | 68928 |
+---------------+-------+
1 row in set (0.04 sec)
</pre>
<pre>
$ tail /var/log/mysql/error.log
130101 22:22:30 InnoDB: Initializing buffer pool, size = 256.0M
130101 22:22:30 InnoDB: Completed initialization of buffer pool
130101 22:22:30 InnoDB: highest supported file format is Barracuda.
130101 22:22:30 InnoDB: 1.1.8 started; log sequence number 63444325509
130101 22:22:30 [Note] Server hostname (bind-address): '127.0.0.1'; port: 3306
130101 22:22:30 [Note]   - '127.0.0.1' resolves to '127.0.0.1';
130101 22:22:30 [Note] Server socket created on IP: '127.0.0.1'.
130101 22:22:30 [Note] Event Scheduler: Loaded 0 events
130101 22:22:30 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.5.28-cll'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MySQL Community Server (GPL)
</pre>
<p>In both these cases, the server has been up some time, and there are zero error messages to indicate problems.</p>
<p>If the MySQL server did go away, was it shutdown or did it crash? The MySQL error log will provide the answers. Generally the mysql daemon (mysqld) will be restarted by the mysqld_safe wrapper process.</p>
<h3>2. The connection timed out</h3>
<pre>
$ mysql -uroot -p -e "show global variables like '%timeout';"
+----------------------------+----------+
| Variable_name              | Value    |
+----------------------------+----------+
| connect_timeout            | 30       |
| delayed_insert_timeout     | 300      |
| innodb_lock_wait_timeout   | 50       |
| innodb_rollback_on_timeout | OFF      |
| interactive_timeout        | 28800    |
| lock_wait_timeout          | 31536000 |
| net_read_timeout           | 30       |
| net_write_timeout          | 60       |
| slave_net_timeout          | 3600     |
| wait_timeout               | 28800    |
+----------------------------+----------+
</pre>
<p>These values are relatively sane MySQL defaults. If however you have very short timeouts, you may get this error. Here is just one example.</p>
<pre>
mysql> SET SESSION wait_timeout=5;

## Wait 10 seconds

mysql> SELECT NOW();
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    132361
Current database: *** NONE ***

+---------------------+
| NOW()               |
+---------------------+
| 2013-01-02 11:31:15 |
+---------------------+
1 row in set (0.00 sec)
</pre>
<h3>3. Your SQL statement was killed</h3>
<p>Some systems will proactively kill SQL statements that have been running too long.  You can easily check if this may be happening proactively by looking at how many KILL statements have been executed.</p>
<pre>
$ mysql -uroot -p -e "show global status like 'com_kill'"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Com_kill      | 0     |
+---------------+-------+
</pre>
<p>Not killed this time.</p>
<h3>4. Your SQL statement was too large.</h3>
<p>A little harder to test and verify, but MySQL uses a maximum packet site for communications between the server and the client.  If this includes large fields (for example BLOB columns), you may be getting a termination of your SQL statement due to size.</p>
<p>By default this is relatively small.</p>
<pre>
mysql> show global variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name      | Value   |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+
1 row in set (0.00 sec)
</pre>
<p>You can increase, for example to 16M with:</p>
<pre>
mysql> set global max_allowed_packet=1024*1024*16;
mysql> show global variables like 'max_allowed_packet';
+--------------------+----------+
| Variable_name      | Value    |
+--------------------+----------+
| max_allowed_packet | 16777216 |
+--------------------+----------+
1 row in set (0.00 sec)
</pre>
<p>The good news, is this was the cause for the customer today, and now no more errors!</p>
<p>Be sure to keep this value during MySQL restarts.</p>
<pre>
#my.cnf
[mysqld]
max_allowed_packet = 16M
</pre>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/sqlstatehy000-general-error-2006-mysql-server-has-gone-away-2013-01-02/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Open Source Database Schemas</title>
		<link>http://ronaldbradford.com/blog/open-source-database-schemas-2012-11-22/</link>
		<comments>http://ronaldbradford.com/blog/open-source-database-schemas-2012-11-22/#comments</comments>
		<pubDate>Thu, 22 Nov 2012 17:56:13 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=4172</guid>
		<description><![CDATA[I am seeking the help of the community. I am working on an evaluation project about schema design in open source applications. While it&#8217;s possible for me to download the software of many popular apps, and install the software and then do a mysqldump, it takes time. Quite often there is no simple schema.sql file, [...]]]></description>
			<content:encoded><![CDATA[<p>I am seeking the help of the community.  I am working on an evaluation project about schema design in open source applications.  While it&#8217;s possible for me to download the software of many popular apps, and install the software and then do a mysqldump, it takes time. Quite often there is no simple schema.sql file, but a process for creating the schema. If you are using an open source project, would you take a moment and run the following.</p>
<pre>
$ mysqldump -u[user] -p --skip-lock-tables --no-data --databases [schema]  > [schema].sql
</pre>
<p>This will only dump the table definitions, and should therefore contain nothing company specific.  I have at this time:</p>
<ul>
<li>WordPress</li>
<li>Drupal</li>
<li>Mediawiki</li>
<li>OS Commerce</li>
<li>Joomla</li>
<li>EzPublish</li>
<li>PHPWiki</li>
</ul>
<p>I am open to any projects, and it doesn&#8217;t matter if the version is not the most current, what I am seeking is to understand trends.  There is a huge list of possibilities including Bugzilla, PHPBB, SugarCRM, Magento, PHPWiki just to name a few.</p>
<p>Your help would be greatly appreciated. You are welcome to add a a comment, or email me at [this domain] with your results.</p>
<p>I am also happy to accept sanitized schemas of any projects, however please ensure no company or propriety specific information is provided.</p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/open-source-database-schemas-2012-11-22/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Controlled failover simplicity with MySQL</title>
		<link>http://ronaldbradford.com/blog/controlled-failover-simplicity-with-mysql-2012-09-19/</link>
		<comments>http://ronaldbradford.com/blog/controlled-failover-simplicity-with-mysql-2012-09-19/#comments</comments>
		<pubDate>Wed, 19 Sep 2012 17:03:25 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Continuent]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[continuent tungsten]]></category>
		<category><![CDATA[disaster recovery]]></category>
		<category><![CDATA[failover]]></category>
		<category><![CDATA[high availability]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=4150</guid>
		<description><![CDATA[As part of a recent engagement, I described the relative products to manage a MySQL pair (i.e. an Active/Passive MySQL masters configuration). This included the steps to undertake a controlled failover for supporting software maintenance using manual procedures. The upcoming Effective MySQL: Replication Techniques in Depth book details each step and all conditions to review [...]]]></description>
			<content:encoded><![CDATA[<p>As part of a recent engagement, I described the relative products to manage a MySQL pair (i.e. an Active/Passive MySQL masters configuration).  This included the steps to undertake a controlled failover for supporting software maintenance using manual procedures. The upcoming <a href="http://effectivemysql.com/book/replication-techniques/">Effective MySQL: Replication Techniques in Depth</a> book details each step and all conditions to review over a dozen pages. While the steps are straightforward and generally well known, scripting this for your environment takes a certain amount of work to ensure your information is correct, and application connectivity loss is kept to a minimum.</p>
<p>In Continuent Tungsten (which I have just been reviewing these past few weeks), I achieved the same result with a single command.</p>
<pre>
$ echo "switch" | /opt/continuent/tungsten/tungsten-manager/bin/cctrl
</pre>
<p>In addition to all the checks and balances to ensure data is consistent and no information can be lost, Continuent Tungsten Connectors ensure ALL database connections are maintained, i.e. they are not dropped. This is ideal for an application that uses persistent connections, e.g. Java applications. This is a feature that other options do not provide.  This command also supports additional read slaves with no additional work.</p>
<p>This post has been in draft for a while, the current chatter on disasters, controlled and uncontrolled failover, and the disaster preparedness for your company information is a very important. There are several options for implementing a more highly available (HA) MySQL solution depending on your business continuity requirements.</p>
<h3>The fine print</h3>
<p>Here is the full output of the command, between 3 servers, alpha, beta and gamma.</p>
<pre>
$ echo "switch" | /opt/continuent/tungsten/tungsten-manager/bin/cctrl
Tungsten Enterprise 1.5.2 build 69
connect to 'nyc@alpha'
nyc: session established
[LOGICAL] /nyc > switch
SELECTED SLAVE: beta@nyc
PURGE REMAINING ACTIVE SESSIONS ON CURRENT MASTER 'alpha@nyc'
PURGED A TOTAL OF 0 ACTIVE SESSIONS ON MASTER 'alpha@nyc'
FLUSH TRANSACTIONS ON CURRENT MASTER 'alpha@nyc'
PUT THE NEW MASTER 'beta@nyc' ONLINE
PUT THE PRIOR MASTER 'alpha@nyc' ONLINE AS A SLAVE
RECONFIGURING SLAVE 'gamma@nyc' TO POINT TO NEW MASTER 'beta@nyc'
SWITCH TO 'beta@nyc' WAS SUCCESSFUL
[LOGICAL] /nyc >
Exiting...
</pre>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/controlled-failover-simplicity-with-mysql-2012-09-19/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Joining the Continuent Team</title>
		<link>http://ronaldbradford.com/blog/joining-the-continuent-team-2012-09-11/</link>
		<comments>http://ronaldbradford.com/blog/joining-the-continuent-team-2012-09-11/#comments</comments>
		<pubDate>Tue, 11 Sep 2012 13:00:37 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Continuent]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[continuent]]></category>
		<category><![CDATA[tungsten]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=4128</guid>
		<description><![CDATA[This month I have joined the team at Continuent. No stranger to the MySQL ecosystem, Continuent provides replication and clustering technology for managing data between MySQL, Oracle, PostgreSQL, Vertica and a growing list of data stores. I have known many of the team at Continuent for some time, and will again be joining Giuseppe Maxia [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://continuent.com/templates/continuent-new/images/content/logo.png" style="background-color: #085b94; margin: 10px; padding: 10px; float: right"/>This month I have joined the team at <a href="http://continuent.com">Continuent</a>.  No stranger to the MySQL ecosystem, Continuent provides replication and clustering technology for managing data between MySQL, Oracle, PostgreSQL, Vertica and a growing list of data stores.</p>
<p>I have known many of the team at Continuent for some time, and will again be joining <a href="http://datacharmer.blogspot.com/">Giuseppe Maxia</a> from our days at MySQL Inc/AB starting back in 2006.</p>
<p>I am looking forward to taking the hard work out of administration of MySQL systems with the simplicity of Continuent Tungsten, simplifying tasks including automatic failover, multi-master and geo cluster redundancy to a single command.</p>
<p>Catch me speaking at the upcoming <a href="http://www.oracle.com/mysqlconnect/index.html">MySQL Connect</a> (San Francisco) and <a href="http://www.percona.com/live/nyc-2012/">Percona Live</a> (New York) conferences, and  where the third book of the Effective MySQL Series <a href="http://effectivemysql.com/book/replication-techniques/">Replication Techniques in Depth</a> will also be available for sale.</p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/joining-the-continuent-team-2012-09-11/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Looking for MySQL 4.1</title>
		<link>http://ronaldbradford.com/blog/looking-for-mysql-4-1-2012-08-31/</link>
		<comments>http://ronaldbradford.com/blog/looking-for-mysql-4-1-2012-08-31/#comments</comments>
		<pubDate>Fri, 31 Aug 2012 21:50:50 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=4124</guid>
		<description><![CDATA[I had need today to download a version of MySQL 4.1 to test something. The MySQL Developer Zone archives no longer provides any software before 5.0. While this may have long reached EOL and is no longer support, customers still do run this version of MySQL. Anybody that can help out with binaries (on several [...]]]></description>
			<content:encoded><![CDATA[<p>I had need today to download a version of MySQL 4.1 to test something.  The <a href="http://downloads.mysql.com/archives.php">MySQL Developer Zone archives</a> no longer provides any software before 5.0.</p>
<p>While this may have long reached EOL and is no longer support, customers still do run this version of MySQL.</p>
<p>Anybody that can help out with binaries (on several OS&#8217;s), it would be appreciated.  </p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/looking-for-mysql-4-1-2012-08-31/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>SPOF Internet</title>
		<link>http://ronaldbradford.com/blog/spof-internet-2012-08-30/</link>
		<comments>http://ronaldbradford.com/blog/spof-internet-2012-08-30/#comments</comments>
		<pubDate>Thu, 30 Aug 2012 18:25:45 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=4118</guid>
		<description><![CDATA[SPOF (i.e. Single Point of Failure) is the bane for technologists. Avoiding SPOF generally requires redundancy, and redundancy has a cost, often more then a business is prepared to pay. In the database field, I see this regularly and advise clients on how to improve availability and potential avoid disasters that can affect their business. [...]]]></description>
			<content:encoded><![CDATA[<p>SPOF (i.e. Single Point of Failure) is the bane for technologists.  Avoiding SPOF generally requires redundancy, and redundancy has a cost, often more then a business is prepared to pay.  In the database field, I see this regularly and advise clients on how to improve availability and potential avoid disasters that can affect their business.</p>
<p>Today, at approximately 10:30am, the Con Edison work crew in front of my home (digging a 5&#8243; deep trench down the road), severed multiple Time Warner Cable fibre connections. ($#&#038;* and the lack of ownership to correct timely is another story).  No Internet, no ability to work actively with clients (which I was doing), etc, etc.</p>
<p>As an individual that works from home, I have recognized this SPOF and have redundancy in place. That is, a Verizon MiFi HotSpot, normally used for travel, but a backup in times of Internet downtime to my home.  The moral here is, one level of redundancy is often not enough, just as MySQL replication is not a backup solution, only one part thereof, my backup redundancy was in maintenance mode (in this case loaned to a good overseas friend that is visiting and traveling in the US).  Disaster often strikes unexpectedly, and often causes multiple failures, this being an example of a cascading failure in my Internet redundancy procedures.</p>
<p>The fact that I am writing this post, shows that I have a second backup, that is a portable WiFi hotspot on my T-Mobile phone.  It&#8217;s not great, but it is an emergency.</p>
<p>This is not a satisfactory solution long term.  My first estimate for repairs was September 17th.  Even after stressing that was unsatisfactory, my second estimate is still unacceptable for my business.</p>
<p>Amen, to co-working spaces in New York. The ability to work at a location for a fixed daily/weekly/monthly cost.  It pays to know where they are, and have an informal relationship for such an emergency. While inconvenient, I can take a laptop and have power and Internet to work for some core hours in the day, again far less then ideal.</p>
<p>For those that have actually decided to read this far, the moral of the story is this. What is your plan when this happens to your business connection, or your primary MySQL database server? What is acceptable downtime, and how to address correcting issues outside of your control (e.g. An explosion in a data center taking out 15,000 servers, which has happened to me, or damage to the 5 servers you have, all in a single rack).  With practically every client, there is not a defined plan in the event of a disaster. There should be.</p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/spof-internet-2012-08-30/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL client password security</title>
		<link>http://ronaldbradford.com/blog/mysql-client-password-security-2012-08-15/</link>
		<comments>http://ronaldbradford.com/blog/mysql-client-password-security-2012-08-15/#comments</comments>
		<pubDate>Wed, 15 Aug 2012 17:12:36 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[clear text passwords]]></category>
		<category><![CDATA[passwords]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=4110</guid>
		<description><![CDATA[In case you missed it, MySQL 5.6.6, also known as Milestone 9, was recently released. I have yet to install this, however just one part of the MySQL 5.6.6 Release Notes makes placing installing and testing high on my TODO list. Updated 20 Sep, 2012. Be sure to also read Todd&#8217;s post Understanding mysql_config_editor’s security [...]]]></description>
			<content:encoded><![CDATA[<p>In case you missed it, MySQL 5.6.6, also known as Milestone 9, was recently released. I have yet to install this, however just one part of the <a href="http://dev.mysql.com/doc/refman/5.6/en/news-5-6-x.html">MySQL 5.6.6 Release Notes</a> makes placing installing and testing high on my TODO list.</p>
<p><b>Updated 20 Sep, 2012.</b> Be sure to also read Todd&#8217;s post <a href="http://mysqlblog.fivefarmers.com/2012/08/16/understanding-mysql_config_utilitys-security-aspects/">Understanding mysql_config_editor’s security aspects</a> about a more in-depth and accurate description of this new feature. In summary, &#8220;It makes secure access via MySQL client applications easier to use&#8221;. </p>
<p>That is the reported improvements in password management.  From the release notes:<br />
<i><br />
Security Improvements</p>
<p>These security improvements were implemented:</p>
<p>MySQL now provides a method for storing authentication credentials securely in an option file named .mylogin.cnf. To create the file, use the mysql_config_editor utility. The file can be read later by MySQL client programs to obtain authentication credentials for connecting to a MySQL server. mysql_config_editor writes the .mylogin.cnf file using encryption so the credentials are not stored as clear text, and its contents when decrypted by client programs are used only in memory. In this way, passwords can be stored in a file in non-cleartext format and used later without ever needing to be exposed on the command line or in an environment variable. This improves security for interactive use of MySQL client programs, as well as security for noninteractive tasks that require a MySQL password from a file. For more information, see <a href="http://dev.mysql.com/doc/refman/5.6/en/mysql-config-editor.html">Section 4.6.6, “mysql_config_editor — MySQL Configuration Utility”.</a></p>
<p>The .mylogin.cnf file can contain multiple sets of options, known as “login paths.” To specify which option group to use from the .mylogin.cnf file for connecting to the server, use the &#8211;login-path option. See <a href="http://dev.mysql.com/doc/refman/5.6/en/option-file-options.html">Section 4.2.3.4, “Command-Line Options that Affect Option-File Handling”.</a><br />
</i></p>
<p>There are additional improvements and modifications around encryption. Well worth reading about in <a href="http://dev.mysql.com/doc/refman/5.6/en/news-5-6-x.html">MySQL 5.6.6 Release Notes</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/mysql-client-password-security-2012-08-15/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>When is a crashing MySQL bug not a bug?</title>
		<link>http://ronaldbradford.com/blog/when-is-a-crashing-mysql-bug-not-a-bug-2012-08-15/</link>
		<comments>http://ronaldbradford.com/blog/when-is-a-crashing-mysql-bug-not-a-bug-2012-08-15/#comments</comments>
		<pubDate>Wed, 15 Aug 2012 15:15:28 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=4100</guid>
		<description><![CDATA[Answer: When Oracle acknowledges the bug in 5.5.25 (to the owner only), corrects the bug in 5.5.27 (to the owner only), yet hides all information of its existence. Recently a colleague and good friend discovered a bug in MySQL 5.5 replication that would crash MySQL. This was initially reported as Bug #65740, and after a [...]]]></description>
			<content:encoded><![CDATA[<p>Answer:  When Oracle acknowledges the bug in 5.5.25 (to the owner only), corrects the bug in 5.5.27 (to the owner only), yet hides all information of its existence.</p>
<p>Recently a colleague and good friend discovered a bug in MySQL 5.5 replication that would crash MySQL. This was initially reported as <a href="http://bugs.mysql.com/bug.php?id=65740">Bug #65740</a>, and after a lot of back and forth, a reproducible test case was found. Excellent work on the part of my colleague to spend the time to clearly identify the specific conditions. I remember looking at this initial thread in detail for an UPDATE statement using variables combined with an &#8211;ignore-database configuration option.</p>
<p>For no explanation by Oracle, this bug was subsequently marked as private (after I originally viewed the thread publicly), corrected, and the corrected bug is not referenced in the <a href="http://dev.mysql.com/doc/refman/5.5/en/news-5-5-27.html">5.5.27 Release Notes</a>, yet the private bug clearly states.</p>
<pre>
[20 Jul 11:59] XXXX
Fixed in 5.1.65/5.5.27.
</pre>
<p>The reason why I raise this concern is due to the lack of consistency.  Why this was not included in the Release Notes is not acceptable in my view.  However, the installation of 5.2.25 was needed to address another obscure <a href="http://bugs.mysql.com/bug.php?id=45670">Bug #45670</a> that was corrected and remains open to the MySQL Community.</p>
<p>I do not know of [yet] a public statement by Oracle that details why certain information about MySQL is open, and certain information is closed.</p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/when-is-a-crashing-mysql-bug-not-a-bug-2012-08-15/feed/</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
		<item>
		<title>Recent Presentations in Cali, Colombia</title>
		<link>http://ronaldbradford.com/blog/recent-presentations-in-cali-colombia-2012-07-20/</link>
		<comments>http://ronaldbradford.com/blog/recent-presentations-in-cali-colombia-2012-07-20/#comments</comments>
		<pubDate>Fri, 20 Jul 2012 19:42:23 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[ACE Director]]></category>
		<category><![CDATA[colombia]]></category>
		<category><![CDATA[OTN]]></category>
		<category><![CDATA[presentations]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=4076</guid>
		<description><![CDATA[On July 4 I gave two presentations at the OTN Tour Day, and on July 5 I have three presentations at the MySQL Training Days. This was my 3rd visit to Colombia and it was great to see a receptive audience. Thanks to Robin for organizing the events in 2010, 2011 and 2012. You can [...]]]></description>
			<content:encoded><![CDATA[<p>On July 4 I gave two presentations at the OTN Tour Day, and on July 5 I have three presentations at the MySQL Training Days. This was my 3rd visit to Colombia and it was great to see a receptive audience.  Thanks to Robin for organizing the events in 2010, 2011 and 2012.</p>
<p>You can download all presentations from the provided links.</p>
<ul>
<li><a href="/mysql-presentations/MySQLBackupAndRecoveryEssentials-Colombia2012.pdf">MySQL Backup and Recovery Essentials</a></li>
<li><a href="/mysql-presentations/MySQLSecurityEssentials-Colombia2012.pdf">MySQL Security Essentials</a></li>
<li><a href="/mysql-presentations/MySQLPerformanceAnalysisEssentials-Colombia2012.pdf">MySQL Performance Analysis Essentials</a></li>
<li><a href="/mysql-presentations/ExplainingTheMySQLEXPLAIN-Colombia2012.pdf">Explaining the MySQL Explain</a></li>
<li><a href="/mysql-presentations/ImprovingPerformanceWithBetterIndexes-Colombia2012.pdf">Improving Performance With Better Indexes</a></li>
<h3>References</h3>
<p><a href="http://www.asuoc.org.co/otn_tour_2012/ronald_bradford.php">Speaker Bio</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/recent-presentations-in-cali-colombia-2012-07-20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Video interviews at OTN Colombia</title>
		<link>http://ronaldbradford.com/blog/video-interviews-at-otn-colombia-2012-07-20/</link>
		<comments>http://ronaldbradford.com/blog/video-interviews-at-otn-colombia-2012-07-20/#comments</comments>
		<pubDate>Fri, 20 Jul 2012 19:41:21 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[colombia]]></category>
		<category><![CDATA[OTN]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=4055</guid>
		<description><![CDATA[The following are short interviews from the Oracle Technology Network (OTN) event in Cali, Colombia. One with myself and another with Sheeri Cabral. These Videos are sourced from OTN Tour Latin America 2012.]]></description>
			<content:encoded><![CDATA[<p>The following are short interviews from the Oracle Technology Network (OTN) event in Cali, Colombia.  One with myself and another with <a href="http://sheeri.com/">Sheeri Cabral</a>.</p>
<p><iframe width="560" height="315" src="http://www.youtube.com/embed/NQv_3JgRzMI" frameborder="0" allowfullscreen></iframe><br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/O3QioQViUa4" frameborder="0"  allowfullscreen></iframe></p>
<p>These Videos are sourced from <a href="http://www.oracle.com/technetwork/es/community/user-groups/videos-otn-tour-2012-colombia-1694824-esa.html#ronald-bradford">OTN Tour Latin America 2012</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/video-interviews-at-otn-colombia-2012-07-20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New security fixes for MySQL reported</title>
		<link>http://ronaldbradford.com/blog/new-security-fixes-for-mysql-reported-2012-07-18/</link>
		<comments>http://ronaldbradford.com/blog/new-security-fixes-for-mysql-reported-2012-07-18/#comments</comments>
		<pubDate>Wed, 18 Jul 2012 14:27:36 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=4086</guid>
		<description><![CDATA[6 new security fixes for Oracle MySQL have been detailed in the most current Oracle Critical Patch Update (CPU). These are: CVE-2012-1735 (5.5.23 and earlier) CVE-2012-0540 (5.1.62 and earlier, 5.5.23 and earlier) CVE-2012-1757 (5.5.23 and earlier ) CVE-2012-1756 (5.5.23 and earlier) CVE-2012-1734 (5.1.62 and earlier, 5.5.23 and earlier ) CVE-2012-1689 (5.1.62 and earlier, 5.5.22 and [...]]]></description>
			<content:encoded><![CDATA[<p>6 new security fixes for Oracle MySQL have been detailed in the most current Oracle Critical Patch Update (CPU).</p>
<p>These are: </p>
<ul>
<li>CVE-2012-1735 (5.5.23 and earlier)
<li>CVE-2012-0540 (5.1.62 and earlier, 5.5.23 and earlier)
<li>CVE-2012-1757 (5.5.23 and earlier )
<li>CVE-2012-1756 (5.5.23 and earlier)
<li>CVE-2012-1734 (5.1.62 and earlier, 5.5.23 and earlier )
<li>CVE-2012-1689 (5.1.62 and earlier, 5.5.22 and earlier )
</ul>
<p>Oracle strongly recommends that customers apply CPU fixes as soon as possible. Unfortunately there is no easy description for MySQL users what that really entails.  There is a reference to <i>Critical Patch Update July 2012 Patch Delivery Document for Oracle Sun Products Suite <a href="http://support.oracle.com/CSP/main/article?cmd=show&#038;type=NOT&#038;id=1446033.1">My Oracle Support Note 1446033.1</a></i>, however all the information is behind having a support license. There appears to be no information easily available for the community users.</p>
<p>A full description of these CVEs can be found <a href="http://www.oracle.com/technetwork/topics/security/cpujul2012verbose-392736.html#Oracle%20MySQL">here</a>. Unfortunately most say <i>	Vulnerability in the MySQL Server component of Oracle MySQL (subcomponent: Server). Supported versions that are affected are 5.5.23 and earlier. Easily exploitable vulnerability allows successful authenticated network attacks via multiple protocols. Successful attack of this vulnerability can result in unauthorized ability to cause a hang or frequently repeatable crash (complete DOS) of MySQL Server.</i> which is effectively useless information.</p>
<p>There is external information that can be found at the <a href="http://nvd.nist.gov">National Vulnerability Database</a> (not linked in the Oracle article).  For example <a href="http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2012-1735">http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2012-1735</a> however this does not provide any more meaningful information either.</p>
<p>There was a recent <a href="http://dev.mysql.com/doc/refman/5.5/en/news-5-5-25a.html">5.5.25a</a> released on 2012-07-05, however this, 5.5.25, 5.5.24, and the yet to be released 5.5.26 release notes provide no information about these security issues.</p>
<p>While security is important for a database and system administrator, on first inspection the information provided does not offer an easy way to assess the risk and take appropriate actions.</p>
<p>More information at <a href="http://www.oracle.com/technetwork/topics/security/cpujul2012-392727.html'>Oracle Critical Patch Update Advisory &#8211; July 2012</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/new-security-fixes-for-mysql-reported-2012-07-18/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>I will be speaking at Percona Live New York</title>
		<link>http://ronaldbradford.com/blog/i-will-be-speaking-at-percona-live-new-york-2012-07-17/</link>
		<comments>http://ronaldbradford.com/blog/i-will-be-speaking-at-percona-live-new-york-2012-07-17/#comments</comments>
		<pubDate>Tue, 17 Jul 2012 18:52:11 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[new york]]></category>
		<category><![CDATA[percona live]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=4028</guid>
		<description><![CDATA[Percona is back for a second New York Percona Live Conference. As the resident New York MySQL Expert, I will again be presenting. My session will be on MySQL Backup and Recovery Essentials. You can only present so much in one hour, and this presentation just touches on the highlights of what is possible. More [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.percona.com/live/nyc-2012/" style="float:right; margin:10px"><img src="/images/site/perconalive-ny2012.png" width="118" height="239" alt="Percona Live New York City, October 1 - 2, 2012" title="Discover the Power of MySQL" /></a><br />
Percona is back for a second <a href="http://www.percona.com/live/nyc-2012/users/ronaldbradford">New York Percona Live Conference</a>. As the resident <a href="http://nymysqlexpert.com/">New York MySQL Expert</a>, I will again be presenting.  My session will be on <a href="http://effectivemysql.com/presentation/mysql-backup-recovery-essentials/">MySQL Backup and Recovery Essentials</a>. </p>
<p>You can only present so much in one hour, and this presentation just touches on the highlights of what is possible.  More detailed information about the right backup and recovery strategy and associated tools is available in my current book <a href="http://effectivemysql.com/book/backup-recovery/">Effective MySQL: Backup and Recovery</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/i-will-be-speaking-at-percona-live-new-york-2012-07-17/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Encrypting your MySQL backups and more</title>
		<link>http://ronaldbradford.com/blog/encrypting-your-mysql-backups-and-more-2012-07-16/</link>
		<comments>http://ronaldbradford.com/blog/encrypting-your-mysql-backups-and-more-2012-07-16/#comments</comments>
		<pubDate>Mon, 16 Jul 2012 20:03:55 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[mysqldump]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[zNcrypt]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=4046</guid>
		<description><![CDATA[Assuming you have a backup and recovery strategy in place, how secure is your data? Does a hacker need to obtain access to your production system bypassing all the appropriate security protection you have in place, or just the unencrypted data on the backup server? Encryption with zNcrypt The following steps demonstrate how I setup [...]]]></description>
			<content:encoded><![CDATA[<p>Assuming you have a backup and recovery strategy in place, how secure is your data?  Does a hacker need to obtain access to your production system bypassing all the appropriate security protection you have in place, or just the unencrypted data on the backup server?</p>
<h3>Encryption with zNcrypt</h3>
<p>The following steps demonstrate how I setup a mysqldump encrypted backup with zNcrypt, a product from <a href="http://www.gazzang.com/">Gazzang</a>.  You can request a free trial evaluation of the software from <a href="http://gazzang.com/request-a-trial">http://gazzang.com/request-a-trial</a>. I asked for a AWS EC2 instance, and was able to provide my bootstrap instructions for OS and MySQL installation.  Following installation and configuration, the first step is to verify the zNcrypt process is running:</p>
<pre>
$ sudo ezncrypt-service status
  ezncrypt | Checking system dependencies
** ezncrypt system is UP and running **
       log | File: /var/log/ezncrypt/ezncrypt-service.log
</pre>
<p>If the process is not running you would find the following error message:</p>
<pre>
$ sudo ezncrypt-service status
  ezncrypt | Checking system dependencies
** ezncrypt system is NOT running **
       log | File: /var/log/ezncrypt/ezncrypt-service.log

$ sudo ezncrypt-service start
  ezncrypt | Checking system dependencies
  ezncrypt | checking encryption directories
    keymgr | Retrieving key from KSS
           |  > Encryption password retrieved from KSS
  ezncrypt | starting service
           |  > using "aes_256" cipher algorithm
           | done!
    access | Loading access control list
           | done!
  ezncrypt | Thank you for using ezncrypt.
       log | File: /var/log/ezncrypt/ezncrypt-service.log
</pre>
<p>Under the covers you will find the following attached devices, and no actual processes.</p>
<pre>
$ df -h
Filesystem ...
...
/var/lib/ezncrypt/storage/encrypted_private
/var/lib/ezncrypt/ezncrypted

$ ps -ef | grep ezn
uid  4947  3327  0 23:15 pts/3    00:00:00 grep ezn

$ ps -ef | grep cry
root        30     2  0 21:41 ?        00:00:00 [ecryptfs-kthrea]
root        31     2  0 21:41 ?        00:00:00 [crypto]
uid  4951  3327  0 23:15 pts/3    00:00:00 grep cry
</pre>
<p>The first step is to create a backup directory and encrypt all contents that are placed in the directory. ezNcrypt uses the concept of an @category for reference with an encrypted file or directory.</p>
<pre>
$ mkdir /mysql/backup/encrypted
$ sudo ezncrypt --encrypt @backup /mysql/backup/encrypted
  ezncrypt | Checking system dependencies
           | Verifying ezncrypt license
           | getting information about location
           |   > path: /var/lib/ezncrypt/ezncrypted/backup
  ezncrypt | Checking encryption status
           | done!
    keymgr | Retrieving key from KSS
           |  > Encryption password retrieved from KSS
           | generating keys
           | done!
    backup | backing up data
           | This can take a while. Please be patient
           |  > backing up /mysql/backup/encrypted
           |  > File: /opt/ezncrypt/backup/2012-04-27/encrypted.tar.gz
           | done!
  ezncrypt | encrypting files
           |  > checking disk space
           |  > encrypting /mysql/backup/encrypted
           | done!
  ezncrypt | congratulations. you have encrypted your Files!!
       log | File: /var/log/ezncrypt/ezncrypt.log
</pre>
<p>The underlying regular directory is now replaced:</p>
<pre>
$ ls -l /mysql/backup
total 0
lrwxrwxrwx 1 root root 59 2012-04-27 00:03 encrypted -> /var/lib/ezncrypt/ezncrypted/backup//mysql/backup/encrypted
</pre>
<p>Any attempts to write to this encrypted directory will now fail, even with the Linux super user:</p>
<pre>
$ mysqldump --all-databases > /mysql/backup/encrypted/edump1.sql
-bash: /mysql/backup/encrypted/edump1.sql: Permission denied

$ <b>sudo</b> mysqldump --all-databases > /mysql/backup/encrypted/edump1.sql
-bash: /mysql/backup/encrypted/edump1.sql: Permission denied
</pre>
<p>In order to read and write from an encrypted directory you need to grant access controls to a given program, for example <b>mysqldump</b>:</p>
<pre>
$ sudo ezncrypt-access-control -a "ALLOW @backup * /usr/bin/mysqldump"
passphrase:
salt:
Rule added
</pre>
<p>You verify the defined access control rules with:</p>
<pre>
$ sudo ezncrypt-access-control -L
passphrase:
salt:
# -  Type     Category       Path    Process
1    ALLOW    @backup        *       /usr/bin/mysqldump
</pre>
<p>However, writing with mysqldump still causes an error because it is the shell redirection that is performing the writing, as seen in the system error log:</p>
<pre>
$ mysqldump --all-databases > /mysql/backup/encrypted/edump1.sql
-bash: /mysql/backup/encrypted/edump1.sql: Permission denied
$ dmesg | tail
[4138848.618559] ezncryptfs: DENIED type="acl" exec="/bin/bash" script="/dev/pts/4" comm="bash" path="/var/lib/ezncrypt/ezncrypted/backup" pid=7448 uid=1000
</pre>
<p>You can use the &#8211;result-file option with mysqldump to enable the process to create the file directly. For example:</p>
<pre>
$ time mysqldump --all-databases   --result-file=/mysql/backup/encrypted/edump2.sql
real      1m34.714s
user      0m59.388s
sys       0m9.589s

$ sudo ezncrypt-run "ls -l /mysql/backup/encrypted/"
passphrase:
salt:
total 3.0G
-rw-rw-r-- 1 uid gid 2.9G 2012-04-27 02:43 edump2.sql
</pre>
<p>In this single test, the transparent encryption added only a very nominal overhead to the mysqldump test backup used. You can easily extract the file from the encrypted directory, however that would defeat the purpose of using encryption. The following syntax is shown just to confirm the validity of the encrypted file:</p>
<pre>
$ sudo /usr/sbin/ezncrypt-run "cp /mysql/backup/encrypted/edump2.sql ."
passphrase:
salt:
$ ls –al edump*
total 3916
-rw-r--r-- 1 uid gid 2.9G 2012-04-27 02:55 edump2.sql

$ grep "^CREATE.*DATABASE" edump2.sql
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `book2` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `employees` ...
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `musicbrainz` ...
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysql` ...
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `sakila` ...
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `world_innodb` ...
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `world_myisam` ...
</pre>
<p>When using correctly configured directories and access controls, the use is truly transparent to the backup process.</p>
<p>Restoring an encrypted file is a little more involved. The best approach is to create a script to perform the work, than encrypt this script.  When executed, this script will have the permissions necessary to read and apply the encrypted file.</p>
<p>Perhaps the best tip about using this type of transparent encryption is that it is possible to encrypt the MySQL user and password securely in a plain text configuration file and used with appropriate MySQL client commands. This helps to address another common security problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/encrypting-your-mysql-backups-and-more-2012-07-16/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>What compression do you use?</title>
		<link>http://ronaldbradford.com/blog/what-compression-do-you-use-2012-07-13/</link>
		<comments>http://ronaldbradford.com/blog/what-compression-do-you-use-2012-07-13/#comments</comments>
		<pubDate>Fri, 13 Jul 2012 16:26:09 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[gzip]]></category>
		<category><![CDATA[mysqldump]]></category>
		<category><![CDATA[pigz]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=4032</guid>
		<description><![CDATA[The following is an evaluation of various compression utilities that I tested when reviewing the various options for MySQL backup strategies. The overall winner in performance was pigz, a parallel implementation of gzip. If you use gzip today as most organizations do, this one change will improve your backup compression times. Details of the test: [...]]]></description>
			<content:encoded><![CDATA[<p>The following is an evaluation of various compression utilities that I tested when reviewing the various options for MySQL backup strategies. The overall winner in performance was <b>pigz</b>, a parallel implementation of gzip.  If you use gzip today as most organizations do, this one change will improve your backup compression times.</p>
<p>Details of the test:</p>
<ul>
<li>The database is 5.4GB of data</li>
<li>mysqldump produces a backup file of 2.9GB</li>
<li>The server is an AWS t1.xlarge with a dedicated EBS volume for backups</li>
</ul>
<p>The following testing was performed to compare the time and % compression savings of various available open source products.  This was not an exhaustive test with multiple iterations and different types of data files.</p>
<table>
<tr>
<th>Compression<br />Utility</th>
<th>Compression Time<br/> (sec)</th>
<th>Decompression Time<br/> (sec)</th>
<th>New Size <br/>(% Saving)</th>
</tr>
<tr>
<td>lzo (-3)</td>
<td>21</td>
<td>34</td>
<td>1.5GB (48%)</td>
</tr>
<tr>
<td>pigz (-1)</td>
<td>43</td>
<td>33</td>
<td>995MB (64%)</td>
</tr>
<tr>
<td>pigz (-3)</td>
<td>56</td>
<td>34</td>
<td>967MB (67%)</td>
</tr>
<tr>
<td>gzip (-1)</td>
<td>81</td>
<td>43</td>
<td>995MB (64%)</td>
</tr>
<tr>
<td>fastlz</td>
<td>92</td>
<td>128</td>
<td>1.3GB (55%)</td>
</tr>
<tr>
<td><u><b>pigz [-6]</b></u></td>
<td><u><b>105</b></u></td>
<td><u><b>25</b></u></td>
<td><u><b>902MB (69%)</b></u></td>
</tr>
<tr>
<td>gzip (-3)</td>
<td>106</td>
<td>43</td>
<td>967MB (67%)</td>
</tr>
<tr>
<td>compress</td>
<td>145</td>
<td>36</td>
<td>1.1GB (62%)</td>
</tr>
<tr>
<td>pigz (-9)</td>
<td>202</td>
<td>23</td>
<td>893MB (70%)</td>
</tr>
<tr>
<td><b>gzip [-6]</b></td>
<td><b>232</b></td>
<td><b>78</b></td>
<td><b>902MB (69%)</b></td>
</tr>
<tr>
<td>zip</td>
<td>234</td>
<td>50</td>
<td>902MB (69%)</td>
</tr>
<tr>
<td>gzip (-9)</td>
<td>405</td>
<td>43</td>
<td>893MB (70%)</td>
</tr>
<tr>
<td>bzip2</td>
<td>540</td>
<td>175</td>
<td>757MB (74%)</td>
</tr>
<tr>
<td>rzip</td>
<td>11 minutes</td>
<td>360</td>
<td>756MB (74%)</td>
</tr>
<tr>
<td>lzo (-9)</td>
<td>20 minutes</td>
<td>82</td>
<td>1.2GB (58%)</td>
</tr>
<tr>
<td>7z</td>
<td>33 minutes</td>
<td>122</td>
<td>669MB (77%)</td>
</tr>
<tr>
<td>lzip</td>
<td>47 minutes</td>
<td>132</td>
<td>669MB (77%)</td>
</tr>
<tr>
<td>lzma</td>
<td>58 minutes</td>
<td>180</td>
<td>639MB (78%)</td>
</tr>
<tr>
<td>xz</td>
<td>59 minutes</td>
<td>160</td>
<td>643MB (78%)</td>
</tr>
</table>
<h3>Observations</h3>
<ul>
<li>The percentage savings and compression time of results will vary depending on the type of data that is stored in the MySQL database.</li>
<li>The pigz compression utility was the surprising winner in best compression time producing at least a size of gzip. This was a full 50% faster than gzip.</li>
<li>For this compression tests, only one large file was used. Some utilities work much better with many smaller files.</li>
</ul>
<p>Find our more information of these tests and the results in <a href="http://EffectiveMySQL.com/book/backup-recovery">Effective MySQL: Backup and Recovery</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/what-compression-do-you-use-2012-07-13/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Recent Presentations Buenos Aires MySQL/NoSQL/Cloud Conference</title>
		<link>http://ronaldbradford.com/blog/buenos-aires-mysqlnosqlcloud-conference-2012-07-12/</link>
		<comments>http://ronaldbradford.com/blog/buenos-aires-mysqlnosqlcloud-conference-2012-07-12/#comments</comments>
		<pubDate>Thu, 12 Jul 2012 20:00:12 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[backup and recovery]]></category>
		<category><![CDATA[explain]]></category>
		<category><![CDATA[optimization]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=4012</guid>
		<description><![CDATA[The first annual Latin America MySQL/NoSQL/Cloud Conference was held in Buenos Aires Argentina from June 26-28. Kudos to Santiago Lertora from Binlogic who had the vision for the conference in his country and made it happen. I look forward to the second annual event. My first presentation was &#8220;Improving Performance with Better Indexes&#8221;. This presentation [...]]]></description>
			<content:encoded><![CDATA[<p>The first annual <a href="http://mysqlnosqlcloud.com/">Latin America MySQL/NoSQL/Cloud Conference</a> was held in Buenos Aires Argentina from June 26-28.  Kudos to Santiago Lertora from <a href="http://binlogic.net/">Binlogic</a> who had the vision for the conference in his country and made it happen. I look forward to the second annual event. </p>
<p>My first presentation was &#8220;Improving Performance with Better Indexes&#8221;.  This presentation details the six steps to SQL performance analysis, Capture, Identify, Confirm, Analyze, Optimize and Verify. An explanation of MySQL EXPLAIN, and working examples to create indexes and better covering indexes in several examples are provided.  A production example of a 13 table join is used to detail how covering indexes and partial column indexes can make a dramatic improvement in performance.   <a href="/mysql-presentations/ImprovingPerformanceWithBetterIndexes-LA2012.pdf">Download Presentation (PDF)</a>.</p>
<p>More detailed information about EXPLAIN and creating indexes is available in book <a href="http://effectivemysql.com/book/optimizing-sql-statements/">Effective MySQL: Optimizing SQL Statements</a>.</p>
<p>My second presentation was &#8220;MySQL Backup and Recovery Essentials&#8221;.  This presentation covers the most common options for MySQL backup and the respective restore options.  Also covered is the importance of the master binary logs and point in time recovery capabilities.  <a href="/mysql-presentations/MySQLBackupAndRecoveryEssentials-LA2012.pdf">Download Presentation (PDF)</a></p>
<p>More detailed information about the right backup and recovery strategy  and associated tools is available in book <a href="http://effectivemysql.com/book/backup-recovery/">Effective MySQL: Backup and Recovery</a>.</p>
<h3>References</h3>
<p><a href="http://mysqlnosqlcloud.com/program.php">Latin America MySQL/NoSQL/Cloud Conference Program</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/buenos-aires-mysqlnosqlcloud-conference-2012-07-12/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upcoming MySQL Connect Presentations</title>
		<link>http://ronaldbradford.com/blog/upcoming-mysql-connect-presentations-2012-07-11/</link>
		<comments>http://ronaldbradford.com/blog/upcoming-mysql-connect-presentations-2012-07-11/#comments</comments>
		<pubDate>Wed, 11 Jul 2012 20:14:40 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[mysql conference]]></category>
		<category><![CDATA[mysql connect]]></category>
		<category><![CDATA[Oracle Open World]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=4020</guid>
		<description><![CDATA[The MySQL Connect 2012 conference event being held in San Francisco on Sep 29-30 has a long list of quality MySQL speakers including myself. I will be giving 2 presentations on: CON8322 &#8211; Lessons from Managing 500+ MySQL Instances In this presentation, learn about the issues of managing a large number of instances of MySQL, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.oracle.com/mysqlconnect/index.html" style="float:right;margin:10px"><img src="/images/site/mysqlconnect2012.gif" /></a><br />
The <a href="http://www.oracle.com/mysqlconnect/index.html">MySQL Connect 2012</a> conference event being held in San Francisco on Sep 29-30 has a long list of quality MySQL speakers including myself. I will be giving 2 presentations on:</p>
<h3>CON8322 &#8211; Lessons from Managing 500+ MySQL Instances</h3>
<p>In this presentation, learn about the issues of managing a large number of instances of MySQL, supporting 50 billion SQL statements per day. Topics covered:<br />
• The need for monitoring and instrumentation<br />
• How to automate installations, upgrades, and deployments<br />
• Issues with MySQL’s Replication feature with 300 slaves per master<br />
• Traffic minimization techniques<br />
• Creating high availability with regions and zones<br />
• Real-time traffic stats (aggregated every five seconds)</p>
<h3>CON8320 &#8211; Improving Performance with Better Indexes</h3>
<p>Learn how to use one simple advanced technique to make better indexes in MySQL and improve your queries by 500 percent or more. Even with a highly indexed schema, you can achieve significant improvements in performance by creating better indexes. This presentation introduces an approach to correct identification and verification of problem SQL statements and then describes the means of identifying index choices for optimization. Then it discusses not only how to apply indexes to improve query performance but also how to apply better indexes and provide even greater performance gains.</p>
<p>You can also read more information with my <a href="https://blogs.oracle.com/MySQL/entry/interview_with_ronald_bradford_about">Interview about MySQL Connect</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/upcoming-mysql-connect-presentations-2012-07-11/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recent Presentations at Charlotte South East LinuxFest</title>
		<link>http://ronaldbradford.com/blog/recent-presentations-at-charlotte-south-east-linuxfest-2012-07-10/</link>
		<comments>http://ronaldbradford.com/blog/recent-presentations-at-charlotte-south-east-linuxfest-2012-07-10/#comments</comments>
		<pubDate>Tue, 10 Jul 2012 15:22:24 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=3993</guid>
		<description><![CDATA[At the recent South East LinuxFest in June 2012 I gave two MySQL presentations. The first was on Explaining the MySQL Explain. This presentation details the MySQL Query Execution Plan (QEP) of an SQL statement and how to understand and interpret the information from the EXPLAIN command. Also discussed are additional commands and tools that [...]]]></description>
			<content:encoded><![CDATA[<p>At the recent <a href="http://www.southeastlinuxfest.org/">South East LinuxFest</a> in June 2012 I gave two MySQL presentations.</p>
<p>The first was on <a href="/mysql-presentations/ExplainingTheMySQLEXPLAIN-SELF2012.pdf">Explaining the MySQL Explain</a>. This presentation details the MySQL Query Execution Plan (QEP) of an SQL statement and how to understand and interpret the information from the <a href="http://dev.mysql.com/doc/refman/5.5/en/explain.html">EXPLAIN</a> command.  Also discussed are additional commands and tools that exist to add supplementary information. These are essential skills that will be used daily in production operations.  <a href="/mysql-presentations/ExplainingTheMySQLEXPLAIN-SELF2012.pdf">Download Presentation (PDF)</a></p>
<p><img style="float:right; margin:10px" src="http://media.ronaldbradford.com/images/effective-mysql-optimizing-sql-statements.png" alt="Effective MySQL: Optimizing SQL Statements" />More detailed information about EXPLAIN and associated commands is available in book <a href="http://effectivemysql.com/book/optimizing-sql-statements/">Effective MySQL: Optimizing SQL Statements</a>.</p>
<p><img style="float:right; margin:10px; clear:both" src="http://media.ronaldbradford.com/images/effective-mysql-backup-recovery.png" alt="Effective MySQL:Backup and Recovery" /><br />
The second was on <a href="/mysql-presentations/AvoidingAMySQLDisaster-SELF2012.pdf">MySQL Disasters, and how to avoid yours</a>. Organizations are always making improvements for scalability, however disaster preparedness is the poor cousin. This presentation will show you how to easily avoid the most common MySQL disaster situations.<br />
Backup and recovery is critical for business continuity, many websites run the risk of data loss or corruption because existing procedures (if any) are generally flawed.<br />
<a href="/mysql-presentations/AvoidingAMySQLDisaster-SELF2012.pdf">Download Presentation (PDF</a></p>
<p>More detailed information about the right backup and recovery strategy  and associated tools is available in book <a href="http://effectivemysql.com/book/backup-recovery/">Effective MySQL: Backup and Recovery</a>.</p>
<h3>References</h3>
<p><a href="http://www.southeastlinuxfest.org/SELF-2012-Schedule2.pdf">South East Linux Fest Agenda</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/recent-presentations-at-charlotte-south-east-linuxfest-2012-07-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>REPOST:  A Tragically Comedic Security Flaw in MySQL</title>
		<link>http://ronaldbradford.com/blog/repost-a-tragically-comedic-security-flaw-in-mysql-2012-06-11/</link>
		<comments>http://ronaldbradford.com/blog/repost-a-tragically-comedic-security-flaw-in-mysql-2012-06-11/#comments</comments>
		<pubDate>Mon, 11 Jun 2012 19:43:07 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=3987</guid>
		<description><![CDATA[&#8220;In short, if you try to authenticate to a MySQL server affected by this flaw, there is a chance it will accept your password even if the wrong one was supplied. The following one-liner in bash will provide access to an affected MySQL server as the root user account, without actually knowing the password.&#8221; $ [...]]]></description>
			<content:encoded><![CDATA[<p><i>&#8220;In short, if you try to authenticate to a MySQL server affected by this flaw, there is a chance it will accept your password even if the wrong one was supplied. The following one-liner in bash will provide access to an affected MySQL server as the root user account, without actually knowing the password.&#8221;</i></p>
<pre>
$ for i in `seq 1 1000`; do mysql -u root --password=bad -h 127.0.0.1 2>/dev/null; done
mysql>
</pre>
<p>The following are confirmed distributions that are vulnerable:</p>
<ul>
<li>Ubuntu Linux 64-bit ( 10.04, 10.10, 11.04, 11.10, 12.04 ) ( via many including @michealc )
<li>OpenSuSE 12.1 64-bit MySQL 5.5.23-log ( via @michealc )
<li>Debian Unstable 64-bit 5.5.23-2 ( via @derickr )
<li>Fedora ( via hexed  and confirmed by Red Hat )
<li>Arch Linux (unspecified version)
</ul>
<p>Full details can be found at <a href="https://community.rapid7.com/community/metasploit/blog/2012/06/11/cve-2012-2122-a-tragically-comedic-security-flaw-in-mysql">https://community.rapid7.com/community/metasploit/blog/2012/06/11/cve-2012-2122-a-tragically-comedic-security-flaw-in-mysql</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/repost-a-tragically-comedic-security-flaw-in-mysql-2012-06-11/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>The black vodka MySQL tradition</title>
		<link>http://ronaldbradford.com/blog/the-black-vodka-mysql-tradition-2012-06-06/</link>
		<comments>http://ronaldbradford.com/blog/the-black-vodka-mysql-tradition-2012-06-06/#comments</comments>
		<pubDate>Wed, 06 Jun 2012 14:28:59 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=3981</guid>
		<description><![CDATA[Many do not need any further introduction to this Monty tradition at MySQL events. For the New York Effective MySQL Meetup group this was a new experience for many that I had the opportunity to share at our recent meeting. In 12 months the group has grown to over 280 members, and now recent attendees [...]]]></description>
			<content:encoded><![CDATA[<p>Many do not need any further introduction to this Monty tradition at MySQL events. For the <a href="http://ny.effectivemysql.com/">New York Effective MySQL Meetup</a> group this was a new experience for many that I had the opportunity to share at our recent meeting.  In 12 months the group has grown to over 280 members, and now recent attendees have experienced black vodka first hand.  </p>
<p>A special thanks to Monty Program AB and Colin Charles for providing the alcohol. </p>
<p><img src="http://photos2.meetupstatic.com/photos/event/a/c/2/8/highres_126884072.jpeg" /><br />
<img src="http://photos1.meetupstatic.com/photos/event/a/c/1/e/highres_126884062.jpeg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/the-black-vodka-mysql-tradition-2012-06-06/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
