<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<feed xmlns="http://www.w3.org/2005/Atom">

	<title>Planet HA</title>
	<link rel="self" href="atom.xml"/>
	<link href="default"/>
	<id>atom.xml</id>
	<updated>2010-07-30T13:10:27+00:00</updated>
	<generator uri="http://www.planetplanet.org/">Planet/2.0 +http://www.planetplanet.org</generator>

	<entry xml:lang="en">
		<title type="html">DRBD backported (or not) to 2.6.32 in EL6 ?</title>
		<link href="http://www.arrfab.net/blog/?p=224"/>
		<id>http://www.arrfab.net/blog/?p=224</id>
		<updated>2010-07-20T12:54:32+00:00</updated>
		<content type="html">&lt;p&gt;As some of you already know it, DRBD is now (since kernel 2.6.33) &lt;a href=&quot;http://www.drbd.org/download/mainline/&quot; target=&quot;_blank&quot;&gt;part of the mainline/upstream kernel&lt;/a&gt;. Some were expecting RHEL6 to come with that kernel (used for Fedora 13). The latest RHEL6beta2 still comes with 2.6.32, which doesn&amp;#8217;t include DRBD support. Of course we still don&amp;#8217;t know what the &amp;#8216;frozen&amp;#8217; RHEL6 kernel will be but on the other hand, we know that Red Hat quite often &amp;#8216;backports&amp;#8217; modules from newer kernel into the RHEL kernel. What about DRBD ? At the time of writing this blog post, it seems still undecided, but you can follow the &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=585309&quot; target=&quot;_blank&quot;&gt;DRBD RFE on Upstream Bugzilla &lt;/a&gt;to get a clue, or even comment on it if you have a bugzilla account to  make hear your voice. On the other hand, you can still be sure that even if DRBD isn&amp;#8217;t part of EL6, CentOS will still ship it in the &lt;a href=&quot;http://wiki.centos.org/AdditionalResources/Repositories&quot; target=&quot;_blank&quot;&gt;Extras repository&lt;/a&gt;, like for EL4/EL5 &amp;#8230;&lt;/p&gt;</content>
		<author>
			<name>Arrfab's Blog » Cluster</name>
			<uri>http://www.arrfab.net/blog</uri>
		</author>
		<source>
			<title type="html">Arrfab's Blog » Cluster</title>
			<subtitle type="html">Linux tips and tricks ...</subtitle>
			<link rel="self" href="http://www.arrfab.net/blog/?feed=rss2&amp;cat=5"/>
			<id>http://www.arrfab.net/blog/?feed=rss2&amp;cat=5</id>
			<updated>2010-07-20T13:00:10+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">19 Jul 2010</title>
		<link href="http://www.advogato.org/person/lmb/diary.html?start=107"/>
		<id>http://www.advogato.org/person/lmb/diary.html?start=107</id>
		<updated>2010-07-19T22:25:42+00:00</updated>
		<content type="html">&lt;p&gt;It has been a while since I took the chance to blog here;
the time has been pretty packed with shipping SUSE Linux
Enterprise 11 Service-Pack 1's High-Availability Extension
(or SLE HA 11 SP1 for short ;-), and supporting the first
deployments.
&lt;p&gt;It is a good time to look back and review the very
awesome new features that the community developed along with
us, and that we are shipping as Enterprise-ready now.
&lt;p&gt;A feature that I am personally very impressed by is the
OCFS2 reflink feature; basically, OCFS2 cracked the hard nut
of cluster-wide copy-on-write snapshots, which LVM2 has been
trying to for years. This allows space-efficient and very
fast provisioning of new VMs, snapshots for backup, cloning
from templates, cloning from clones, etcetera; it really is
amazing.
&lt;p&gt;For those of you who prefer a visual, the team from NGN
taped &lt;a href=&quot;http://www.ngn.nl/ngn?waxid=424189285&quot;&gt;a
video with me&lt;/a&gt; being interviewed by Sander at Novell's
BrainShare in Amsterdam; this
is my first video interview ever!
&lt;p&gt;In case you would like an audio-only review, Ron and
terry &lt;a href=&quot;http://www.novell.com/feeds/openaudio/?p=350&quot;&gt;interviewed
me for Novell Open Audio&lt;/a&gt; as well.
&lt;p&gt;I hope you find them informative - if so, please spread them,
and let me know your feedback.&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</content>
		<author>
			<name>Advogato blog for lmb</name>
			<uri>http://www.advogato.org/person/lmb/</uri>
		</author>
		<source>
			<title type="html">Advogato blog for lmb</title>
			<subtitle type="html">Advogato blog for lmb</subtitle>
			<link rel="self" href="http://www.advogato.org/person/lmb/rss.xml"/>
			<id>http://www.advogato.org/person/lmb/rss.xml</id>
			<updated>2010-07-30T13:10:03+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">English-language Linux Cluster stack training coming to Berlin</title>
		<link href="http://fghaas.wordpress.com/2010/07/16/english-language-linux-cluster-stack-training-coming-to-berlin/"/>
		<id>http://fghaas.wordpress.com/?p=555</id>
		<updated>2010-07-16T07:44:03+00:00</updated>
		<content type="html">&lt;p&gt;We usually do our English-language Linux Cluster Stack training sessions in the U.S., with training in Europe being primarily held in German. So if you live in Europe, speak English, and want to hone your high availability skills on your own continent, learning from the top notch experts, here is your rare chance:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;November 9-12,&lt;/strong&gt; were are &lt;a href=&quot;http://www.linbit.com/en/training/training-schedule/drbd-total-nov-09-12-2010-berlin-english/&quot;&gt;doing our &lt;strong&gt;DRBD Total&lt;/strong&gt; training&lt;/a&gt; in one of Europe&amp;#8217;s finest cities, &lt;a href=&quot;http://en.wikipedia.org/wiki/Berlin&quot;&gt;Berlin&lt;/a&gt;. Berlin is easily reached by air or rail, and our &lt;a href=&quot;http://tinyurl.com/29fe7pq&quot;&gt;training location&lt;/a&gt; is directly next to historical &lt;a href=&quot;http://en.wikipedia.org/wiki/Checkpoint_Charlie&quot;&gt;Allied Checkpoint Charlie&lt;/a&gt; on Friedrichstraße. Training is exclusively in English, and covers &lt;a href=&quot;http://www.drbd.org&quot;&gt;DRBD&lt;/a&gt;, the &lt;a href=&quot;http://www.linux-ha.org/wiki/Heartbeat&quot;&gt;Heartbeat&lt;/a&gt;/&lt;a href=&quot;http://www.corosync.org&quot;&gt;Corosync&lt;/a&gt;/&lt;a href=&quot;http://www.clusterlabs.org&quot;&gt;Pacemaker&lt;/a&gt; cluster stack, and a number of high availability applications.&lt;/p&gt;
&lt;p&gt;I hear you say, &amp;#8220;November? Then why are you telling me this now?&amp;#8221; Well guess what, there is a &lt;strong&gt;15% early bird discount&lt;/strong&gt; off the standard price if you register before August 31. So &lt;a href=&quot;http://www.linbit.com/en/training/training-schedule/register-now/&quot;&gt;register quickly&lt;/a&gt; and grab your chance! Our classes usually sell out fast.&lt;/p&gt;
&lt;p&gt;By the way: if you do speak German, we also have a German-language training coming up in Vienna in September. &lt;a href=&quot;http://www.linbit.com/de/training/trainingskalender/drbd-total-14-17092010-wien/&quot;&gt;Take a look&lt;/a&gt;!&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/fghaas.wordpress.com/555/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/fghaas.wordpress.com/555/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/fghaas.wordpress.com/555/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/fghaas.wordpress.com/555/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/fghaas.wordpress.com/555/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/fghaas.wordpress.com/555/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/fghaas.wordpress.com/555/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/fghaas.wordpress.com/555/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/fghaas.wordpress.com/555/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/fghaas.wordpress.com/555/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=fghaas.wordpress.com&amp;blog=1182330&amp;post=555&amp;subd=fghaas&amp;ref=&amp;feed=1&quot; /&gt;</content>
		<author>
			<name>Florian's blog</name>
			<uri>http://fghaas.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Florian's blog</title>
			<subtitle type="html">Linux, DRBD, and other stuff of interest</subtitle>
			<link rel="self" href="http://blogs.linbit.com/florian/feed/"/>
			<id>http://blogs.linbit.com/florian/feed/</id>
			<updated>2010-07-19T19:20:33+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">High availability for MySQL on Amazon EC2 – Part 3 – Configuring the HA resources</title>
		<link href="http://www.mysqlperformanceblog.com/2010/07/12/high-availability-for-mysql-on-amazon-ec2-%e2%80%93-part-3-%e2%80%93-configuring-the-ha-resources/"/>
		<id>http://www.mysqlperformanceblog.com/?p=3325</id>
		<updated>2010-07-12T16:15:40+00:00</updated>
		<content type="html">&lt;p&gt;This post is the third of a series that started &lt;a href=&quot;http://www.mysqlperformanceblog.com/2010/06/17/high-availability-for-mysql-on-amazon-ec2-part-1-intro/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;From the previous of this series, we now have two working EC2 instances that are EBS based.  The first instance is the &lt;em&gt;monitor&lt;/em&gt;, usually an m1.small type instance and the second instance is &lt;em&gt;hamysql&lt;/em&gt;, a large instance type.  So far, we have configured Heartbeat for communication between the nodes.  Now, it is time to configure the HA resources in Pacemaker.    Here are the requirements for the HA resources:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;On Monitor&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kill the other instance&lt;/li&gt;
&lt;li&gt;Free the share resources&lt;/li&gt;
&lt;li&gt;Start a new hamysql instance&lt;/li&gt;
&lt;li&gt;Reconfigure the clients&lt;/li&gt;
&lt;li&gt;Give away the resources&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;On hamysql&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Run MySQL&lt;/li&gt;
&lt;li&gt;Monitor MySQL&lt;/li&gt;
&lt;li&gt;Get out of way if MySQL is not running&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From the above requirements,  the resource we will create will need to have an &quot;affinity&quot; or preference to run on hamysql.  This is accomplished by &lt;em&gt;location&lt;/em&gt; directives.  I chose to put a weight of 1000 to hamysql and 1 for monitor.  Also the resource is obviously not doing the same thing on both hosts so I decided to use a resource of type &lt;em&gt;anything&lt;/em&gt; which is just a script.  Same script name and path on each host but different content.  To configure Pacemaker, assuming both nodes are online, just performs these steps:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Place holders for the resources scripts&lt;/strong&gt;&lt;br /&gt;
On each host: &lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-3&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-3&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;root@monitor:~# touch /usr/local/bin/mysql&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;root@monitor:~# chmod u+x /usr/local/bin/mysql &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;We will come back in the next posts to these scripts.  Then, on one of the host:&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-4&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-4&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;root@monitor:~# crm_attribute -t crm_config -n stonith-enabled -v false &lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;root@monitor:~# crm_attribute --attr-name symmetric-cluster --attr-value false &lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;root@monitor:~# crm configure&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;crm&lt;span&gt;&amp;#40;&lt;/span&gt;live&lt;span&gt;&amp;#41;&lt;/span&gt;configure# primitive mysql ocf:heartbeat:anything \&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; params binfile=&lt;span&gt;&quot;/usr/local/bin/mysql&quot;&lt;/span&gt; pidfile=&lt;span&gt;&quot;/var/run/heartbeat/mysql.pid&quot;&lt;/span&gt; \&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; op start interval=&lt;span&gt;&quot;0&quot;&lt;/span&gt; timeout=&lt;span&gt;&quot;300s&quot;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;crm&lt;span&gt;&amp;#40;&lt;/span&gt;live&lt;span&gt;&amp;#41;&lt;/span&gt;configure# location loc-&lt;span&gt;1&lt;/span&gt; mysql &lt;span&gt;1000&lt;/span&gt;: hamysql&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;crm&lt;span&gt;&amp;#40;&lt;/span&gt;live&lt;span&gt;&amp;#41;&lt;/span&gt;configure# location loc-&lt;span&gt;2&lt;/span&gt; mysql &lt;span&gt;1&lt;/span&gt;: monitor&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;crm&lt;span&gt;&amp;#40;&lt;/span&gt;live&lt;span&gt;&amp;#41;&lt;/span&gt;configure# commit &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;and that's it.  We know have a resource which is just a shell script that will preferably run on hamysql but, if hamysql is not available, will be able to run on monitor.  That's the basis we will expand on in the next posts.&lt;/p&gt;
    &lt;hr noshade=&quot;noshade&quot; /&gt;
    &lt;p&gt;Entry posted by Yves Trudeau |
      &lt;a href=&quot;http://www.mysqlperformanceblog.com/2010/07/12/high-availability-for-mysql-on-amazon-ec2-%e2%80%93-part-3-%e2%80%93-configuring-the-ha-resources/#comments&quot;&gt;2 comments&lt;/a&gt;&lt;/p&gt;
    &lt;p&gt;Add to: &lt;a href=&quot;http://del.icio.us/post?url=http://www.mysqlperformanceblog.com/2010/07/12/high-availability-for-mysql-on-amazon-ec2-%e2%80%93-part-3-%e2%80%93-configuring-the-ha-resources/&amp;title=High availability for MySQL on Amazon EC2 – Part 3 – Configuring the HA resources&quot; title=&quot;Bookmark this post on del.icio.us&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/delicious.png&quot; alt=&quot;delicious&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;http://digg.com/submit?phase=2&amp;url=http://www.mysqlperformanceblog.com/2010/07/12/high-availability-for-mysql-on-amazon-ec2-%e2%80%93-part-3-%e2%80%93-configuring-the-ha-resources/&amp;title=High availability for MySQL on Amazon EC2 – Part 3 – Configuring the HA resources&quot; title=&quot;Digg this post on Digg.com&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/digg.png&quot; alt=&quot;digg&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;http://reddit.com/submit?url=http://www.mysqlperformanceblog.com/2010/07/12/high-availability-for-mysql-on-amazon-ec2-%e2%80%93-part-3-%e2%80%93-configuring-the-ha-resources/&amp;title=High availability for MySQL on Amazon EC2 – Part 3 – Configuring the HA resources&quot; title=&quot;Submit this post on reddit.com&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/reddit.png&quot; alt=&quot;reddit&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;http://www.netscape.com/submit/?U=http://www.mysqlperformanceblog.com/2010/07/12/high-availability-for-mysql-on-amazon-ec2-%e2%80%93-part-3-%e2%80%93-configuring-the-ha-resources/&amp;T=High availability for MySQL on Amazon EC2 – Part 3 – Configuring the HA resources&quot; title=&quot;Vote for this article on Netscape&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/netscape.gif&quot; alt=&quot;netscape&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;http://www.google.com/bookmarks/mark?op=add&amp;bkmk=http://www.mysqlperformanceblog.com/2010/07/12/high-availability-for-mysql-on-amazon-ec2-%e2%80%93-part-3-%e2%80%93-configuring-the-ha-resources/&amp;title=High availability for MySQL on Amazon EC2 – Part 3 – Configuring the HA resources&quot; title=&quot;Add to Google Bookmarks&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/google.png&quot; alt=&quot;Google Bookmarks&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>MySQL Performance Blog » High Availability</name>
			<uri>http://www.mysqlperformanceblog.com</uri>
		</author>
		<source>
			<title type="html">MySQL Performance Blog » High Availability</title>
			<subtitle type="html">Everything about MySQL Performance</subtitle>
			<link rel="self" href="http://www.mysqlperformanceblog.com/category/high-availability/feed/"/>
			<id>http://www.mysqlperformanceblog.com/category/high-availability/feed/</id>
			<updated>2010-07-29T22:20:10+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Automating MySQL replication with Pacemaker</title>
		<link href="http://fghaas.wordpress.com/2010/07/12/automating-mysql-replication-with-pacemaker/"/>
		<id>http://fghaas.wordpress.com/?p=550</id>
		<updated>2010-07-12T06:54:32+00:00</updated>
		<content type="html">&lt;p&gt;A little while back we did a webinar on using &lt;a href=&quot;http://www.clusterlabs.org&quot;&gt;Pacemaker&lt;/a&gt; to fully automate &lt;a href=&quot;http://dev.mysql.com/doc/refman/5.1/en/replication.html&quot;&gt;MySQL replication&lt;/a&gt;. We now have a recording of that webinar &lt;a href=&quot;http://www.linbit.com/en/training/on-demand-webinars/mysql-replication-with-pacemaker/&quot;&gt;available from our web site&lt;/a&gt;.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/fghaas.wordpress.com/550/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/fghaas.wordpress.com/550/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/fghaas.wordpress.com/550/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/fghaas.wordpress.com/550/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/fghaas.wordpress.com/550/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/fghaas.wordpress.com/550/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/fghaas.wordpress.com/550/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/fghaas.wordpress.com/550/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/fghaas.wordpress.com/550/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/fghaas.wordpress.com/550/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=fghaas.wordpress.com&amp;blog=1182330&amp;post=550&amp;subd=fghaas&amp;ref=&amp;feed=1&quot; /&gt;</content>
		<author>
			<name>Florian's blog</name>
			<uri>http://fghaas.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Florian's blog</title>
			<subtitle type="html">Linux, DRBD, and other stuff of interest</subtitle>
			<link rel="self" href="http://blogs.linbit.com/florian/feed/"/>
			<id>http://blogs.linbit.com/florian/feed/</id>
			<updated>2010-07-19T19:20:33+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Linux cluster stack Debian packages for lenny!</title>
		<link href="http://fghaas.wordpress.com/2010/07/09/linux-cluster-stack-debian-packages-for-lenny/"/>
		<id>http://fghaas.wordpress.com/?p=546</id>
		<updated>2010-07-09T06:00:48+00:00</updated>
		<content type="html">&lt;p&gt;Thanks to &lt;a href=&quot;http://www.linbit.com/en/training/our-trainers/martin-gerhard-loschwitz/&quot;&gt;Martin Loschwitz&lt;/a&gt;, official Linux cluster stack Debian packages are now available for Debian &lt;a href=&quot;http://www.debian.org/releases/lenny&quot;&gt;lenny&lt;/a&gt;. Check out the the lenny-backports repository on &lt;a href=&quot;http://backports.org&quot;&gt;backports.org&lt;/a&gt; (and your favorite local mirror).&lt;/p&gt;
&lt;p&gt;When upgrading from Heartbeat 2.1.3, &lt;a href=&quot;http://www.linbit.com/en/training/on-demand-webinars/upgrading-to-pacemaker-on-debian-squeeze/&quot;&gt;this webinar recording&lt;/a&gt; may come in handy. The webinar covers an upgrade to &lt;a href=&quot;http://www.debian.org/releases/squeeze&quot;&gt;squeeze&lt;/a&gt;, but the upgrade procedure is identical if you&amp;#8217;re staying on lenny.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/fghaas.wordpress.com/546/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/fghaas.wordpress.com/546/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/fghaas.wordpress.com/546/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/fghaas.wordpress.com/546/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/fghaas.wordpress.com/546/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/fghaas.wordpress.com/546/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/fghaas.wordpress.com/546/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/fghaas.wordpress.com/546/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/fghaas.wordpress.com/546/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/fghaas.wordpress.com/546/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=fghaas.wordpress.com&amp;blog=1182330&amp;post=546&amp;subd=fghaas&amp;ref=&amp;feed=1&quot; /&gt;</content>
		<author>
			<name>Florian's blog</name>
			<uri>http://fghaas.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Florian's blog</title>
			<subtitle type="html">Linux, DRBD, and other stuff of interest</subtitle>
			<link rel="self" href="http://blogs.linbit.com/florian/feed/"/>
			<id>http://blogs.linbit.com/florian/feed/</id>
			<updated>2010-07-19T19:20:33+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">LinuxTag presentation now available for download</title>
		<link href="http://fghaas.wordpress.com/2010/07/08/linuxtag-presentation-now-available-for-download/"/>
		<id>http://fghaas.wordpress.com/?p=541</id>
		<updated>2010-07-08T15:26:38+00:00</updated>
		<content type="html">&lt;p&gt;A live recording of my LinuxTag 2010 presentation entitled &lt;em&gt;&lt;strong&gt;Storage Done Right: Building a  Resilient, Distributed, Highly Available Open Source iSCSI SAN&lt;/strong&gt;&lt;/em&gt; is now available &lt;a href=&quot;http://www.linbit.com/en/training/on-demand-webinars/storage-done-right/&quot;&gt;from our web site&lt;/a&gt;. If you want to find out how to build a complete SAN from 100% open source, do take a look!&lt;/p&gt;
&lt;p&gt;I do apologize for the less-than-optimal sound quality. I did the recording myself with my laptop mike, so unfortunately there&amp;#8217;s quite a bit of clipping in the audio track. I hope my ramblings are still somewhat audible.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/fghaas.wordpress.com/541/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/fghaas.wordpress.com/541/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/fghaas.wordpress.com/541/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/fghaas.wordpress.com/541/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/fghaas.wordpress.com/541/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/fghaas.wordpress.com/541/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/fghaas.wordpress.com/541/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/fghaas.wordpress.com/541/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/fghaas.wordpress.com/541/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/fghaas.wordpress.com/541/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=fghaas.wordpress.com&amp;blog=1182330&amp;post=541&amp;subd=fghaas&amp;ref=&amp;feed=1&quot; /&gt;</content>
		<author>
			<name>Florian's blog</name>
			<uri>http://fghaas.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Florian's blog</title>
			<subtitle type="html">Linux, DRBD, and other stuff of interest</subtitle>
			<link rel="self" href="http://blogs.linbit.com/florian/feed/"/>
			<id>http://blogs.linbit.com/florian/feed/</id>
			<updated>2010-07-19T19:20:33+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">New webinar recordings available</title>
		<link href="http://fghaas.wordpress.com/2010/07/06/new-webinar-recordings-available/"/>
		<id>http://fghaas.wordpress.com/?p=538</id>
		<updated>2010-07-06T06:29:33+00:00</updated>
		<content type="html">&lt;p&gt;A couple of new webinar recordings are available &lt;a href=&quot;http://www.linbit.com/en/training/on-demand-webinars/&quot;&gt;from our web site&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.linbit.com/en/training/on-demand-webinars/upgrading-to-pacemaker-on-debian-squeeze/&quot;&gt;Upgrading to Pacemaker on Debian&lt;/a&gt; squeeze tells you all there is to know about upgrading to the Pacemaker cluster manager on the upcoming Debian release, &amp;#8220;squeeze&amp;#8221;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.linbit.com/en/training/on-demand-webinars/high-availability-for-oracle-databases/&quot;&gt;High Availability for Oracle databases&lt;/a&gt; shows you how to leverage the Linux cluster stack to deploy highly available Oracle databases.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Like our live webinars, the recordings are of course free of charge. Enjoy!&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/fghaas.wordpress.com/538/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/fghaas.wordpress.com/538/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/fghaas.wordpress.com/538/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/fghaas.wordpress.com/538/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/fghaas.wordpress.com/538/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/fghaas.wordpress.com/538/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/fghaas.wordpress.com/538/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/fghaas.wordpress.com/538/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/fghaas.wordpress.com/538/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/fghaas.wordpress.com/538/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=fghaas.wordpress.com&amp;blog=1182330&amp;post=538&amp;subd=fghaas&amp;ref=&amp;feed=1&quot; /&gt;</content>
		<author>
			<name>Florian's blog</name>
			<uri>http://fghaas.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Florian's blog</title>
			<subtitle type="html">Linux, DRBD, and other stuff of interest</subtitle>
			<link rel="self" href="http://blogs.linbit.com/florian/feed/"/>
			<id>http://blogs.linbit.com/florian/feed/</id>
			<updated>2010-07-19T19:20:33+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">High availability for MySQL on Amazon EC2 – Part 2 – Setting up the initial instances</title>
		<link href="http://www.mysqlperformanceblog.com/2010/06/29/high-availability-for-mysql-on-amazon-ec2-%e2%80%93-part-2-setting-up-the-initial-instances/"/>
		<id>http://www.mysqlperformanceblog.com/?p=3094</id>
		<updated>2010-06-29T15:23:45+00:00</updated>
		<content type="html">&lt;p&gt;This post is the second of a series that started &lt;a href=&quot;http://www.mysqlperformanceblog.com/2010/06/17/high-availability-for-mysql-on-amazon-ec2-part-1-intro/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The first step to build the HA solution is to create two working instances, configure them to be EBS based and create a security group for them.  A third instance, the client, will be discussed in part 7.  Since this will be a proof of concept, I'll be using m1.small type instances while normally, the mysql host would be much larger.  Using another type is trivial.  I will assume you are using the command line api tools, on Ubuntu, install &quot;ec2-api-tools&quot;.  The use of these tools simplifies the expression of the command compared to the web based console. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Create the security group&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The instances involved in the MySQL HA setup will need to be inside the same security group for networking purposes and the help identify them.  To create a security simply run this command:&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-22&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-22&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;yves@yves-laptop:~$ export EC2_CERT=cert-yves.&lt;span&gt;pem&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;yves@yves-laptop:~$ export EC2_PRIVATE_KEY=pk-yves.&lt;span&gt;pem&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;yves@yves-laptop:~$ ec2-add-group hamysql -d &lt;span&gt;'nodes for HA MySQL solution'&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;GROUP&amp;nbsp; &amp;nbsp;hamysql nodes for HA MySQL solution &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;From now, I'll always assume the EC2_CERT and EC2_PRIVATE_KEY environment variables are setup in your shell.  Next, we need to authorize some communications for the security group.  I'll authorize 3306/tcp (MySQL) from hamysql, 694/udp (Heartbeat) from hamysql and 22 (SSH) from everywhere.  You can be more restrictive for SSH if you want to.&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-23&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-23&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;yves@yves-laptop:~$ ec2-authorize hamysql -P tcp -p &lt;span&gt;3306&lt;/span&gt;&amp;nbsp; -o hamysql -u &lt;span&gt;834362721059&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;yves@yves-laptop:~$ ec2-authorize hamysql -P udp -p &lt;span&gt;694&lt;/span&gt;&amp;nbsp; -o hamysql -u &lt;span&gt;834362721059&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;yves@yves-laptop:~$ ec2-authorize hamysql -P tcp -p &lt;span&gt;22&lt;/span&gt; -s &lt;span&gt;0&lt;/span&gt;.&lt;span&gt;0&lt;/span&gt;.&lt;span&gt;0&lt;/span&gt;.&lt;span&gt;0&lt;/span&gt;/&lt;span&gt;0&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;yves@yves-laptop:~$&amp;nbsp; ec2-describe-group hamysql&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;GROUP&amp;nbsp; &amp;nbsp;&lt;span&gt;834362721059&lt;/span&gt;&amp;nbsp; &amp;nbsp; hamysql nodes for HA MySQL solution&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;PERMISSION&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;834362721059&lt;/span&gt;&amp;nbsp; &amp;nbsp; hamysql ALLOWS&amp;nbsp; tcp&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;3306&lt;/span&gt;&amp;nbsp; &amp;nbsp; &lt;span&gt;3306&lt;/span&gt;&amp;nbsp; &amp;nbsp; FROM&amp;nbsp; &amp;nbsp; USER&amp;nbsp; &amp;nbsp; &lt;span&gt;834362721059&lt;/span&gt;&amp;nbsp; &amp;nbsp; GRPNAME hamysql&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;PERMISSION&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;834362721059&lt;/span&gt;&amp;nbsp; &amp;nbsp; hamysql ALLOWS&amp;nbsp; udp&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;694&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;694&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;FROM&amp;nbsp; &amp;nbsp; USER&amp;nbsp; &amp;nbsp; &lt;span&gt;834362721059&lt;/span&gt;&amp;nbsp; &amp;nbsp; GRPNAME hamysql&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;PERMISSION&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;834362721059&lt;/span&gt;&amp;nbsp; &amp;nbsp; hamysql ALLOWS&amp;nbsp; tcp&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;22&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;22&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; FROM&amp;nbsp; &amp;nbsp; CIDR&amp;nbsp; &amp;nbsp; &lt;span&gt;0&lt;/span&gt;.&lt;span&gt;0&lt;/span&gt;.&lt;span&gt;0&lt;/span&gt;.&lt;span&gt;0&lt;/span&gt;/&lt;span&gt;0&lt;/span&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Launch the instances&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now we can start creating our instances.   Since this is only a proof of concept, I'll built 2 m1.small instances, fell free to use other types.  At the time I wrote this, the following AMI seems ok.&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-24&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-24&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;yves@yves-laptop:~$&amp;nbsp; ec2-describe-images ami-1cdf3775&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;IMAGE&amp;nbsp; &amp;nbsp;ami-1cdf3775&amp;nbsp; &amp;nbsp; &lt;span&gt;099720109477&lt;/span&gt;/ubuntu-images-testing/ubuntu-lucid-daily-i386-server-&lt;span&gt;20100618&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;099720109477&lt;/span&gt;&amp;nbsp; &amp;nbsp; available&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i386&amp;nbsp; &amp;nbsp; machine aki-aca44cc5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;instance-store &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;So, lauching 2 of these,&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-25&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-25&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;yves@yves-laptop:~$&amp;nbsp; ec2-run-instances ami-1cdf3775 -n &lt;span&gt;2&lt;/span&gt; -g hamysql -t m1.&lt;span&gt;small&lt;/span&gt; -k yves-key&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;RESERVATION&amp;nbsp; &amp;nbsp; &amp;nbsp;r-a29c31c9&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;834362721059&lt;/span&gt;&amp;nbsp; &amp;nbsp; hamysql&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;INSTANCE&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i-a23a21c9&amp;nbsp; &amp;nbsp; &amp;nbsp; ami-1cdf3775&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pending yves-key&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;0&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;m1.&lt;span&gt;small&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;2010&lt;/span&gt;-&lt;span&gt;06&lt;/span&gt;-18T20:&lt;span&gt;11&lt;/span&gt;:&lt;span&gt;14&lt;/span&gt;+&lt;span&gt;0000&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; us-east-1c&amp;nbsp; &amp;nbsp; &amp;nbsp; aki-aca44cc5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;monitoring-disabled&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; instance-store&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;INSTANCE&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i-a03a21cb&amp;nbsp; &amp;nbsp; &amp;nbsp; ami-1cdf3775&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pending yves-key&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;1&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;m1.&lt;span&gt;small&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;2010&lt;/span&gt;-&lt;span&gt;06&lt;/span&gt;-18T20:&lt;span&gt;11&lt;/span&gt;:&lt;span&gt;14&lt;/span&gt;+&lt;span&gt;0000&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; us-east-1c&amp;nbsp; &amp;nbsp; &amp;nbsp; aki-aca44cc5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;monitoring-disabled&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;yves@yves-laptop:~$&amp;nbsp; ec2-describe-instances&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;RESERVATION&amp;nbsp; &amp;nbsp; &amp;nbsp;r-a29c31c9&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;834362721059&lt;/span&gt;&amp;nbsp; &amp;nbsp; hamysql&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;INSTANCE&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i-a23a21c9&amp;nbsp; &amp;nbsp; &amp;nbsp; ami-1cdf3775&amp;nbsp; &amp;nbsp; ec2-&lt;span&gt;174&lt;/span&gt;-&lt;span&gt;129&lt;/span&gt;-&lt;span&gt;89&lt;/span&gt;-&lt;span&gt;188&lt;/span&gt;.&lt;span&gt;compute&lt;/span&gt;-&lt;span&gt;1&lt;/span&gt;.&lt;span&gt;amazonaws&lt;/span&gt;.&lt;span&gt;com&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; domU-&lt;span&gt;12&lt;/span&gt;-&lt;span&gt;31&lt;/span&gt;-&lt;span&gt;39&lt;/span&gt;-&lt;span&gt;02&lt;/span&gt;-BD-C5.&lt;span&gt;compute&lt;/span&gt;-&lt;span&gt;1&lt;/span&gt;.&lt;span&gt;internal&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;running yves-key&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;0&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;m1.&lt;span&gt;small&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;2010&lt;/span&gt;-&lt;span&gt;06&lt;/span&gt;-18T20:&lt;span&gt;11&lt;/span&gt;:&lt;span&gt;14&lt;/span&gt;+&lt;span&gt;0000&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; us-east-1c&amp;nbsp; &amp;nbsp; &amp;nbsp; aki-aca44cc5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; monitoring-disabled&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;174&lt;/span&gt;.&lt;span&gt;129&lt;/span&gt;.&lt;span&gt;89&lt;/span&gt;.&lt;span&gt;188&lt;/span&gt;&amp;nbsp; &lt;span&gt;10&lt;/span&gt;.&lt;span&gt;248&lt;/span&gt;.&lt;span&gt;194&lt;/span&gt;.&lt;span&gt;51&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;instance-store&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;INSTANCE&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i-a03a21cb&amp;nbsp; &amp;nbsp; &amp;nbsp; ami-1cdf3775&amp;nbsp; &amp;nbsp; ec2-&lt;span&gt;174&lt;/span&gt;-&lt;span&gt;129&lt;/span&gt;-&lt;span&gt;187&lt;/span&gt;-&lt;span&gt;170&lt;/span&gt;.&lt;span&gt;compute&lt;/span&gt;-&lt;span&gt;1&lt;/span&gt;.&lt;span&gt;amazonaws&lt;/span&gt;.&lt;span&gt;com&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;domU-&lt;span&gt;12&lt;/span&gt;-&lt;span&gt;31&lt;/span&gt;-&lt;span&gt;39&lt;/span&gt;-&lt;span&gt;03&lt;/span&gt;-A4-&lt;span&gt;62&lt;/span&gt;.&lt;span&gt;compute&lt;/span&gt;-&lt;span&gt;1&lt;/span&gt;.&lt;span&gt;internal&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;running yves-key&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;1&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;m1.&lt;span&gt;small&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;2010&lt;/span&gt;-&lt;span&gt;06&lt;/span&gt;-18T20:&lt;span&gt;11&lt;/span&gt;:&lt;span&gt;14&lt;/span&gt;+&lt;span&gt;0000&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; us-east-1c&amp;nbsp; &amp;nbsp; &amp;nbsp; aki-aca44cc5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; monitoring-disabled&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;174&lt;/span&gt;.&lt;span&gt;129&lt;/span&gt;.&lt;span&gt;187&lt;/span&gt;.&lt;span&gt;170&lt;/span&gt; &lt;span&gt;10&lt;/span&gt;.&lt;span&gt;249&lt;/span&gt;.&lt;span&gt;167&lt;/span&gt;.&lt;span&gt;144&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; instance-store &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I don't know about you but I don't like multi-lines output so I wrote a small filter script to on one line the parameters I need separated by a delimiter.  &lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-26&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-26&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;yves@yves-laptop:~$&amp;nbsp; cat&amp;nbsp; filtre_instances.&lt;span&gt;pl&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;#!/usr/bin/perl&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;$SecGroup = &lt;span&gt;''&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;$IPAdd = &lt;span&gt;''&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;$Instance_ID = &lt;span&gt;''&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;while &lt;span&gt;&amp;#40;&lt;/span&gt;&amp;lt;STDIN&amp;gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; chomp $_;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #print &lt;span&gt;&quot;Processing: $_&lt;span&gt;\n&lt;/span&gt;&quot;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; @fields = split /\t/, $_;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if &lt;span&gt;&amp;#40;&lt;/span&gt;/^RESERVATION/&lt;span&gt;&amp;#41;&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $SecGroup = $fields&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if &lt;span&gt;&amp;#40;&lt;/span&gt;/^INSTANCE/&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $IPAdd = $fields&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $STORE = $fields&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $Instance_ID= $fields&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $AMI_ID= $fields&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $PUBDNS = $fields&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $STATUS = $fields&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $START = $fields&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print &lt;span&gt;&quot;$SecGroup|$IPAdd|$Instance_ID|$AMI_ID|$PUBDNS|$STATUS|$START|$STORE &lt;span&gt;\n&lt;/span&gt;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;&amp;#125;&lt;/span&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;and now we have&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-27&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-27&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;yves@yves-laptop:~$ ec2-describe-instances | ./filtre_instances.&lt;span&gt;pl&lt;/span&gt; | grep hamysql&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;hamysql|&lt;span&gt;10&lt;/span&gt;.&lt;span&gt;248&lt;/span&gt;.&lt;span&gt;194&lt;/span&gt;.&lt;span&gt;51&lt;/span&gt;|i-a23a21c9|ami-1cdf3775|ec2-&lt;span&gt;174&lt;/span&gt;-&lt;span&gt;129&lt;/span&gt;-&lt;span&gt;89&lt;/span&gt;-&lt;span&gt;188&lt;/span&gt;.&lt;span&gt;compute&lt;/span&gt;-&lt;span&gt;1&lt;/span&gt;.&lt;span&gt;amazonaws&lt;/span&gt;.&lt;span&gt;com&lt;/span&gt;|running|&lt;span&gt;2010&lt;/span&gt;-&lt;span&gt;06&lt;/span&gt;-18T20:&lt;span&gt;11&lt;/span&gt;:&lt;span&gt;14&lt;/span&gt;+&lt;span&gt;0000&lt;/span&gt;|instance-store &lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;hamysql|&lt;span&gt;10&lt;/span&gt;.&lt;span&gt;249&lt;/span&gt;.&lt;span&gt;167&lt;/span&gt;.&lt;span&gt;144&lt;/span&gt;|i-a03a21cb|ami-1cdf3775|ec2-&lt;span&gt;174&lt;/span&gt;-&lt;span&gt;129&lt;/span&gt;-&lt;span&gt;187&lt;/span&gt;-&lt;span&gt;170&lt;/span&gt;.&lt;span&gt;compute&lt;/span&gt;-&lt;span&gt;1&lt;/span&gt;.&lt;span&gt;amazonaws&lt;/span&gt;.&lt;span&gt;com&lt;/span&gt;|running|&lt;span&gt;2010&lt;/span&gt;-&lt;span&gt;06&lt;/span&gt;-18T20:&lt;span&gt;11&lt;/span&gt;:&lt;span&gt;14&lt;/span&gt;+&lt;span&gt;0000&lt;/span&gt;|instance-store &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;which is to my opinion easier to manipulate.  &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Configuring Heartbeat&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now, let's configure Heartbeat.  The first thing to is to set up the hostname on both host.  Heartbeat identifies the host on which it is running by its hostname so that's mandatory step.&lt;/p&gt;
&lt;p&gt;First host:&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-28&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-28&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;yves@yves-laptop:~$ ssh -i ~/.&lt;span&gt;ssh&lt;/span&gt;/yves-key.&lt;span&gt;pem&lt;/span&gt; ubuntu@ec2-&lt;span&gt;174&lt;/span&gt;-&lt;span&gt;129&lt;/span&gt;-&lt;span&gt;89&lt;/span&gt;-&lt;span&gt;188&lt;/span&gt;.&lt;span&gt;compute&lt;/span&gt;-&lt;span&gt;1&lt;/span&gt;.&lt;span&gt;amazonaws&lt;/span&gt;.&lt;span&gt;com&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;ubuntu@domU-&lt;span&gt;12&lt;/span&gt;-&lt;span&gt;31&lt;/span&gt;-&lt;span&gt;39&lt;/span&gt;-&lt;span&gt;07&lt;/span&gt;-C8-&lt;span&gt;32&lt;/span&gt;:~$ sudo su -&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;ubuntu@domU-&lt;span&gt;12&lt;/span&gt;-&lt;span&gt;31&lt;/span&gt;-&lt;span&gt;39&lt;/span&gt;-&lt;span&gt;07&lt;/span&gt;-C8-&lt;span&gt;32&lt;/span&gt;:~# hostname monitor &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Second host:&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-29&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-29&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;yves@yves-laptop:~$ ssh -i ~/.&lt;span&gt;ssh&lt;/span&gt;/yves-key.&lt;span&gt;pem&lt;/span&gt; ubuntu@ec2-&lt;span&gt;174&lt;/span&gt;-&lt;span&gt;129&lt;/span&gt;-&lt;span&gt;89&lt;/span&gt;-&lt;span&gt;188&lt;/span&gt;.&lt;span&gt;compute&lt;/span&gt;-&lt;span&gt;1&lt;/span&gt;.&lt;span&gt;amazonaws&lt;/span&gt;.&lt;span&gt;com&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;ubuntu@domU-&lt;span&gt;12&lt;/span&gt;-&lt;span&gt;31&lt;/span&gt;-&lt;span&gt;38&lt;/span&gt;-&lt;span&gt;04&lt;/span&gt;-E5-E4:~$ sudo su -&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;ubuntu@domU-&lt;span&gt;12&lt;/span&gt;-&lt;span&gt;31&lt;/span&gt;-&lt;span&gt;38&lt;/span&gt;-&lt;span&gt;04&lt;/span&gt;-E5-E4:~# hostname hamysql &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;We don't really need to set /etc/hostname since it is overwritten when the instance is started, even when using EBS based AMI.  The next step is to install Heartbeat and Pacemaker on both host, with Ubuntu 10.04, it is very straightforward:&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-30&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-30&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;root@monitor:~# apt-get install heartbeat pacemaker&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;and&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;root@hamysql:~# apt-get install heartbeat pacemaker &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Then we can proceed and configure Heartbeat, Pacemaker will come later.  Heartbeat needs 2 configuration files, /etc/ha.d/authkeys for cluster authentication and /etc/ha.d/ha.cf which is the configuration file per say.  On both host, the chosen key in the authkeys file must be identical and good way to generate unique one is to run &quot;date | md5sum&quot; and grab a substring from the output.&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-31&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-31&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;root@monitor:/etc/ha.&lt;span&gt;d&lt;/span&gt;# cat authkeys &lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;auth &lt;span&gt;1&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;1&lt;/span&gt; sha1 c97f2bb4b5ae90f149dc314ed &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Also don't forget to restrict the access rights on the file like:&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-32&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-32&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;root@monitor:/etc/ha.&lt;span&gt;d&lt;/span&gt;# chmod &lt;span&gt;600&lt;/span&gt; authkeys &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;For the /etc/ha.d/ha.cf file, since EC2 does not support neither broadcast or multicast within the security group, we need to use unicast (ucast) so both files will not be identical.  The ucast entry on one host will contain the IP address on the internal network of the other host.  On the monitor host, we will have:&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-33&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-33&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;root@monitor:/etc/ha.&lt;span&gt;d&lt;/span&gt;# cat ha.&lt;span&gt;cf&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;autojoin none &lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;ucast eth0 &lt;span&gt;10&lt;/span&gt;.&lt;span&gt;249&lt;/span&gt;.&lt;span&gt;167&lt;/span&gt;.&lt;span&gt;144&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;warntime &lt;span&gt;5&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;deadtime &lt;span&gt;15&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;initdead &lt;span&gt;60&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;keepalive &lt;span&gt;2&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;crm respawn&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;node monitor&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;node hamysql &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;and on the hamysql host:&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-34&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-34&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;root@hamysql:/etc/ha.&lt;span&gt;d&lt;/span&gt;# cat ha.&lt;span&gt;cf&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;autojoin none &lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;ucast eth0 &lt;span&gt;10&lt;/span&gt;.&lt;span&gt;248&lt;/span&gt;.&lt;span&gt;194&lt;/span&gt;.&lt;span&gt;51&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;warntime &lt;span&gt;5&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;deadtime &lt;span&gt;15&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;initdead &lt;span&gt;60&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;keepalive &lt;span&gt;2&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;crm respawn&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;node monitor&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;node hamysql &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Let's review briefly the configuration file.  First we have setup &quot;autojoin none&quot; that means no host not listed explicitely in the configuration file can join the cluster so we know we have at most 2 members, &quot;monitor&quot; and  &quot;hamysql&quot;.  Next is the ucast communication channel to reach the other node and the timing parameters.  &quot;warntime&quot;  is a soft timeout in second that logs the other node is later while &quot;deadtime&quot; is the hard limit after which heartbeat will the consider the other node dead and start actions to restore the service.  The &quot;initdead&quot; is just a startup delay to allow host to fully boot before attempting actions and &quot;crm respawn&quot; starts the Pacemaker resources manager.  Finally, we have the two &quot;node&quot; declarations&quot; for the cluster members.&lt;/p&gt;
&lt;p&gt;So we are done with the configure, time to try if it works.  On both hosts, run:&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-35&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-35&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;service heartbeat start &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;and if everything is right, after at most a minute, you should be able to see both heartbeat processes chatting over the network &lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-36&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-36&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;root@monitor:~# tcpdump -i eth0 port &lt;span&gt;694&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;tcpdump: verbose output suppressed, use -v or -vv for full protocol decode&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;listening on eth0, link-type EN10MB &lt;span&gt;&amp;#40;&lt;/span&gt;Ethernet&lt;span&gt;&amp;#41;&lt;/span&gt;, capture size &lt;span&gt;96&lt;/span&gt; bytes&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;20&lt;/span&gt;:&lt;span&gt;38&lt;/span&gt;:&lt;span&gt;36&lt;/span&gt;.&lt;span&gt;536302&lt;/span&gt; IP domU-&lt;span&gt;12&lt;/span&gt;-&lt;span&gt;31&lt;/span&gt;-&lt;span&gt;38&lt;/span&gt;-&lt;span&gt;04&lt;/span&gt;-E5-E4.&lt;span&gt;compute&lt;/span&gt;-&lt;span&gt;1&lt;/span&gt;.&lt;span&gt;internal&lt;/span&gt;.&lt;span&gt;57802&lt;/span&gt;&amp;gt; domU-&lt;span&gt;12&lt;/span&gt;-&lt;span&gt;31&lt;/span&gt;-&lt;span&gt;39&lt;/span&gt;-&lt;span&gt;07&lt;/span&gt;-C8-&lt;span&gt;32&lt;/span&gt;.&lt;span&gt;compute&lt;/span&gt;-&lt;span&gt;1&lt;/span&gt;.&lt;span&gt;internal&lt;/span&gt;.&lt;span&gt;694&lt;/span&gt;: UDP, length &lt;span&gt;211&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;20&lt;/span&gt;:&lt;span&gt;38&lt;/span&gt;:&lt;span&gt;36&lt;/span&gt;.&lt;span&gt;928860&lt;/span&gt; IP domU-&lt;span&gt;12&lt;/span&gt;-&lt;span&gt;31&lt;/span&gt;-&lt;span&gt;39&lt;/span&gt;-&lt;span&gt;07&lt;/span&gt;-C8-&lt;span&gt;32&lt;/span&gt;.&lt;span&gt;compute&lt;/span&gt;-&lt;span&gt;1&lt;/span&gt;.&lt;span&gt;internal&lt;/span&gt;.&lt;span&gt;34058&lt;/span&gt;&amp;gt; domU-&lt;span&gt;12&lt;/span&gt;-&lt;span&gt;31&lt;/span&gt;-&lt;span&gt;38&lt;/span&gt;-&lt;span&gt;04&lt;/span&gt;-E5-E4.&lt;span&gt;compute&lt;/span&gt;-&lt;span&gt;1&lt;/span&gt;.&lt;span&gt;internal&lt;/span&gt;.&lt;span&gt;694&lt;/span&gt;: UDP, length &lt;span&gt;212&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;20&lt;/span&gt;:&lt;span&gt;38&lt;/span&gt;:&lt;span&gt;38&lt;/span&gt;.&lt;span&gt;580245&lt;/span&gt; IP domU-&lt;span&gt;12&lt;/span&gt;-&lt;span&gt;31&lt;/span&gt;-&lt;span&gt;38&lt;/span&gt;-&lt;span&gt;04&lt;/span&gt;-E5-E4.&lt;span&gt;compute&lt;/span&gt;-&lt;span&gt;1&lt;/span&gt;.&lt;span&gt;internal&lt;/span&gt;.&lt;span&gt;57802&lt;/span&gt;&amp;gt; domU-&lt;span&gt;12&lt;/span&gt;-&lt;span&gt;31&lt;/span&gt;-&lt;span&gt;39&lt;/span&gt;-&lt;span&gt;07&lt;/span&gt;-C8-&lt;span&gt;32&lt;/span&gt;.&lt;span&gt;compute&lt;/span&gt;-&lt;span&gt;1&lt;/span&gt;.&lt;span&gt;internal&lt;/span&gt;.&lt;span&gt;694&lt;/span&gt;: UDP, length &lt;span&gt;211&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;20&lt;/span&gt;:&lt;span&gt;38&lt;/span&gt;:&lt;span&gt;38&lt;/span&gt;.&lt;span&gt;938814&lt;/span&gt; IP domU-&lt;span&gt;12&lt;/span&gt;-&lt;span&gt;31&lt;/span&gt;-&lt;span&gt;39&lt;/span&gt;-&lt;span&gt;07&lt;/span&gt;-C8-&lt;span&gt;32&lt;/span&gt;.&lt;span&gt;compute&lt;/span&gt;-&lt;span&gt;1&lt;/span&gt;.&lt;span&gt;internal&lt;/span&gt;.&lt;span&gt;34058&lt;/span&gt;&amp;gt; domU-&lt;span&gt;12&lt;/span&gt;-&lt;span&gt;31&lt;/span&gt;-&lt;span&gt;38&lt;/span&gt;-&lt;span&gt;04&lt;/span&gt;-E5-E4.&lt;span&gt;compute&lt;/span&gt;-&lt;span&gt;1&lt;/span&gt;.&lt;span&gt;internal&lt;/span&gt;.&lt;span&gt;694&lt;/span&gt;: UDP, length &lt;span&gt;212&lt;/span&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;We can also use the &quot;crm&quot; tool to query the cluster status.&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-37&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-37&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;root@monitor:~# crm status&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;============&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Last updated: Tue Jun &lt;span&gt;29&lt;/span&gt; &lt;span&gt;13&lt;/span&gt;:&lt;span&gt;56&lt;/span&gt;:&lt;span&gt;04&lt;/span&gt; &lt;span&gt;2010&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Stack: Heartbeat&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Current DC: monitor &lt;span&gt;&amp;#40;&lt;/span&gt;504f45ea-7aee-4fa5-b0ee-a5ac07975ce4&lt;span&gt;&amp;#41;&lt;/span&gt; - partition with quorum&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Version: &lt;span&gt;1&lt;/span&gt;.&lt;span&gt;0&lt;/span&gt;.&lt;span&gt;8&lt;/span&gt;-042548a451fce8400660f6031f4da6f0223dd5dd&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;2&lt;/span&gt; Nodes configured, unknown expected votes&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;1&lt;/span&gt; Resources configured.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;============&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Online: &lt;span&gt;&amp;#91;&lt;/span&gt; monitor hamysql &lt;span&gt;&amp;#93;&lt;/span&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Install MySQL&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For the sake of simplicity, we will just install the MySQL version in the Ubuntu repository by doing:&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-38&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-38&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;root@hamysql:~# apt-get install mysql-server-&lt;span&gt;5&lt;/span&gt;.&lt;span&gt;1&lt;/span&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;The package install MySQL has an automatic startup script controlled by init (new to lucid).  That's fine, I will surprise you but Pacemaker will not manager MySQL, just the host running it.  I'll also skip the raid configuration of multiple EBS volumes since it is not the main purpose of this blog series.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;EBS based AMI&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Others have produce excellent article on how to create EBS based AMI, I will not reinvent the wheel. I followed this one: http://www.capsunlock.net/2009/12/create-ebs-boot-ami.html&lt;/p&gt;
&lt;p&gt;Upcoming in part 3, the configuration of the HA resources.&lt;/p&gt;
    &lt;hr noshade=&quot;noshade&quot; /&gt;
    &lt;p&gt;Entry posted by Yves Trudeau |
      &lt;a href=&quot;http://www.mysqlperformanceblog.com/2010/06/29/high-availability-for-mysql-on-amazon-ec2-%e2%80%93-part-2-setting-up-the-initial-instances/#comments&quot;&gt;2 comments&lt;/a&gt;&lt;/p&gt;
    &lt;p&gt;Add to: &lt;a href=&quot;http://del.icio.us/post?url=http://www.mysqlperformanceblog.com/2010/06/29/high-availability-for-mysql-on-amazon-ec2-%e2%80%93-part-2-setting-up-the-initial-instances/&amp;title=High availability for MySQL on Amazon EC2 – Part 2 &amp;#8211; Setting up the initial instances&quot; title=&quot;Bookmark this post on del.icio.us&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/delicious.png&quot; alt=&quot;delicious&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;http://digg.com/submit?phase=2&amp;url=http://www.mysqlperformanceblog.com/2010/06/29/high-availability-for-mysql-on-amazon-ec2-%e2%80%93-part-2-setting-up-the-initial-instances/&amp;title=High availability for MySQL on Amazon EC2 – Part 2 &amp;#8211; Setting up the initial instances&quot; title=&quot;Digg this post on Digg.com&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/digg.png&quot; alt=&quot;digg&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;http://reddit.com/submit?url=http://www.mysqlperformanceblog.com/2010/06/29/high-availability-for-mysql-on-amazon-ec2-%e2%80%93-part-2-setting-up-the-initial-instances/&amp;title=High availability for MySQL on Amazon EC2 – Part 2 &amp;#8211; Setting up the initial instances&quot; title=&quot;Submit this post on reddit.com&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/reddit.png&quot; alt=&quot;reddit&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;http://www.netscape.com/submit/?U=http://www.mysqlperformanceblog.com/2010/06/29/high-availability-for-mysql-on-amazon-ec2-%e2%80%93-part-2-setting-up-the-initial-instances/&amp;T=High availability for MySQL on Amazon EC2 – Part 2 &amp;#8211; Setting up the initial instances&quot; title=&quot;Vote for this article on Netscape&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/netscape.gif&quot; alt=&quot;netscape&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;http://www.google.com/bookmarks/mark?op=add&amp;bkmk=http://www.mysqlperformanceblog.com/2010/06/29/high-availability-for-mysql-on-amazon-ec2-%e2%80%93-part-2-setting-up-the-initial-instances/&amp;title=High availability for MySQL on Amazon EC2 – Part 2 &amp;#8211; Setting up the initial instances&quot; title=&quot;Add to Google Bookmarks&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/google.png&quot; alt=&quot;Google Bookmarks&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>MySQL Performance Blog » High Availability</name>
			<uri>http://www.mysqlperformanceblog.com</uri>
		</author>
		<source>
			<title type="html">MySQL Performance Blog » High Availability</title>
			<subtitle type="html">Everything about MySQL Performance</subtitle>
			<link rel="self" href="http://www.mysqlperformanceblog.com/category/high-availability/feed/"/>
			<id>http://www.mysqlperformanceblog.com/category/high-availability/feed/</id>
			<updated>2010-07-29T22:20:10+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Pacemaker 1.0.9 Released</title>
		<link href="http://theclusterguy.clusterlabs.org/post/729058739"/>
		<id>http://theclusterguy.clusterlabs.org/post/729058739</id>
		<updated>2010-06-23T13:46:14+00:00</updated>
		<content type="html">&lt;p&gt;The latest installment of the &lt;a href=&quot;http://www.clusterlabs.org/wiki/Pacemaker&quot;&gt;Pacemaker&lt;/a&gt; 1.0 stable series is now ready for general consumption.&lt;/p&gt;

&lt;p&gt;Coinciding with 1.0.9 is a new version of Corosync (1.2.5).
Included in both are some important fixes that should resolve most of the startup issues people have been seeing.
Also included in this release are the fixes for issues reported by &lt;a href=&quot;http://valgrind.org/&quot;&gt;Valgrind&lt;/a&gt; and &lt;a href=&quot;http://www.coverity.com/products/static-analysis.html&quot;&gt;Coverity&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As per our &lt;a href=&quot;http://www.clusterlabs.org/wiki/ReleaseCalendar&quot;&gt;release calendar&lt;/a&gt;, the next 1.0 release is planned for mid-September and 1.1.3 will be available in late July.&lt;/p&gt;

&lt;hr /&gt;
&lt;p&gt;I’d like to particularly thank Keisuke MORI for his help with this release.
Keisuke-san has taken on the role of Patch Manager for 1.0, so it is because of his hard work that we have backports of all the bugfixes from 1.1 :-)&lt;/p&gt;

&lt;p&gt;This change has enabled me to focus on 1.1 and, I hope, be slightly more responsive to bug reports and questions on the mailing list(s).&lt;/p&gt;

&lt;hr /&gt;
&lt;p&gt;Pre-built packages for Pacemaker and it’s immediate dependancies are available immediately for openSUSE, SLES, Fedora, RHEL, CentOS from the &lt;a href=&quot;http://www.clusterlabs.org/rpm/&quot;&gt;ClusterLabs Build Area&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Regular updaters may also have noticed the expanded version scheme used by packages on clusterlabs.org.
The build scripts now automatically bump the version numbers when rebuilding the stack.
This usually occurs when new versions of corosync, cluster-glue or heartbeat come out.&lt;/p&gt;

&lt;p&gt;Versions are now of the form:
    x.y.x-a.b&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;x.y.z&lt;/em&gt; is the upstream version (this is the only time the tarball is changed)&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;a&lt;/em&gt; indicates the number of spec file changes (ie. changes to dependancies)&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;b&lt;/em&gt; indicates how many times the package has been rebuilt with unchanged tarballs and spec files&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So the following version: 
    pacemaker-1.0.9-1.4
would mean the fourth rebuild of the initial spec file for the upstream version &lt;em&gt;1.0.9&lt;/em&gt; of Pacemaker.&lt;/p&gt;

&lt;p&gt;Debian users should check for updates &lt;a href=&quot;http://clusterlabs.org/wiki/Install#Debian&quot;&gt;Martin’s repo&lt;/a&gt; over the coming days and Ubuntu fans can visit &lt;a href=&quot;https://edge.launchpad.net/~ubuntu-ha-maintainers/+archive/ppa&quot;&gt;LaunchPad&lt;/a&gt; for 8.04 and 9.10 packages.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;http://hg.clusterlabs.org/pacemaker/stable-1.0/archive/Pacemaker-1.0.9.tar.bz2&quot;&gt;source tarball&lt;/a&gt; is also available directly from Mercurial.&lt;/p&gt;

&lt;p&gt;General installation instructions are available at from the &lt;a href=&quot;http://clusterlabs.org/wiki/Install&quot;&gt;ClusterLabs wiki&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Release Statistics&lt;/h3&gt;

&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Changesets&lt;/b&gt;&lt;/td&gt;
        &lt;td&gt; 152 &lt;/td&gt;
    &lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Diff&lt;/b&gt;&lt;/td&gt;
        &lt;td&gt;266 files changed, 14324 insertions(+), 3842 deletions(-)&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;
&lt;h3&gt;Changes of note since Pacemaker-1.0.8&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;High: ais: Ensure the list of active processes sent to clients is always up-to-date&lt;/li&gt;
&lt;li&gt;High: ais: Fix previous commit, actually return a result in get_process_list()&lt;/li&gt;
&lt;li&gt;High: ais: Fix two more uses of getpwnam() in non-thread-safe locations&lt;/li&gt;
&lt;li&gt;High: ais: Look for the correct conf variable for turning on file logging&lt;/li&gt;
&lt;li&gt;High: ais: Need to find a better and thread-safe way to set core_uses_pid. Disable for now.&lt;/li&gt;
&lt;li&gt;High: ais: Use the threadsafe version of getpwnam&lt;/li&gt;
&lt;li&gt;High: cib: Also free query result for xpath operations that return more than one hit&lt;/li&gt;
&lt;li&gt;High: cib: Fix the application of unversioned diffs&lt;/li&gt;
&lt;li&gt;High: cib: Remove old developmental error logging&lt;/li&gt;
&lt;li&gt;High: Core: Bug lf#2414 - Prevent use-after-free reported by valgrind when doing xpath based deletions&lt;/li&gt;
&lt;li&gt;High: Core: Fix memory leak in replace_xml_child() reported by valgrind&lt;/li&gt;
&lt;li&gt;High: Core: fix memory leaks exposed by valgrind&lt;/li&gt;
&lt;li&gt;High: crmd: Bug 2401 - Improved detection of partially active peers&lt;/li&gt;
&lt;li&gt;High: crmd: Bug lf#2379 - Ensure the cluster terminates when the PE is not available&lt;/li&gt;
&lt;li&gt;High: crmd: Bug lf#2414 - Prevent use-after-free of the PE connection after it dies&lt;/li&gt;
&lt;li&gt;High: crmd: Bug lf#2439 - cancel_op() can also return HA_RSCBUSY&lt;/li&gt;
&lt;li&gt;High: crmd: Bug lf#2439 - Handle asynchronous notification of resource deletion events&lt;/li&gt;
&lt;li&gt;High: crmd: Do not allow the target_rc to be misused by resource agents&lt;/li&gt;
&lt;li&gt;High: crmd: Do not ignore action timeouts based on FSA state&lt;/li&gt;
&lt;li&gt;High: crmd: Ensure we dont get stuck in S_PENDING if we loose an election to someone that never talks to us again&lt;/li&gt;
&lt;li&gt;High: crmd: Fix memory leaks exposed by valgrind&lt;/li&gt;
&lt;li&gt;High: crmd: Remove race condition that could lead to multiple instances of a clone being active on a machine&lt;/li&gt;
&lt;li&gt;High: crmd: Send erase_status_tag() calls to the local CIB when the DC is fenced, since there is no DC to accept them&lt;/li&gt;
&lt;li&gt;High: PE: Bug lf#1959 - Fail unmanaged resources should not prevent other services from shutting down&lt;/li&gt;
&lt;li&gt;High: PE: Bug lf#2383 - Combine failcounts for all instances of an anonymous clone on a host&lt;/li&gt;
&lt;li&gt;High: PE: Bug lf#2384 - Fix intra-set colocation and ordering&lt;/li&gt;
&lt;li&gt;High: PE: Bug lf#2403 - Enforce mandatory promotion (colocation) constraints&lt;/li&gt;
&lt;li&gt;High: PE: Bug lf#2412 - Correctly locate clone instances by their prefix&lt;/li&gt;
&lt;li&gt;High: PE: Bug lf#2422 - Ordering dependencies on partially active groups not observed properly&lt;/li&gt;
&lt;li&gt;High: PE: Bug lf#2424 - Use notify oepration definition if it exists in the configuration&lt;/li&gt;
&lt;li&gt;High: PE: Bug lf#2433 - No services should be stopped until probes finish&lt;/li&gt;
&lt;li&gt;High: PE: Do not be so quick to pull the trigger on nodes that are coming up&lt;/li&gt;
&lt;li&gt;High: PE: Fix colocation for interleaved clones&lt;/li&gt;
&lt;li&gt;High: PE: Fix colocation with partially active groups&lt;/li&gt;
&lt;li&gt;High: PE: Fix memory leaks reported by valgrind&lt;/li&gt;
&lt;li&gt;High: PE: Make the current data set a global variable so it does not need to be passed around everywhere&lt;/li&gt;
&lt;li&gt;High: PE: Prevent endless loop when looking for operation definitions in the configuration&lt;/li&gt;
&lt;li&gt;High: PE: Rewrite native_merge_weights() to avoid Fix use-after-free&lt;/li&gt;
&lt;li&gt;High: Shell: always reload status if working with the cluster (bnc#590035)&lt;/li&gt;
&lt;li&gt;High: Tools: crm_mon - fix memory leaks exposed by valgrind&lt;/li&gt;
&lt;li&gt;Medium: ais: Correctly set logfile permissions in all cases&lt;/li&gt;
&lt;li&gt;Medium: ais: create the final directory too for resource agents (bnc#603190)&lt;/li&gt;
&lt;li&gt;Medium: ais: Make sure debug messages make it into the logfiles too&lt;/li&gt;
&lt;li&gt;Medium: Build: Do not enable the -ansi compiler option by default, prevents use of strtoll()&lt;/li&gt;
&lt;li&gt;Medium: cib: Bug lf#2352 - Changes to group order are not detected or broadcast to peers&lt;/li&gt;
&lt;li&gt;Medium: cib: Correctly free the cib contents at signoff when in file-based mode&lt;/li&gt;
&lt;li&gt;Medium: cib: xpath - Allow all hits to be deleted, allow the no_children option to return multiple hits&lt;/li&gt;
&lt;li&gt;Medium: PE: Bug lf#2391 - Ensure important options (notify, unique, etc) are always exposed during resource operations&lt;/li&gt;
&lt;li&gt;Medium: PE: Bug lf#2410 - Do not complain about missing agents during probes of a-symetric clusters&lt;/li&gt;
&lt;li&gt;Medium: PE: Bug lf#2426 - stop-all-resources should not apply to stonith resources&lt;/li&gt;
&lt;li&gt;Medium: PE: Bug lf#2435 - Support colocation sets with negative scores&lt;/li&gt;
&lt;li&gt;Medium: PE: Check for use-of-NULL in dump_node_scores()&lt;/li&gt;
&lt;li&gt;Medium: PE: Do not overwrite existing meta attributes (like timeout) for notify operations&lt;/li&gt;
&lt;li&gt;Medium: PE: Ensure deallocated resources are stopped&lt;/li&gt;
&lt;li&gt;Medium: PE: If there are no compatible peers when interleaving clones, ensure the instance is stopped&lt;/li&gt;
&lt;li&gt;Medium: PE: Ignore colocation weights from clone instances&lt;/li&gt;
&lt;li&gt;Medium: RA: SystemHealth: exit properly when the required software is not installed (bnc#587940)&lt;/li&gt;
&lt;li&gt;Medium: Shell: do not error on missing resource agent with asymmetrical clusters (lf#2410)&lt;/li&gt;
&lt;li&gt;Medium: Shell: do not verify empty configurations (bnc#602711)&lt;/li&gt;
&lt;li&gt;Medium: shell: find hb_delnode in correct directory&lt;/li&gt;
&lt;li&gt;Medium: Shell: observe op_defaults when verifying primitives (bnc#590033)&lt;/li&gt;
&lt;li&gt;Medium: Shell: on no id match the first of property-like elements (lf#2420)&lt;/li&gt;
&lt;li&gt;Medium: Shell: skip resource checks for property-like elements (lf#2420)&lt;/li&gt;
&lt;li&gt;Medium: Shell: verify meta attributes and properties (bnc#589867)&lt;/li&gt;
&lt;li&gt;Medium: Shell: verify only changed elements on commit (bnc#590033)&lt;/li&gt;
&lt;li&gt;Medium: Tools: crm_mon: refresh screen on terminal resize (bnc#589811)&lt;/li&gt;
&lt;/ul&gt;</content>
		<author>
			<name>The Cluster Guy</name>
			<uri>http://theclusterguy.clusterlabs.org/</uri>
		</author>
		<source>
			<title type="html">The Cluster Guy</title>
			<subtitle type="html">ǝɹǝɥ ʇxǝʇ lnɟʇɥƃısuı
var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src='&quot; + gaJsHost + &quot;google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E&quot;));

try {
var pageTracker = _gat._getTracker(&quot;UA-8156370-3&quot;);
pageTracker._trackPageview();
} catch(err) {}</subtitle>
			<link rel="self" href="http://theclusterguy.clusterlabs.org/rss"/>
			<id>http://theclusterguy.clusterlabs.org/rss</id>
			<updated>2010-07-30T12:30:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">High availability for MySQL on Amazon EC2 – Part 1 – Intro</title>
		<link href="http://www.mysqlperformanceblog.com/2010/06/17/high-availability-for-mysql-on-amazon-ec2-part-1-intro/"/>
		<id>http://www.mysqlperformanceblog.com/?p=3046</id>
		<updated>2010-06-17T19:56:47+00:00</updated>
		<content type="html">&lt;p&gt;Like many, I have been seduced by the power and flexibility of Amazon EC2.  Being able to launch new instances at will depending on the load, is almost too good to be true.  Amazon has also some drawbacks, availability is not guaranteed and discovery protocols relying on Ethernet broadcast or multicast cannot be used.  That means, it is not easy to have a truly highly available solution for MySQL on EC2.  If a MySQL instance fails, here are some challenges that we face:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Detect the failure&lt;/li&gt;
&lt;li&gt;Kill the faulty instance&lt;/li&gt;
&lt;li&gt;Free the shared resources (ex: EBS volumes)&lt;/li&gt;
&lt;li&gt;Launch a new instances&lt;/li&gt;
&lt;li&gt;Reconfigure the shared resources&lt;/li&gt;
&lt;li&gt;Reconfigure instance monitoring&lt;/li&gt;
&lt;li&gt;Reconfigure the database clients&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Facing these challenges, a customer recently asked me if I could build a viable HA solution for MySQL on EC2.  The goal is to have a cheap small instance monitor the availability of a large (any size) and taking measures to keep MySQL available.  A few weeks later, I ended up with a solution that work and is decently elegant using Pacemaker and Heartbeat.  The setup is fairly complex, being in the Amazon EC2 virtual world is not a simplification, far from.   Because of the complexity, the story will be broken into multiple posts:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Part 1 - Intro (this post)&lt;/li&gt;
&lt;li&gt;Part 2 - &lt;a href=&quot;http://www.mysqlperformanceblog.com/2010/06/29/high-availability-for-mysql-on-amazon-ec2-%E2%80%93-part-2-setting-up-the-initial-instances/&quot;&gt;Setting up the initial instances&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part 3 - &lt;a href=&quot;http://www.mysqlperformanceblog.com/2010/07/12/high-availability-for-mysql-on-amazon-ec2-%E2%80%93-part-3-%E2%80%93-configuring-the-ha-resources/&quot;&gt;Configuring the HA resources&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part 4 - The instance restart script&lt;/li&gt;
&lt;li&gt;Part 5 - The instance monitoring script&lt;/li&gt;
&lt;li&gt;Part 6 - Publishing the MySQL server location&lt;/li&gt;
&lt;li&gt;Part 7 - Pitfalls to avoid&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Hopefully, I should be able to write those posts quickly but since consulting is my primary duty, I don't have much control over my workload.&lt;/p&gt;
&lt;p&gt;Stay tuned!&lt;/p&gt;
    &lt;hr noshade=&quot;noshade&quot; /&gt;
    &lt;p&gt;Entry posted by Yves Trudeau |
      &lt;a href=&quot;http://www.mysqlperformanceblog.com/2010/06/17/high-availability-for-mysql-on-amazon-ec2-part-1-intro/#comments&quot;&gt;8 comments&lt;/a&gt;&lt;/p&gt;
    &lt;p&gt;Add to: &lt;a href=&quot;http://del.icio.us/post?url=http://www.mysqlperformanceblog.com/2010/06/17/high-availability-for-mysql-on-amazon-ec2-part-1-intro/&amp;title=High availability for MySQL on Amazon EC2 &amp;#8211; Part 1 &amp;#8211; Intro&quot; title=&quot;Bookmark this post on del.icio.us&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/delicious.png&quot; alt=&quot;delicious&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;http://digg.com/submit?phase=2&amp;url=http://www.mysqlperformanceblog.com/2010/06/17/high-availability-for-mysql-on-amazon-ec2-part-1-intro/&amp;title=High availability for MySQL on Amazon EC2 &amp;#8211; Part 1 &amp;#8211; Intro&quot; title=&quot;Digg this post on Digg.com&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/digg.png&quot; alt=&quot;digg&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;http://reddit.com/submit?url=http://www.mysqlperformanceblog.com/2010/06/17/high-availability-for-mysql-on-amazon-ec2-part-1-intro/&amp;title=High availability for MySQL on Amazon EC2 &amp;#8211; Part 1 &amp;#8211; Intro&quot; title=&quot;Submit this post on reddit.com&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/reddit.png&quot; alt=&quot;reddit&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;http://www.netscape.com/submit/?U=http://www.mysqlperformanceblog.com/2010/06/17/high-availability-for-mysql-on-amazon-ec2-part-1-intro/&amp;T=High availability for MySQL on Amazon EC2 &amp;#8211; Part 1 &amp;#8211; Intro&quot; title=&quot;Vote for this article on Netscape&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/netscape.gif&quot; alt=&quot;netscape&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;http://www.google.com/bookmarks/mark?op=add&amp;bkmk=http://www.mysqlperformanceblog.com/2010/06/17/high-availability-for-mysql-on-amazon-ec2-part-1-intro/&amp;title=High availability for MySQL on Amazon EC2 &amp;#8211; Part 1 &amp;#8211; Intro&quot; title=&quot;Add to Google Bookmarks&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/google.png&quot; alt=&quot;Google Bookmarks&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>MySQL Performance Blog » High Availability</name>
			<uri>http://www.mysqlperformanceblog.com</uri>
		</author>
		<source>
			<title type="html">MySQL Performance Blog » High Availability</title>
			<subtitle type="html">Everything about MySQL Performance</subtitle>
			<link rel="self" href="http://www.mysqlperformanceblog.com/category/high-availability/feed/"/>
			<id>http://www.mysqlperformanceblog.com/category/high-availability/feed/</id>
			<updated>2010-07-29T22:20:10+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">DRBD source dropped from Debian unstable</title>
		<link href="http://tretkowski.de/blog/archives/438-DRBD-source-dropped-from-Debian-unstable.html"/>
		<id>http://tretkowski.de/blog/archives/438-guid.html</id>
		<updated>2010-06-11T19:05:00+00:00</updated>
		<content type="html">OK, not really... &lt;a href=&quot;http://drbd.org/&quot;&gt;DRBD&lt;/a&gt; 8.3.7 is an official part of the Linux kernel since 2.6.33, and thanks to Dann Frazier we also have a backport of that patch in Debian's 2.6.32 kernel as well.&lt;br /&gt;
&lt;br /&gt;
Until yesterday, the DRBD source package in Debian built a -utils and a -source package, the latter was now dropped. From now on, users no longer need to recompile the DRBD module after a kernel upgrade.</content>
		<author>
			<name>Norbert Tretkowski</name>
			<email>norbert@tretkowski.de</email>
			<uri>http://tretkowski.de/blog/</uri>
		</author>
		<source>
			<title type="html">Norbert Tretkowski - High Availability</title>
			<subtitle type="html">Debian Developer and MySQL Geek</subtitle>
			<link rel="self" href="http://tretkowski.de/blog/feeds/categories/12-High-Availability.rss"/>
			<id>http://tretkowski.de/blog/feeds/categories/12-High-Availability.rss</id>
			<updated>2010-06-11T19:10:01+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Speaking at LinuxTag 2010 this Friday</title>
		<link href="http://fghaas.wordpress.com/2010/06/09/speaking-at-linuxtag-2010/"/>
		<id>http://fghaas.wordpress.com/?p=533</id>
		<updated>2010-06-09T09:58:15+00:00</updated>
		<content type="html">&lt;p&gt;Just as a quick reminder, as LinuxTag 2010 in Berlin is going into full swing: &lt;a href=&quot;http://www.linuxtag.org/2010/en/program/free-conference/popup/details.html?talkid=369&quot;&gt;I am speaking on highly available, distributed, open source storage this Friday in room Europa I at 4pm CEST&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;re in Berlin, drop by! Admission is free.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/fghaas.wordpress.com/533/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/fghaas.wordpress.com/533/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/fghaas.wordpress.com/533/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/fghaas.wordpress.com/533/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/fghaas.wordpress.com/533/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/fghaas.wordpress.com/533/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/fghaas.wordpress.com/533/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/fghaas.wordpress.com/533/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/fghaas.wordpress.com/533/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/fghaas.wordpress.com/533/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=fghaas.wordpress.com&amp;blog=1182330&amp;post=533&amp;subd=fghaas&amp;ref=&amp;feed=1&quot; /&gt;</content>
		<author>
			<name>Florian's blog</name>
			<uri>http://fghaas.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Florian's blog</title>
			<subtitle type="html">Linux, DRBD, and other stuff of interest</subtitle>
			<link rel="self" href="http://blogs.linbit.com/florian/feed/"/>
			<id>http://blogs.linbit.com/florian/feed/</id>
			<updated>2010-07-19T19:20:33+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Reminder: Pacemaker/Debian webinar, today 1400 UTC</title>
		<link href="http://fghaas.wordpress.com/2010/06/07/reminder-pacemakerdebian-webinar-today-1400-utc/"/>
		<id>http://fghaas.wordpress.com/?p=530</id>
		<updated>2010-06-07T06:52:22+00:00</updated>
		<content type="html">&lt;p&gt;For those of you who haven&amp;#8217;t yet registered, this is our reminder for today&amp;#8217;s &lt;a href=&quot;http://fghaas.wordpress.com/2010/05/20/upcoming-webinar-migrating-to-pacemaker-on-debian-squeeze/&quot;&gt;Clustering in Debian&lt;/a&gt; webinar at 1400 UTC. If you&amp;#8217;re planning to run &lt;a href=&quot;http://www.clusterlabs.org&quot;&gt;Pacemaker&lt;/a&gt; on the upcoming &lt;a href=&quot;http://www.debian.org/releases/squeeze&quot;&gt;Debian squeeze&lt;/a&gt; release, don&amp;#8217;t miss this!&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/fghaas.wordpress.com/530/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/fghaas.wordpress.com/530/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/fghaas.wordpress.com/530/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/fghaas.wordpress.com/530/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/fghaas.wordpress.com/530/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/fghaas.wordpress.com/530/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/fghaas.wordpress.com/530/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/fghaas.wordpress.com/530/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/fghaas.wordpress.com/530/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/fghaas.wordpress.com/530/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=fghaas.wordpress.com&amp;blog=1182330&amp;post=530&amp;subd=fghaas&amp;ref=&amp;feed=1&quot; /&gt;</content>
		<author>
			<name>Florian's blog</name>
			<uri>http://fghaas.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Florian's blog</title>
			<subtitle type="html">Linux, DRBD, and other stuff of interest</subtitle>
			<link rel="self" href="http://blogs.linbit.com/florian/feed/"/>
			<id>http://blogs.linbit.com/florian/feed/</id>
			<updated>2010-07-19T19:20:33+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Upcoming webinar: migrating to Pacemaker on Debian squeeze</title>
		<link href="http://fghaas.wordpress.com/2010/05/20/upcoming-webinar-migrating-to-pacemaker-on-debian-squeeze/"/>
		<id>http://fghaas.wordpress.com/?p=507</id>
		<updated>2010-05-20T12:23:00+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://www.linbit.com/en/training/our-trainers/martin-gerhard-loschwitz/&quot;&gt;Martin Loschwitz&lt;/a&gt;, the longest-serving &lt;a href=&quot;http://qa.debian.org/developer.php?login=madkiss%40debian.org&quot;&gt;Debian Developer&lt;/a&gt; in our ranks, will present a walk-through of going from Linux clustering on &lt;a href=&quot;http://www.debian.org/releases/lenny&quot;&gt;Debian lenny&lt;/a&gt; (with Heartbeat 2.1.3, shudder) to &lt;a href=&quot;http://www.debian.org/squeeze&quot;&gt;squeeze&lt;/a&gt; (with &lt;a href=&quot;http://www.linux-ha.org/wiki/Heartbeat&quot;&gt;Heartbeat 3&lt;/a&gt; and &lt;a href=&quot;http://clusterlabs.org&quot;&gt;Pacemaker&lt;/a&gt;). In this webinar you will learn everything you need to know about a painless migration to the new Linux cluster stack.&lt;/p&gt;
&lt;p&gt;This webinar will be held on Monday, June 7, at 1400 UTC. You must provide a valid email address to receive a meeting key. Register below!&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
The widget should display the start time in your local timezone. In case Dimdim gets this wrong, 1400 UTC is the correct time.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/fghaas.wordpress.com/507/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/fghaas.wordpress.com/507/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/fghaas.wordpress.com/507/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/fghaas.wordpress.com/507/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/fghaas.wordpress.com/507/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/fghaas.wordpress.com/507/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/fghaas.wordpress.com/507/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/fghaas.wordpress.com/507/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/fghaas.wordpress.com/507/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/fghaas.wordpress.com/507/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=fghaas.wordpress.com&amp;blog=1182330&amp;post=507&amp;subd=fghaas&amp;ref=&amp;feed=1&quot; /&gt;</content>
		<author>
			<name>Florian's blog</name>
			<uri>http://fghaas.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Florian's blog</title>
			<subtitle type="html">Linux, DRBD, and other stuff of interest</subtitle>
			<link rel="self" href="http://blogs.linbit.com/florian/feed/"/>
			<id>http://blogs.linbit.com/florian/feed/</id>
			<updated>2010-07-19T19:20:33+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">In case you haven’t noticed, we no longer manage clusters with XML</title>
		<link href="http://fghaas.wordpress.com/2010/05/20/pacemaker-configuration-xml-free/"/>
		<id>http://fghaas.wordpress.com/?p=511</id>
		<updated>2010-05-20T10:19:04+00:00</updated>
		<content type="html">&lt;p&gt;While Yves presents &lt;a href=&quot;http://www.mysqlperformanceblog.com/2010/05/19/pacemaker-please-meet-ndb-cluster-or-using-pacemakerheartbeat-to-start-a-ndb-cluster/&quot;&gt;a valid approach for managing NDB&lt;/a&gt; with &lt;a href=&quot;http://www.clusterlabs.org&quot;&gt;Pacemaker&lt;/a&gt; and the &lt;a href=&quot;http://www.linux-ha.org/doc/re-ra-anything.html&quot;&gt;anything&lt;/a&gt; Linux-HA resource agent (a generic wrapper for any daemon based application), the XML configuration shown is likely to have people running away screaming. This is how we had to do things back in the Heartbeat 2 days, which meant that as a cluster admin you would permanently run around with a loaded cocked shotgun with the muzzle pressed firmly against your foot.&lt;/p&gt;
&lt;p&gt;Those days are long gone. Please don&amp;#8217;t do this anymore. You also no longer need to use the low-level tools such as &lt;code&gt;cibadmin&lt;/code&gt; or &lt;code&gt;crm_attribute&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;We have the crm shell for those things now. So instead of&lt;/p&gt;
&lt;pre&gt;crm_attribute -t crm_config -n stonith-enabled -v false
crm_attribute --attr-name symmetric-cluster --attr-value false&lt;/pre&gt;
&lt;p&gt;we now simply write&lt;/p&gt;
&lt;pre&gt;crm configure property stonith-enabled=false symmetric-cluster=false&lt;/pre&gt;
&lt;p&gt;Can&amp;#8217;t remember a property name or supported value? Interactive mode and tab completion to the rescue:&lt;/p&gt;
&lt;pre&gt;&lt;strong&gt;#&lt;/strong&gt; crm configure
&lt;strong&gt;crm(live)configure#&lt;/strong&gt; property sto&lt;em&gt;&amp;lt;tab&amp;gt;&lt;/em&gt;
stonith-action=   stonith-enabled=  stonith-timeout=
&lt;strong&gt;crm(live)configure#&lt;/strong&gt; property stonith-enabled=&lt;em&gt;&amp;lt;tab&amp;gt;&lt;/em&gt;
stonith-enabled (boolean, [true]):
Failed nodes are STONITH'd
&lt;strong&gt;crm(live)configure#&lt;/strong&gt; property stonith-enabled=false symmetric-cluster=false
&lt;strong&gt;crm(live)configure#&lt;/strong&gt; commit&lt;/pre&gt;
&lt;p&gt;A bit more convenient, isn&amp;#8217;t it? Now let&amp;#8217;s get rid of dealing with XML. Instead of a horrific avalanche of tags and attributes that we then have to feed into the system with &lt;code&gt;cibadmin&lt;/code&gt;, let&amp;#8217;s do this!&lt;/p&gt;
&lt;pre&gt;&lt;strong&gt;# &lt;/strong&gt;crm configure
&lt;strong&gt;crm(live)configure# &lt;/strong&gt;primitive mgmd ocf:heartbeat:anything \
	params binfile=&quot;/usr/local/bin/fake_ndb_mgmd&quot;
&lt;strong&gt;crm(live)configure# &lt;/strong&gt;primitive ndbcluster ocf:heartbeat:anything \
	params binfile=&quot;/usr/local/bin/fake_ndb_cluster_start&quot;
&lt;strong&gt;crm(live)configure# &lt;/strong&gt;primitive ndbd ocf:heartbeat:anything \
	params binfile=&quot;/usr/local/bin/fake_ndbd&quot;
&lt;strong&gt;crm(live)configure# &lt;/strong&gt;clone ndbdclone ndbd \
	meta clone-max=2
&lt;strong&gt;crm(live)configure# &lt;/strong&gt;location loc-1 mgmd inf: testvirtbox
&lt;strong&gt;crm(live)configure# &lt;/strong&gt;location loc-2 ndbcluster inf: testvirtbox
&lt;strong&gt;crm(live)configure# &lt;/strong&gt;location loc-3 ndbdclone -inf: testvirtbox
&lt;strong&gt;crm(live)configure# &lt;/strong&gt;order ordered-set-1 inf: mgmd ndbdclone ndbcluster
&lt;strong&gt;crm(live)configure# &lt;/strong&gt;commit&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/pre&gt;
&lt;p&gt;And of course, we get tab completion and online help there too. Give it a shot!&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/fghaas.wordpress.com/511/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/fghaas.wordpress.com/511/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/fghaas.wordpress.com/511/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/fghaas.wordpress.com/511/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/fghaas.wordpress.com/511/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/fghaas.wordpress.com/511/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/fghaas.wordpress.com/511/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/fghaas.wordpress.com/511/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/fghaas.wordpress.com/511/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/fghaas.wordpress.com/511/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=fghaas.wordpress.com&amp;blog=1182330&amp;post=511&amp;subd=fghaas&amp;ref=&amp;feed=1&quot; /&gt;</content>
		<author>
			<name>Florian's blog</name>
			<uri>http://fghaas.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Florian's blog</title>
			<subtitle type="html">Linux, DRBD, and other stuff of interest</subtitle>
			<link rel="self" href="http://blogs.linbit.com/florian/feed/"/>
			<id>http://blogs.linbit.com/florian/feed/</id>
			<updated>2010-07-19T19:20:33+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Pacemaker, please meet NDB Cluster or using Pacemaker/Heartbeat to start a NDB Cluster</title>
		<link href="http://www.mysqlperformanceblog.com/2010/05/19/pacemaker-please-meet-ndb-cluster-or-using-pacemakerheartbeat-to-start-a-ndb-cluster/"/>
		<id>http://www.mysqlperformanceblog.com/?p=2693</id>
		<updated>2010-05-19T17:39:01+00:00</updated>
		<content type="html">&lt;p&gt;Customers have always asked me to make NDB Cluster starts automatically upon startup of the servers.  For the ones who know NDB Cluster, it is tricky to make it starts automatically.  I know at least 2 sets of scripts to manage NDB startup, &lt;a href=&quot;http://sourceforge.net/projects/ndb-initializer/&quot;&gt;ndb-initializer&lt;/a&gt; and from Johan configurator &lt;a href=&quot;http://www.severalnines.com/config/index.php&quot;&gt;www.severalnines.com&lt;/a&gt;.  If all the nodes come up at about the same time, it is not too bad but what if one the critical node takes much longer to start because of an fsck on a large ext3 partition.  Then, a startup script becomes a nightmare.  Finally, if the box on which the script is supposed to run didn't start at all.  That's a lot of rules to handle.&lt;/p&gt;
&lt;p&gt;Since all aspects of HA interest me,  I was recently reading the &lt;a href=&quot;http://www.clusterlabs.org/doc/en-US/Pacemaker/1.1/html/Pacemaker_Explained/&quot;&gt;Pacemaker documentation&lt;/a&gt; and I realized that Pacemaker has all the logic required to manage NDB Cluster startup.  Okay it might seems weird to control a cluster by cluster but if you think about it, this is, I think, the best solution. &lt;/p&gt;
&lt;p&gt;The Linux-HA project has split the old Heartbeat-2 project in 2 parts, the clustering and communication layer, Heartbeat and the resources manager, Pacemaker.  A key new features that has been added to Pacemaker recently, a &lt;em&gt;Clone resources set&lt;/em&gt;, that allows an optional startup if only one of 2 similar resources starts.  I use this feature to start the data nodes.  If after a major outage, only one of the physical host where the data nodes are located comes up, the cluster will start.  The other features of Pacemaker that I need are resource location &lt;em&gt;rsc_location&lt;/em&gt; and resource ordering &lt;em&gt;rsc_order&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Let's start by the beginning.  My NDB cluster is made of the following 3 nodes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;testvirtbox: ndb_mgmd  (10.2.2.139)&lt;/li&gt;
&lt;li&gt;test1: ndbd&lt;/li&gt;
&lt;li&gt;test2: ndbd&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For the sake of simplicity, I am not considering the SQL nodes but given the framework, extending to SQL nodes is trivial.  Installing Pacemaker and Heartbeat is very easy on Lucid Lynx, just do the following:&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-48&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-48&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;apt-get install heartbeat pacemaker &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;On other distributions, you might have to build from sources,  look &lt;a href=&quot;http://www.linux-ha.org/doc/&quot;&gt;here&lt;/a&gt; for help.&lt;/p&gt;
&lt;p&gt;There 2 minimal configuration files:&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-49&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-49&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;root@test2:~# cat /etc/ha.&lt;span&gt;d&lt;/span&gt;/authkeys&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;auth &lt;span&gt;1&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;1&lt;/span&gt; sha1&amp;nbsp; yves&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;root@test2:~# cat /etc/ha.&lt;span&gt;d&lt;/span&gt;/ha.&lt;span&gt;cf&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;autojoin none&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;bcast eth0&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;warntime &lt;span&gt;5&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;deadtime &lt;span&gt;15&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;initdead &lt;span&gt;60&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;keepalive &lt;span&gt;2&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;node test1&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;node test2&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;node testvirtbox&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;crm respawn &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;And then, Heartbeat can be started on all nodes with &lt;em&gt;/etc/init.d/heartbeat start&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Next, since Pacemaker is used to start resources and not to manage them, we don't need to define Stonith devices so (run on only one node):&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-50&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-50&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;crm_attribute -t crm_config -n stonith-enabled -v false &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;A last before defining resources, since the Heartbeat cluster is asymmetrical, meaning resources will not be able to run anywhere, we must create an &quot;Opt-In&quot; cluster with (run on only one node):&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-51&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-51&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;crm_attribute --attr-name symmetric-cluster --attr-value false &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;At this point, we have a running cluster controlling nothing.  The trick with NDB Cluster is that Heartbeat is required to start the resources but &lt;strong&gt;not&lt;/strong&gt; to stop them.  In order to achieve this behavior, I created fake resource scripts that can be fully controlled by Heartbeat but allowing the one way behavior I wanted.  &lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-52&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-52&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;root@testvirtbox:~# cat /usr/local/bin/fake_ndb_mgmd&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;#!/bin/bash&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;/usr/bin/nohup /usr/local/mysql/libexec/ndb_mgmd&amp;gt; /dev/null &amp;amp;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;while &lt;span&gt;&amp;#91;&lt;/span&gt; &lt;span&gt;1&lt;/span&gt; &lt;span&gt;&amp;#93;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;do&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /bin/sleep &lt;span&gt;60&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;done&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;root@testvirtbox:~# cat /usr/local/bin/fake_ndb_cluster_start&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;#!/bin/bash&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;#Give some time to the nodes to connect&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;/bin/sleep &lt;span&gt;15&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;/usr/local/mysql/bin/ndb_mgm -e &lt;span&gt;'all start'&lt;/span&gt;&amp;gt; /dev/null&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;while &lt;span&gt;&amp;#91;&lt;/span&gt; &lt;span&gt;1&lt;/span&gt; &lt;span&gt;&amp;#93;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;do&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /bin/sleep &lt;span&gt;60&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;done&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;root@test1:~# cat /usr/local/bin/fake_ndbd&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;#!/bin/bash&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;#Give some time to ndb_mgmd to start&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;/bin/sleep &lt;span&gt;10&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;nohup /usr/local/mysql/libexec/ndbd -c &lt;span&gt;10&lt;/span&gt;.&lt;span&gt;2&lt;/span&gt;.&lt;span&gt;2&lt;/span&gt;.&lt;span&gt;139&lt;/span&gt;&amp;gt; /dev/null &amp;amp;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;while &lt;span&gt;&amp;#91;&lt;/span&gt; &lt;span&gt;1&lt;/span&gt; &lt;span&gt;&amp;#93;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;do&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sleep &lt;span&gt;60&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;done &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;With Pacemaker it is not longer required to manipulate the cib in xml format but for this post, xml offers a compact way of presenting the configuration.  The first things we need to define are the resources.  A very handy resource type for us is the &lt;em&gt;anything&lt;/em&gt; resource which allow an arbitrary script or binary to be run.  The resources section will look like:&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-53&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-53&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;&amp;lt;resources&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;primitive id=&lt;span&gt;&quot;mgmd&quot;&lt;/span&gt; class=&lt;span&gt;&quot;ocf&quot;&lt;/span&gt; type=&lt;span&gt;&quot;anything&quot;&lt;/span&gt; provider=&lt;span&gt;&quot;heartbeat&quot;&lt;/span&gt;&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;instance_attributes id=&lt;span&gt;&quot;params-mgmd&quot;&lt;/span&gt;&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;nvpair id=&lt;span&gt;&quot;param-mgmd-binfile&quot;&lt;/span&gt; name=&lt;span&gt;&quot;binfile&quot;&lt;/span&gt; value=&lt;span&gt;&quot;/usr/local/bin/fake_ndb_mgmd&quot;&lt;/span&gt;/&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;nvpair id=&lt;span&gt;&quot;param-mgmd-pidnile&quot;&lt;/span&gt; name=&lt;span&gt;&quot;pidfile&quot;&lt;/span&gt; value=&lt;span&gt;&quot;/var/run/heartbeat/fake_ndb_mgmd.pid&quot;&lt;/span&gt;/&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/instance_attributes&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/primitive&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;clone id=&lt;span&gt;&quot;ndbdclone&quot;&lt;/span&gt;&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;meta_attributes id=&lt;span&gt;&quot;ndbdclone-options&quot;&lt;/span&gt;&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;nvpair id=&lt;span&gt;&quot;ndbdclone-option-1&quot;&lt;/span&gt; name=&lt;span&gt;&quot;globally-unique&quot;&lt;/span&gt; value=&lt;span&gt;&quot;false&quot;&lt;/span&gt;/&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;nvpair id=&lt;span&gt;&quot;ndbdclone-option-2&quot;&lt;/span&gt; name=&lt;span&gt;&quot;clone-max&quot;&lt;/span&gt; value=&lt;span&gt;&quot;2&quot;&lt;/span&gt;/&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;nvpair id=&lt;span&gt;&quot;ndbdclone-option-3&quot;&lt;/span&gt; name=&lt;span&gt;&quot;clone-node-max&quot;&lt;/span&gt; value=&lt;span&gt;&quot;1&quot;&lt;/span&gt;/&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/meta_attributes&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;primitive id=&lt;span&gt;&quot;ndbd&quot;&lt;/span&gt; class=&lt;span&gt;&quot;ocf&quot;&lt;/span&gt; type=&lt;span&gt;&quot;anything&quot;&lt;/span&gt; provider=&lt;span&gt;&quot;heartbeat&quot;&lt;/span&gt;&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;instance_attributes id=&lt;span&gt;&quot;params-ndbd&quot;&lt;/span&gt;&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;nvpair id=&lt;span&gt;&quot;param-ndbd-binfile&quot;&lt;/span&gt; name=&lt;span&gt;&quot;binfile&quot;&lt;/span&gt; value=&lt;span&gt;&quot;/usr/local/bin/fake_ndbd&quot;&lt;/span&gt;/&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;nvpair id=&lt;span&gt;&quot;param-ndbd-pidfile&quot;&lt;/span&gt; name=&lt;span&gt;&quot;pidfile&quot;&lt;/span&gt; value=&lt;span&gt;&quot;/var/run/heartbeat/fake_ndbd.pid&quot;&lt;/span&gt;/&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/instance_attributes&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/primitive&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/clone&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;primitive id=&lt;span&gt;&quot;ndbcluster&quot;&lt;/span&gt; class=&lt;span&gt;&quot;ocf&quot;&lt;/span&gt; type=&lt;span&gt;&quot;anything&quot;&lt;/span&gt; provider=&lt;span&gt;&quot;heartbeat&quot;&lt;/span&gt;&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;instance_attributes id=&lt;span&gt;&quot;params-ndbcluster&quot;&lt;/span&gt;&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;nvpair id=&lt;span&gt;&quot;param-ndbcluster-binfile&quot;&lt;/span&gt; name=&lt;span&gt;&quot;binfile&quot;&lt;/span&gt; value=&lt;span&gt;&quot;/usr/local/bin/fake_ndb_cluster_start&quot;&lt;/span&gt;/&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;nvpair id=&lt;span&gt;&quot;param-ndbcluster-pidfile&quot;&lt;/span&gt; name=&lt;span&gt;&quot;pidfile&quot;&lt;/span&gt; value=&lt;span&gt;&quot;/var/run/heartbeat/fake_ndb_cluster_start.pid&quot;&lt;/span&gt;/&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/instance_attributes&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/primitive&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/resources&amp;gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Please note the &lt;em&gt;ndbd&lt;/em&gt; resource is defined through the use of a clone set.  The clone set will allow the cluster to start even if only one to the ndb node group is available.  If you have multiple ndb node groups, you'll need one clone set per node group.  The &lt;em&gt;ndb_mgmd&lt;/em&gt; nodes or eventual SQL nodes could have been handled the same way although for SQL nodes, &lt;em&gt;ndb_waiter&lt;/em&gt; is very handy.   Once the resources are defined, we need to setup the constraints which cover mandatory locations and ordering.&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-54&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-54&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;&amp;lt;constraints&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;rsc_location id=&lt;span&gt;&quot;loc-1&quot;&lt;/span&gt; rsc=&lt;span&gt;&quot;mgmd&quot;&lt;/span&gt; node=&lt;span&gt;&quot;testvirtbox&quot;&lt;/span&gt; score=&lt;span&gt;&quot;INFINITY&quot;&lt;/span&gt;/&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;rsc_location id=&lt;span&gt;&quot;loc-2&quot;&lt;/span&gt; rsc=&lt;span&gt;&quot;ndbcluster&quot;&lt;/span&gt; node=&lt;span&gt;&quot;testvirtbox&quot;&lt;/span&gt; score=&lt;span&gt;&quot;INFINITY&quot;&lt;/span&gt;/&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;rsc_location id=&lt;span&gt;&quot;loc-3&quot;&lt;/span&gt; rsc=&lt;span&gt;&quot;ndbdclone&quot;&lt;/span&gt; node=&lt;span&gt;&quot;test1&quot;&lt;/span&gt; score=&lt;span&gt;&quot;INFINITY&quot;&lt;/span&gt;/&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;rsc_location id=&lt;span&gt;&quot;loc-4&quot;&lt;/span&gt; rsc=&lt;span&gt;&quot;ndbdclone&quot;&lt;/span&gt; node=&lt;span&gt;&quot;test2&quot;&lt;/span&gt; score=&lt;span&gt;&quot;INFINITY&quot;&lt;/span&gt;/&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;rsc_order id=&lt;span&gt;&quot;order-1&quot;&lt;/span&gt;&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;resource_set id=&lt;span&gt;&quot;ordered-set-1&quot;&lt;/span&gt; sequential=&lt;span&gt;&quot;true&quot;&lt;/span&gt;&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;resource_ref id=&lt;span&gt;&quot;mgmd&quot;&lt;/span&gt;/&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;resource_ref id=&lt;span&gt;&quot;ndbdclone&quot;&lt;/span&gt;/&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;resource_ref id=&lt;span&gt;&quot;ndbcluster&quot;&lt;/span&gt;/&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/resource_set&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/rsc_order&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/constraints&amp;gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;And... that's it.  For my part, I configured Pacemaker by dumping the cib in xml format, editing and reloading.   In term of commands, it means:&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-55&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-55&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;cibadmin --query&amp;gt; local.&lt;span&gt;xml&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;vi&amp;nbsp; local.&lt;span&gt;xml&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;cibadmin&amp;nbsp; --replace --xml-file local.&lt;span&gt;xml&lt;/span&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Once NDB is started, you can even stop heartbeat, it is no longer required.  &lt;/p&gt;
&lt;p&gt;P.S.:&lt;/p&gt;
&lt;p&gt;As suggested by Florian, here is the configuration in CLI format:&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-56&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-56&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;root@testvirtbox:~# crm configure show&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;INFO: building help index&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;INFO: object order-&lt;span&gt;1&lt;/span&gt; cannot be represented in the CLI notation&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;node $id=&lt;span&gt;&quot;27687295-f72c-49bd-b82d-25f32dbfe1e2&quot;&lt;/span&gt; test2&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;node $id=&lt;span&gt;&quot;3086852d-abb9-4bdb-93a1-9390e14c148c&quot;&lt;/span&gt; test1&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;node $id=&lt;span&gt;&quot;cad7f678-fc91-4f09-a39e-1dde6d5bcd30&quot;&lt;/span&gt; testvirtbox&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;primitive mgmd ocf:heartbeat:anything \&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; params binfile=&lt;span&gt;&quot;/usr/local/bin/fake_ndb_mgmd&quot;&lt;/span&gt; pidfile=&lt;span&gt;&quot;/var/run/heartbeat/fake_ndb_mgmd.pid&quot;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;primitive ndbcluster ocf:heartbeat:anything \&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; params binfile=&lt;span&gt;&quot;/usr/local/bin/fake_ndb_cluster_start&quot;&lt;/span&gt; pidfile=&lt;span&gt;&quot;/var/run/heartbeat/fake_ndb_cluster_start.pid&quot;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;primitive ndbd1-IP ocf:heartbeat:anything \&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; params binfile=&lt;span&gt;&quot;/usr/local/bin/fake_ndbd&quot;&lt;/span&gt; pidfile=&lt;span&gt;&quot;/var/run/heartbeat/fake_ndbd.pid&quot;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;clone ndbdclone ndbd1-IP \&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; meta globally-unique=&lt;span&gt;&quot;false&quot;&lt;/span&gt; clone-max=&lt;span&gt;&quot;2&quot;&lt;/span&gt; clone-node-max=&lt;span&gt;&quot;1&quot;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;location loc-&lt;span&gt;1&lt;/span&gt; mgmd inf: testvirtbox&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;location loc-&lt;span&gt;2&lt;/span&gt; ndbcluster inf: testvirtbox&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;location loc-&lt;span&gt;3&lt;/span&gt; ndbdclone inf: test1&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;location loc-&lt;span&gt;4&lt;/span&gt; ndbdclone inf: test2&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;xml &amp;lt;rsc_order id=&lt;span&gt;&quot;order-1&quot;&lt;/span&gt;&amp;gt; \&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;resource_set id=&lt;span&gt;&quot;ordered-set-1&quot;&lt;/span&gt; sequential=&lt;span&gt;&quot;true&quot;&lt;/span&gt;&amp;gt; \&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;resource_ref id=&lt;span&gt;&quot;mgmd&quot;&lt;/span&gt;/&amp;gt; \&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;resource_ref id=&lt;span&gt;&quot;ndbdclone&quot;&lt;/span&gt;/&amp;gt; \&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;resource_ref id=&lt;span&gt;&quot;ndbcluster&quot;&lt;/span&gt;/&amp;gt; \&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/resource_set&amp;gt; \&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;lt;/rsc_order&amp;gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
    &lt;hr noshade=&quot;noshade&quot; /&gt;
    &lt;p&gt;Entry posted by Yves Trudeau |
      &lt;a href=&quot;http://www.mysqlperformanceblog.com/2010/05/19/pacemaker-please-meet-ndb-cluster-or-using-pacemakerheartbeat-to-start-a-ndb-cluster/#comments&quot;&gt;9 comments&lt;/a&gt;&lt;/p&gt;
    &lt;p&gt;Add to: &lt;a href=&quot;http://del.icio.us/post?url=http://www.mysqlperformanceblog.com/2010/05/19/pacemaker-please-meet-ndb-cluster-or-using-pacemakerheartbeat-to-start-a-ndb-cluster/&amp;title=Pacemaker, please meet NDB Cluster or using Pacemaker/Heartbeat to start a NDB Cluster&quot; title=&quot;Bookmark this post on del.icio.us&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/delicious.png&quot; alt=&quot;delicious&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;http://digg.com/submit?phase=2&amp;url=http://www.mysqlperformanceblog.com/2010/05/19/pacemaker-please-meet-ndb-cluster-or-using-pacemakerheartbeat-to-start-a-ndb-cluster/&amp;title=Pacemaker, please meet NDB Cluster or using Pacemaker/Heartbeat to start a NDB Cluster&quot; title=&quot;Digg this post on Digg.com&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/digg.png&quot; alt=&quot;digg&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;http://reddit.com/submit?url=http://www.mysqlperformanceblog.com/2010/05/19/pacemaker-please-meet-ndb-cluster-or-using-pacemakerheartbeat-to-start-a-ndb-cluster/&amp;title=Pacemaker, please meet NDB Cluster or using Pacemaker/Heartbeat to start a NDB Cluster&quot; title=&quot;Submit this post on reddit.com&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/reddit.png&quot; alt=&quot;reddit&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;http://www.netscape.com/submit/?U=http://www.mysqlperformanceblog.com/2010/05/19/pacemaker-please-meet-ndb-cluster-or-using-pacemakerheartbeat-to-start-a-ndb-cluster/&amp;T=Pacemaker, please meet NDB Cluster or using Pacemaker/Heartbeat to start a NDB Cluster&quot; title=&quot;Vote for this article on Netscape&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/netscape.gif&quot; alt=&quot;netscape&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;http://www.google.com/bookmarks/mark?op=add&amp;bkmk=http://www.mysqlperformanceblog.com/2010/05/19/pacemaker-please-meet-ndb-cluster-or-using-pacemakerheartbeat-to-start-a-ndb-cluster/&amp;title=Pacemaker, please meet NDB Cluster or using Pacemaker/Heartbeat to start a NDB Cluster&quot; title=&quot;Add to Google Bookmarks&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/google.png&quot; alt=&quot;Google Bookmarks&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>MySQL Performance Blog » High Availability</name>
			<uri>http://www.mysqlperformanceblog.com</uri>
		</author>
		<source>
			<title type="html">MySQL Performance Blog » High Availability</title>
			<subtitle type="html">Everything about MySQL Performance</subtitle>
			<link rel="self" href="http://www.mysqlperformanceblog.com/category/high-availability/feed/"/>
			<id>http://www.mysqlperformanceblog.com/category/high-availability/feed/</id>
			<updated>2010-07-29T22:20:10+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Novell announces SLE 11 SP 1</title>
		<link href="http://fghaas.wordpress.com/2010/05/19/novell-announces-sle-11-sp-1/"/>
		<id>http://fghaas.wordpress.com/?p=500</id>
		<updated>2010-05-19T12:00:52+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://www.novell.com&quot;&gt;Novell&lt;/a&gt; has &lt;a href=&quot;http://www.novell.com/news/press/novell-announces-suse-linux-enterprise-11-service-pack-1/&quot;&gt;announced Service Pack 1 for SUSE Linux Enterprise&lt;/a&gt;. &lt;a href=&quot;http://www.linbit.com&quot;&gt;LINBIT&lt;/a&gt; is a key contributor to this release, delivering &lt;a href=&quot;http://www.drbd.org&quot;&gt;DRBD&lt;/a&gt; and a number or cluster resource agents as part of Novell&amp;#8217;s &lt;a href=&quot;http://www.novell.com/products/highavailability/&quot;&gt;SLE High Availability Extension&lt;/a&gt; add-on.&lt;/p&gt;
&lt;p&gt;This puts Novell firmly ahead of competitor &lt;a href=&quot;http://www.redhat.com&quot;&gt;Red Hat&lt;/a&gt; in terms of currently released and supported HA clustering solutions.  In case you haven&amp;#8217;t noticed, Red Hat is also being &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=585309&quot;&gt;questioned&lt;/a&gt; by customers for not shipping DRBD at this time, and being ambiguous about its policy with regard to third-party support for kernel code. Novell, for their part, got that much right. Which entitles them to &lt;a href=&quot;http://twitter.com/larsmb/status/13865430426&quot;&gt;a bit of sarcasm&lt;/a&gt;, I suppose.&lt;/p&gt;
&lt;p&gt;SLE 11 SP1 is coming on June 2.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/fghaas.wordpress.com/500/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/fghaas.wordpress.com/500/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/fghaas.wordpress.com/500/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/fghaas.wordpress.com/500/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/fghaas.wordpress.com/500/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/fghaas.wordpress.com/500/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/fghaas.wordpress.com/500/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/fghaas.wordpress.com/500/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/fghaas.wordpress.com/500/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/fghaas.wordpress.com/500/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=fghaas.wordpress.com&amp;blog=1182330&amp;post=500&amp;subd=fghaas&amp;ref=&amp;feed=1&quot; /&gt;</content>
		<author>
			<name>Florian's blog</name>
			<uri>http://fghaas.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Florian's blog</title>
			<subtitle type="html">Linux, DRBD, and other stuff of interest</subtitle>
			<link rel="self" href="http://blogs.linbit.com/florian/feed/"/>
			<id>http://blogs.linbit.com/florian/feed/</id>
			<updated>2010-07-19T19:20:33+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Setting up DRBD in Pacemaker clusters on Fedora 13</title>
		<link href="http://fghaas.wordpress.com/2010/05/18/setting-up-drbd-in-pacemaker-clusters-on-fedora-13/"/>
		<id>http://fghaas.wordpress.com/?p=495</id>
		<updated>2010-05-18T12:05:02+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://www.clusterlabs.org/wiki/Andrew Beekhof&quot;&gt;Andrew&lt;/a&gt; just published an update to his &lt;a href=&quot;http://www.clusterlabs.org/doc/en-US/Pacemaker/1.1/html/Clusters_from_Scratch/&quot;&gt;Clusters from Scratch&lt;/a&gt; documentation that contains &lt;a href=&quot;http://www.clusterlabs.org/doc/en-US/Pacemaker/1.1/html/Clusters_from_Scratch/ch07.html&quot;&gt;a step-by-step guide for initially setting up DRBD based cluster resources&lt;/a&gt; on&lt;a href=&quot;http://fedoraproject.org/wiki/Releases/13&quot;&gt; Fedora 13&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Yes, that&amp;#8217;s the Fedora release with &lt;a href=&quot;http://fghaas.wordpress.com/2010/02/24/linux-2-6-33-released-first-kernel-with-drbd-included/&quot;&gt;Linux 2.6.33&lt;/a&gt;, so no more installing DRBD kernel modules.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/fghaas.wordpress.com/495/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/fghaas.wordpress.com/495/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/fghaas.wordpress.com/495/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/fghaas.wordpress.com/495/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/fghaas.wordpress.com/495/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/fghaas.wordpress.com/495/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/fghaas.wordpress.com/495/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/fghaas.wordpress.com/495/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/fghaas.wordpress.com/495/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/fghaas.wordpress.com/495/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=fghaas.wordpress.com&amp;blog=1182330&amp;post=495&amp;subd=fghaas&amp;ref=&amp;feed=1&quot; /&gt;</content>
		<author>
			<name>Florian's blog</name>
			<uri>http://fghaas.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Florian's blog</title>
			<subtitle type="html">Linux, DRBD, and other stuff of interest</subtitle>
			<link rel="self" href="http://blogs.linbit.com/florian/feed/"/>
			<id>http://blogs.linbit.com/florian/feed/</id>
			<updated>2010-07-19T19:20:33+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Linux cluster stack hits Debian squeeze</title>
		<link href="http://fghaas.wordpress.com/2010/05/16/linux-cluster-stack-hits-debian-squeeze/"/>
		<id>http://fghaas.wordpress.com/?p=473</id>
		<updated>2010-05-16T10:52:27+00:00</updated>
		<content type="html">&lt;p&gt;The full Linux cluster stack, including &lt;a href=&quot;http://packages.debian.org/squeeze/pacemaker&quot;&gt;Pacemaker&lt;/a&gt;, &lt;a href=&quot;http://packages.debian.org/squeeze/heartbeat&quot;&gt;Heartbeat&lt;/a&gt;, &lt;a href=&quot;http://packages.debian.org/squeeze/corosync&quot;&gt;Corosync&lt;/a&gt; and related packages, cleared all hurdles and migrated to the Debian &lt;em&gt;&lt;a href=&quot;http://www.debian.org/doc/FAQ/ch-ftparchives#s-testing&quot;&gt;testing&lt;/a&gt;&lt;/em&gt; repository this morning. This means that Pacemaker and &lt;em&gt;both&lt;/em&gt; messaging layers it supports will be in the upcoming Debian release, codenamed &lt;em&gt;&lt;a href=&quot;http://www.debian.org/releases/squeeze/&quot;&gt;squeeze&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Credit goes to the debian-ha maintainers crowd for making this possible: &lt;a href=&quot;http://www.linbit.com/de/training/unsere-trainer/martin-gerhard-loschwitz/&quot;&gt;Martin Loschwitz&lt;/a&gt;, &lt;a href=&quot;http://www.vergenet.net/~horms/&quot;&gt;Simon Horman&lt;/a&gt;, &lt;a href=&quot;http://qa.debian.org/developer.php?login=fs%40debian.org&quot;&gt;Frederik Schüler&lt;/a&gt;, &lt;a href=&quot;http://www.v7w.com/anibal/&quot;&gt;Anibal Monsalve Salazar&lt;/a&gt;, &lt;a href=&quot;http://sigxcpu.org/&quot;&gt;Guido Günther&lt;/a&gt;, &lt;a href=&quot;http://tretkowski.de/blog/&quot;&gt;Norbert Tretkowski&lt;/a&gt;, and others.&lt;/p&gt;
&lt;p&gt;In terms of high availability support per distribution, this now has Debian, Ubuntu and SLES running roughly abreast.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/fghaas.wordpress.com/473/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/fghaas.wordpress.com/473/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/fghaas.wordpress.com/473/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/fghaas.wordpress.com/473/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/fghaas.wordpress.com/473/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/fghaas.wordpress.com/473/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/fghaas.wordpress.com/473/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/fghaas.wordpress.com/473/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/fghaas.wordpress.com/473/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/fghaas.wordpress.com/473/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=fghaas.wordpress.com&amp;blog=1182330&amp;post=473&amp;subd=fghaas&amp;ref=&amp;feed=1&quot; /&gt;</content>
		<author>
			<name>Florian's blog</name>
			<uri>http://fghaas.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Florian's blog</title>
			<subtitle type="html">Linux, DRBD, and other stuff of interest</subtitle>
			<link rel="self" href="http://blogs.linbit.com/florian/feed/"/>
			<id>http://blogs.linbit.com/florian/feed/</id>
			<updated>2010-07-19T19:20:33+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Get real!</title>
		<link href="http://fghaas.wordpress.com/2010/05/13/get-real/"/>
		<id>http://fghaas.wordpress.com/?p=486</id>
		<updated>2010-05-13T18:04:31+00:00</updated>
		<content type="html">&lt;p&gt;So it seems Red Hat is a bit surprised (I&amp;#8217;m not) by the number of subscribers on &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=585309&quot;&gt;the &amp;#8220;DRBD in RHEL 6, please&amp;#8221; bug &lt;/a&gt;tripling in a couple of days. I guess they are also &lt;a href=&quot;http://search.twitter.com/search?q=drbd&quot;&gt;getting a few more tweets than usual&lt;/a&gt; about this.&lt;/p&gt;
&lt;p&gt;But please, &lt;a href=&quot;http://jan.wildeboer.net/about/&quot;&gt;Red Hat&amp;#8217;s EMEA Chief Supreme Open Source Evangelist&lt;/a&gt; saying &lt;a href=&quot;http://twitter.com/jwildeboer/status/13904744656&quot;&gt;&amp;#8220;DRBD is limited with regard to integration with [Red Hat] Cluster&amp;#8221;&lt;/a&gt;? Give me a break. &lt;a href=&quot;http://git.fedorahosted.org/git/?p=resource-agents.git;a=blob;f=rgmanager/src/resources/drbd.sh;h=4571660f5fea7b686915031ce321bbf0e90ed1a2;hb=HEAD&quot;&gt;I wrote the Red Hat Cluster Suite integration for DRBD&lt;/a&gt;. Lon Hohberger merged it almost a year ago. He also took care of the cluster.conf schema changes so DRBD properly integrates with Red Hat Cluster management tools. It&amp;#8217;s been in all upstream Red Hat Cluster releases since. Lon also wrote the original &lt;a href=&quot;http://sourceware.org/cluster/wiki/DRBD_Cookbook&quot;&gt;cookbook&lt;/a&gt; for getting GFS2 running on Dual-Primary DRBD. Back in 2007!&lt;/p&gt;
&lt;p&gt;The other cluster stack the RHEL 6 beta ships with, &lt;a href=&quot;http://www.clusterlabs.org/wiki/Pacemaker&quot;&gt;Pacemaker&lt;/a&gt;, has supported DRBD from the get-go.&lt;/p&gt;
&lt;p&gt;That&amp;#8217;s &amp;#8220;limited integration&amp;#8221;?&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/fghaas.wordpress.com/486/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/fghaas.wordpress.com/486/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/fghaas.wordpress.com/486/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/fghaas.wordpress.com/486/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/fghaas.wordpress.com/486/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/fghaas.wordpress.com/486/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/fghaas.wordpress.com/486/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/fghaas.wordpress.com/486/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/fghaas.wordpress.com/486/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/fghaas.wordpress.com/486/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=fghaas.wordpress.com&amp;blog=1182330&amp;post=486&amp;subd=fghaas&amp;ref=&amp;feed=1&quot; /&gt;</content>
		<author>
			<name>Florian's blog</name>
			<uri>http://fghaas.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Florian's blog</title>
			<subtitle type="html">Linux, DRBD, and other stuff of interest</subtitle>
			<link rel="self" href="http://blogs.linbit.com/florian/feed/"/>
			<id>http://blogs.linbit.com/florian/feed/</id>
			<updated>2010-07-19T19:20:33+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Want DRBD in RHEL 6? Make yourself heard!</title>
		<link href="http://fghaas.wordpress.com/2010/05/11/want-drbd-in-rhel-6-make-yourself-heard/"/>
		<id>http://fghaas.wordpress.com/?p=476</id>
		<updated>2010-05-11T15:33:06+00:00</updated>
		<content type="html">&lt;p&gt;The folks over at Red Hat were kind enough to make public &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=585309&quot;&gt;bug 585309&lt;/a&gt;, an enhancement request to include DRBD in RHEL 6. If you want DRBD on the last major platform that doesn&amp;#8217;t include it yet, feel free to comment and make your voice heard!&lt;/p&gt;
&lt;p&gt;A valid login on the Red Hat Bugzilla system is required to comment. Don&amp;#8217;t have an account? &lt;a href=&quot;https://bugzilla.redhat.com/createaccount.cgi&quot;&gt;Create one&lt;/a&gt;!&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/fghaas.wordpress.com/476/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/fghaas.wordpress.com/476/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/fghaas.wordpress.com/476/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/fghaas.wordpress.com/476/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/fghaas.wordpress.com/476/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/fghaas.wordpress.com/476/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/fghaas.wordpress.com/476/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/fghaas.wordpress.com/476/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/fghaas.wordpress.com/476/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/fghaas.wordpress.com/476/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=fghaas.wordpress.com&amp;blog=1182330&amp;post=476&amp;subd=fghaas&amp;ref=&amp;feed=1&quot; /&gt;</content>
		<author>
			<name>Florian's blog</name>
			<uri>http://fghaas.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Florian's blog</title>
			<subtitle type="html">Linux, DRBD, and other stuff of interest</subtitle>
			<link rel="self" href="http://blogs.linbit.com/florian/feed/"/>
			<id>http://blogs.linbit.com/florian/feed/</id>
			<updated>2010-07-19T19:20:33+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Debugging problems with row based replication</title>
		<link href="http://www.mysqlperformanceblog.com/2010/05/06/debugging-problems-with-row-based-replication/"/>
		<id>http://www.mysqlperformanceblog.com/?p=2590</id>
		<updated>2010-05-07T01:27:48+00:00</updated>
		<content type="html">&lt;p&gt;MySQL 5.1 introduces row based binary logging.  In fact, the default binary logging format in GA versions of MySQL 5.1 is &lt;span&gt;'MIXED'&lt;/span&gt; STATEMENT*;   The binlog_format  variable can still be changed per sessions which means it is possible that some of your binary log entries will be written in a row-based fashion instead of the actual statement which changed data, even when the global setting on the master is to write binary logs in statement mode.   The row-based format does offer advantages particularly if triggers or stored procedures are used, or if non deterministic functions like RAND() are used in DML statements.&lt;/p&gt;
&lt;p&gt;A statement based replication slave can get out of sync with the master fairly easily, especially if data is changed on the slave.   It is possible for a statement to execute successfully on a slave even if the data is not 100% in sync, so MySQL doesn't know anything is wrong.  This isn't the case with row-based replication.  Only actual changes are written to the database with row-based logs.  Take as an example a DELETE statement which does not modify any rows.  No binary logging will be performed by this statement in row-based logs, but the DELETE will be written to a statement based binary log.  Since row-based logs only contain information about changed rows, a replication slave which does not find a row referenced in a row-based log will immediately return an error: HA_ERR_KEY_NOT_FOUND.&lt;/p&gt;
&lt;p&gt;This is probably best shown by example.  First, lets create a test table on a MySQL master database and populate it with some data.&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lsql-65&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;SQL:&lt;/span&gt;
&lt;div id=&quot;sql-65&quot;&gt;
&lt;div class=&quot;sql&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;CREATE&lt;/span&gt; &lt;span&gt;TABLE&lt;/span&gt; &lt;span&gt;`t1`&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;`c1`&lt;/span&gt; int&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;NOT&lt;/span&gt; &lt;span&gt;NULL&lt;/span&gt; &lt;span&gt;AUTO_INCREMENT&lt;/span&gt;,&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;PRIMARY&lt;/span&gt; &lt;span&gt;KEY&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;`c1`&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; ENGINE=InnoDB;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Query OK, &lt;span&gt;1&lt;/span&gt; row affected &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;.&lt;span&gt;02&lt;/span&gt; sec&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Insert a single &quot;seed&quot; row into the table:&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lsql-66&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;SQL:&lt;/span&gt;
&lt;div id=&quot;sql-66&quot;&gt;
&lt;div class=&quot;sql&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;INSERT&lt;/span&gt; &lt;span&gt;INTO&lt;/span&gt; repl.t1 &lt;span&gt;VALUES&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Query OK, &lt;span&gt;1&lt;/span&gt; row affected &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;.&lt;span&gt;00&lt;/span&gt; sec&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;INSERT ... SELECT a few times to get some dummy data:&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lsql-67&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;SQL:&lt;/span&gt;
&lt;div id=&quot;sql-67&quot;&gt;
&lt;div class=&quot;sql&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;INSERT&lt;/span&gt; &lt;span&gt;INTO&lt;/span&gt; repl.t1 &lt;span&gt;SELECT&lt;/span&gt; &lt;span&gt;NULL&lt;/span&gt; &lt;span&gt;FROM&lt;/span&gt; t1;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Query OK, &lt;span&gt;1&lt;/span&gt; row affected &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;.&lt;span&gt;01&lt;/span&gt; sec&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Records: &lt;span&gt;1&lt;/span&gt;  Duplicates: &lt;span&gt;0&lt;/span&gt;  Warnings: &lt;span&gt;0&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;INSERT&lt;/span&gt; &lt;span&gt;INTO&lt;/span&gt; repl.t1 &lt;span&gt;SELECT&lt;/span&gt; &lt;span&gt;NULL&lt;/span&gt; &lt;span&gt;FROM&lt;/span&gt; t1;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Query OK, &lt;span&gt;2&lt;/span&gt; rows affected &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;.&lt;span&gt;01&lt;/span&gt; sec&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Records: &lt;span&gt;2&lt;/span&gt;  Duplicates: &lt;span&gt;0&lt;/span&gt;  Warnings: &lt;span&gt;0&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;...&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;INSERT&lt;/span&gt; &lt;span&gt;INTO&lt;/span&gt; repl.t1 &lt;span&gt;SELECT&lt;/span&gt; &lt;span&gt;NULL&lt;/span&gt; &lt;span&gt;FROM&lt;/span&gt; t1;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Query OK, &lt;span&gt;32768&lt;/span&gt; rows affected &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;.&lt;span&gt;62&lt;/span&gt; sec&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Records: &lt;span&gt;32768&lt;/span&gt;  Duplicates: &lt;span&gt;0&lt;/span&gt;  Warnings: &lt;span&gt;0&lt;/span&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Verify that we have a reasonable amount of data to play with:&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lsql-68&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;SQL:&lt;/span&gt;
&lt;div id=&quot;sql-68&quot;&gt;
&lt;div class=&quot;sql&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt; count&lt;span&gt;&amp;#40;&lt;/span&gt;*&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;FROM&lt;/span&gt; t1;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;+&lt;span&gt;----------+&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;| count&lt;span&gt;&amp;#40;&lt;/span&gt;*&lt;span&gt;&amp;#41;&lt;/span&gt; |&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;+&lt;span&gt;----------+&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;|    &lt;span&gt;65536&lt;/span&gt; |&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;+&lt;span&gt;----------+&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;1&lt;/span&gt; row &lt;span&gt;IN&lt;/span&gt; &lt;span&gt;SET&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;.&lt;span&gt;02&lt;/span&gt; sec&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;My test setup includes a MySQL slave.  After the above setup completes, I am going to change data on the slave by truncating t1.  After truncation:&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lsql-69&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;SQL:&lt;/span&gt;
&lt;div id=&quot;sql-69&quot;&gt;
&lt;div class=&quot;sql&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt; count&lt;span&gt;&amp;#40;&lt;/span&gt;*&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;FROM&lt;/span&gt; t1 &lt;span&gt;AS&lt;/span&gt; empty_table_on_the_slave;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;+&lt;span&gt;----------+&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;| count&lt;span&gt;&amp;#40;&lt;/span&gt;*&lt;span&gt;&amp;#41;&lt;/span&gt; |&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;+&lt;span&gt;----------+&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;|    &lt;span&gt;0&lt;/span&gt;     |&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;+&lt;span&gt;----------+&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;1&lt;/span&gt; row &lt;span&gt;IN&lt;/span&gt; &lt;span&gt;SET&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;.&lt;span&gt;00&lt;/span&gt; sec&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Now, lets make a modification on the master:&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lsql-70&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;SQL:&lt;/span&gt;
&lt;div id=&quot;sql-70&quot;&gt;
&lt;div class=&quot;sql&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;UPDATE&lt;/span&gt; repl.t1 &lt;span&gt;SET&lt;/span&gt; c1 = c1 + &lt;span&gt;100000&lt;/span&gt; &lt;span&gt;WHERE&lt;/span&gt; c1 = &lt;span&gt;1&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Query OK, &lt;span&gt;1&lt;/span&gt; row affected &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;.&lt;span&gt;02&lt;/span&gt; sec&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Rows matched: &lt;span&gt;1&lt;/span&gt;  Changed: &lt;span&gt;1&lt;/span&gt;  Warnings: &lt;span&gt;0&lt;/span&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;On the slave, SHOW SLAVE STATUS now reports an error (many fields omitted):&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lsql-71&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;SQL:&lt;/span&gt;
&lt;div id=&quot;sql-71&quot;&gt;
&lt;div class=&quot;sql&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;SHOW&lt;/span&gt; SLAVE &lt;span&gt;STATUS&lt;/span&gt;\G&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Relay_Log_File: mysql_sandbox25162-relay-bin.&lt;span&gt;000002&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Relay_Log_Pos: &lt;span&gt;340718&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Slave_SQL_Running: No&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Last_Errno: &lt;span&gt;1032&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Last_Error: Could &lt;span&gt;NOT&lt;/span&gt; execute Update_rows event &lt;span&gt;ON&lt;/span&gt; &lt;span&gt;TABLE&lt;/span&gt; repl.t1; Can&lt;span&gt;'t find record in '&lt;/span&gt;t1&lt;span&gt;', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event'&lt;/span&gt;s master log mysql-bin.&lt;span&gt;000001&lt;/span&gt;, end_log_pos &lt;span&gt;340718&lt;/span&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;This error message is telling us that a row that was modified on the master can not be found on the slave:HA_ERR_KEY_NOT_FOUND.  It doesn't tell us what row it couldn't find though.  In our simple example, we know that all the rows are missing, and the one in particular that the server is trying to find is c1=1, but how can we find that out if we don't know the conditions under which replication went out of sync?&lt;/p&gt;
&lt;p&gt;To determine exactly what row is having an issue, we can use the 'mysqlbinlog' utility in combination with the slave relay log.  Examining the output of SHOW SLAVE STATUS, we can see that the slave is currently executing at relay log file: mysql_sandbox25162-relay-bin.000002 at position: 340718.  MySQL 5.1 ships with a new version of mysqlbinlog that includes new options that make decoding RBR statements possible.  These options are &quot;--base64-output&quot; and &quot;-v&quot;.  For debugging row based logs, I suggest '--base64-output=decode-rows -v&quot;.  This omits any base64 output and instead replaces the output with semi-valid SQL statements.  I say semi-valid because the statements do not include column names.  Column names are not included in the binary log, only positions.&lt;/p&gt;
&lt;p&gt;mysqlbinlog mysql_sandbox25162-relay-bin.000005 --base64-output=decode-rows -v &amp;gt; decoded.log&lt;/p&gt;
&lt;p&gt;Examine the decoded binary log with the 'less' utility, and search forward for the value 340718:&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lsql-72&quot;&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/category/high-availability/feed/&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;SQL:&lt;/span&gt;
&lt;div id=&quot;sql-72&quot;&gt;
&lt;div class=&quot;sql&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;# at 340718&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;#100506 12:42:56 server id 1  end_log_pos 340637        Query   thread_id=6     exec_time=0     error_code=0&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;SET&lt;/span&gt; TIMESTAMP=1273174976&lt;span&gt;/*!*/&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;BEGIN&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;/*!*/&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;# at 340782&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;# at 340823&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;#100506 12:42:56 server id 1  end_log_pos 340678        Table_map: `repl`.`t1` mapped to number 15&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;#100506 12:42:56 server id 1  end_log_pos 340718        Update_rows: table id 15 flags: STMT_END_F&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;### UPDATE repl.t1&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;### WHERE&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;###   @1=1&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;### SET&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;###   @1=100001&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;# at 340863&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;#100506 12:42:56 server id 1  end_log_pos 340745        Xid = 51&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;COMMIT&lt;span&gt;/*!*/&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;# at 340890 &lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;As you can see, the RBR entry has been decoded as an update statement.  The OLD value (the row that is missing) is represented in the WHERE clause.  The binary log does not carry column names, so each column is represented by the column position prefixed with @.&lt;/p&gt;
&lt;p&gt;There you have it.  You can now find out exactly which row is missing and begin your investigation as to why it is missing. You may have to do a bit more leg work if many rows were modified during a transaction.&lt;/p&gt;
&lt;p&gt;You should always set read_only = true on your MySQL slaves to prevent accidental changes in data from happening!&lt;/p&gt;
&lt;p&gt;*edit*&lt;br /&gt;
The MySQL 5.1 default binary logging format changed back to STATEMENT in MySQL 5.1.29.&lt;/p&gt;
    &lt;hr noshade=&quot;noshade&quot; /&gt;
    &lt;p&gt;Entry posted by Justin Swanhart |
      &lt;a href=&quot;http://www.mysqlperformanceblog.com/2010/05/06/debugging-problems-with-row-based-replication/#comments&quot;&gt;9 comments&lt;/a&gt;&lt;/p&gt;
    &lt;p&gt;Add to: &lt;a href=&quot;http://del.icio.us/post?url=http://www.mysqlperformanceblog.com/2010/05/06/debugging-problems-with-row-based-replication/&amp;title=Debugging problems with row based replication&quot; title=&quot;Bookmark this post on del.icio.us&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/delicious.png&quot; alt=&quot;delicious&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;http://digg.com/submit?phase=2&amp;url=http://www.mysqlperformanceblog.com/2010/05/06/debugging-problems-with-row-based-replication/&amp;title=Debugging problems with row based replication&quot; title=&quot;Digg this post on Digg.com&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/digg.png&quot; alt=&quot;digg&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;http://reddit.com/submit?url=http://www.mysqlperformanceblog.com/2010/05/06/debugging-problems-with-row-based-replication/&amp;title=Debugging problems with row based replication&quot; title=&quot;Submit this post on reddit.com&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/reddit.png&quot; alt=&quot;reddit&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;http://www.netscape.com/submit/?U=http://www.mysqlperformanceblog.com/2010/05/06/debugging-problems-with-row-based-replication/&amp;T=Debugging problems with row based replication&quot; title=&quot;Vote for this article on Netscape&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/netscape.gif&quot; alt=&quot;netscape&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;http://www.google.com/bookmarks/mark?op=add&amp;bkmk=http://www.mysqlperformanceblog.com/2010/05/06/debugging-problems-with-row-based-replication/&amp;title=Debugging problems with row based replication&quot; title=&quot;Add to Google Bookmarks&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/google.png&quot; alt=&quot;Google Bookmarks&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>MySQL Performance Blog » High Availability</name>
			<uri>http://www.mysqlperformanceblog.com</uri>
		</author>
		<source>
			<title type="html">MySQL Performance Blog » High Availability</title>
			<subtitle type="html">Everything about MySQL Performance</subtitle>
			<link rel="self" href="http://www.mysqlperformanceblog.com/category/high-availability/feed/"/>
			<id>http://www.mysqlperformanceblog.com/category/high-availability/feed/</id>
			<updated>2010-07-29T22:20:10+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Feature Spotlight: Utilization</title>
		<link href="http://theclusterguy.clusterlabs.org/post/570381880"/>
		<id>http://theclusterguy.clusterlabs.org/post/570381880</id>
		<updated>2010-05-04T08:00:00+00:00</updated>
		<content type="html">&lt;p&gt;New in 1.1 is the ability for Pacemaker to factor the system resources (RAM, CPU, etc) into its placement algorithms.&lt;/p&gt;

&lt;p&gt;First, simply define the system resources provided by your nodes.
We’ll use &lt;em&gt;cores&lt;/em&gt; in this example, but you can literally use any name you care to dream up.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;crm configure node pcmk-1 utilization cores=2
crm configure node pcmk-2 utilization cores=4
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Then we tell the cluster how many &lt;em&gt;cores&lt;/em&gt; are needed by each VM.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;crm configure primitive kvm-small ocf:heartbeat:VirtualDomain utilization cores=1
crm configure primitive kvm-medium ocf:heartbeat:VirtualDomain utilization cores=2
crm configure primitive kvm-big ocf:heartbeat:VirtualDomain utilization cores=3
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Finally, we tell Pacemaker how to use the information:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;crm configure property placement-strategy=utilization
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now Pacemaker will ensure the load from your virtual machines will be distributed “evenly” throughout the cluster - without the need for convoluted sets of colocation constraints.&lt;/p&gt;

&lt;p&gt;Download 1.1 today from:
   &lt;a href=&quot;http://www.clusterlabs.org/rpm-next/&quot;&gt;http://www.clusterlabs.org/rpm-next/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Limitations&lt;/h3&gt;

&lt;p&gt;This type of problem Pacemaker is dealing with here is known as the &lt;a href=&quot;http://en.wikipedia.org/wiki/Knapsack_problem&quot;&gt;knapsack problem&lt;/a&gt; and falls into the &lt;a href=&quot;http://en.wikipedia.org/wiki/NP-complete&quot;&gt;NP-complete&lt;/a&gt; category of computer science problems - which is fancy way of saying “takes a really long time to solve”.&lt;/p&gt;

&lt;p&gt;Clearly in a HA cluster, its not acceptable to spend minutes, let alone hours or days, finding an optional solution while services remain unavailable.&lt;/p&gt;

&lt;p&gt;So instead of trying to solve the problem completely, Pacemaker uses a &lt;em&gt;best effort&lt;/em&gt; algorithm for determining which node should host a particular service.
This means it arrives at a “solution” much faster than traditional linear programming algorithms, but my do so at the price of leaving some services stopped.&lt;/p&gt;

&lt;p&gt;In the contrived example above:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;kvm-small would be allocated to pcmk-1&lt;/li&gt;
&lt;li&gt;kvm-medium would be allocated to pcmk-2&lt;/li&gt;
&lt;li&gt;kvm-large would remain inactive&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Which is not ideal.&lt;/p&gt;

&lt;h4&gt;Strategies for Dealing with the Limitations&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Ensure you have sufficient physical capacity
It might sounds obvious, but if the physical capacity of your nodes is (close to) maxed out by the cluster under normal conditions, then failover isn’t going to go well.
Even without the Utilization feature, you’ll start hitting timeouts and getting secondary “failures”.&lt;/li&gt;
&lt;li&gt;Build some buffer into the capabilities advertised by the nodes
Advertise slightly more resources than we physically have on the (usually valid) assumption that a VM will not use 100% of the configured number of cores/RAM/etc &lt;em&gt;all&lt;/em&gt; the time.
This practice is also known as “over commit”.&lt;/li&gt;
&lt;li&gt;Specify service priorities
If the cluster is going to sacrifice services, it should be the ones you care (comparatively) about the least.&lt;/li&gt;
&lt;/ul&gt;</content>
		<author>
			<name>The Cluster Guy</name>
			<uri>http://theclusterguy.clusterlabs.org/</uri>
		</author>
		<source>
			<title type="html">The Cluster Guy</title>
			<subtitle type="html">ǝɹǝɥ ʇxǝʇ lnɟʇɥƃısuı
var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src='&quot; + gaJsHost + &quot;google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E&quot;));

try {
var pageTracker = _gat._getTracker(&quot;UA-8156370-3&quot;);
pageTracker._trackPageview();
} catch(err) {}</subtitle>
			<link rel="self" href="http://theclusterguy.clusterlabs.org/rss"/>
			<id>http://theclusterguy.clusterlabs.org/rss</id>
			<updated>2010-07-30T12:30:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Am I missing something?</title>
		<link href="http://fghaas.wordpress.com/2010/05/04/am-i-missing-something/"/>
		<id>http://fghaas.wordpress.com/?p=465</id>
		<updated>2010-05-04T07:50:06+00:00</updated>
		<content type="html">&lt;p&gt;If you&amp;#8217;re on software with a support contract, you should get support, right?&lt;/p&gt;
&lt;p&gt;If the software you have support on has a documented feature that&amp;#8217;s not working as documented, then you would expect to get a fix, a workaround, or even perhaps an explanation to the effect that you misunderstood the documentation in the first place, and the feature in fact does something else. Correct?&lt;/p&gt;
&lt;p&gt;And if the feature in question is a customization facility, then you wouldn&amp;#8217;t expect support on the customization itself, but you would expect the customization&lt;em&gt; interface&lt;/em&gt; to work as documented, right?&lt;/p&gt;
&lt;p&gt;So in summary, if you ran into an issue with a customization interface not working as the documentation says, you&amp;#8217;d expect support to fix the interface, suggest a workaround, or provide additional documentation?&lt;/p&gt;
&lt;p&gt;Well, I would.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.sugarcrm.com&quot;&gt;SugarCRM&lt;/a&gt; appears to see things differently.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/fghaas.wordpress.com/465/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/fghaas.wordpress.com/465/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/fghaas.wordpress.com/465/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/fghaas.wordpress.com/465/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/fghaas.wordpress.com/465/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/fghaas.wordpress.com/465/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/fghaas.wordpress.com/465/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/fghaas.wordpress.com/465/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/fghaas.wordpress.com/465/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/fghaas.wordpress.com/465/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=fghaas.wordpress.com&amp;blog=1182330&amp;post=465&amp;subd=fghaas&amp;ref=&amp;feed=1&quot; /&gt;</content>
		<author>
			<name>Florian's blog</name>
			<uri>http://fghaas.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Florian's blog</title>
			<subtitle type="html">Linux, DRBD, and other stuff of interest</subtitle>
			<link rel="self" href="http://blogs.linbit.com/florian/feed/"/>
			<id>http://blogs.linbit.com/florian/feed/</id>
			<updated>2010-07-19T19:20:33+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Pacemaker ships as part of Ubuntu 10.4 - Lucid Lynx</title>
		<link href="http://theclusterguy.clusterlabs.org/post/567805394"/>
		<id>http://theclusterguy.clusterlabs.org/post/567805394</id>
		<updated>2010-05-03T09:10:00+00:00</updated>
		<content type="html">&lt;p&gt;Ubuntu LTS 10.04 now comes with full support for Pacemaker on Corosync and Heartbeat:
   &lt;a href=&quot;http://fghaas.wordpress.com/2010/05/03/ubuntu-10-04-with-full-cluster-stack-support/&quot;&gt;http://fghaas.wordpress.com/2010/05/03/ubuntu-10-04-with-full-cluster-stack-support/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Kudos to everyone involved!&lt;/p&gt;</content>
		<author>
			<name>The Cluster Guy</name>
			<uri>http://theclusterguy.clusterlabs.org/</uri>
		</author>
		<source>
			<title type="html">The Cluster Guy</title>
			<subtitle type="html">ǝɹǝɥ ʇxǝʇ lnɟʇɥƃısuı
var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src='&quot; + gaJsHost + &quot;google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E&quot;));

try {
var pageTracker = _gat._getTracker(&quot;UA-8156370-3&quot;);
pageTracker._trackPageview();
} catch(err) {}</subtitle>
			<link rel="self" href="http://theclusterguy.clusterlabs.org/rss"/>
			<id>http://theclusterguy.clusterlabs.org/rss</id>
			<updated>2010-07-30T12:30:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Ubuntu 10.04 with full cluster stack support</title>
		<link href="http://fghaas.wordpress.com/2010/05/03/ubuntu-10-04-with-full-cluster-stack-support/"/>
		<id>http://fghaas.wordpress.com/?p=462</id>
		<updated>2010-05-03T06:52:11+00:00</updated>
		<content type="html">&lt;p&gt;Just in case you haven&amp;#8217;t noticed, &lt;a href=&quot;http://www.ubuntu.com/news/ubuntu-10.04-server-edition&quot;&gt;Ubuntu 10.04 &amp;#8220;Lucid Lynx&amp;#8221; has arrived&lt;/a&gt;. I upgraded my personal box over the weekend, and am happy to report that things went pretty flawlessly for me. So I&amp;#8217;m now a happy lucid user.&lt;/p&gt;
&lt;p&gt;What&amp;#8217;s more important for the ever-growing cluster community is the fact that this LTS release comes with built-in support for the &lt;a href=&quot;http://clusterlabs.org&quot;&gt;Pacemaker&lt;/a&gt; cluster stack &amp;#8212; and indeed, it&amp;#8217;s the &lt;em&gt;first&lt;/em&gt; commercially-supported distribution that comes with support for both the &lt;a href=&quot;http://www.linux-ha.org/wiki/Heartbeat&quot;&gt;Heartbeat&lt;/a&gt; and the &lt;a href=&quot;http://www.corosync.org&quot;&gt;Corosync&lt;/a&gt; cluster messaging layer. And it&amp;#8217;s easy, too!&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s how I install the Pacemaker stack with Heartbeat (which I prefer) on an Ubuntu box:&lt;/p&gt;
&lt;pre&gt;aptitude install heartbeat pacemaker&lt;/pre&gt;
&lt;p&gt;And if you choose to go with Corosync, here&amp;#8217;s how.&lt;/p&gt;
&lt;pre&gt;aptitude install corosync pacemaker&lt;/pre&gt;
&lt;p&gt;&amp;#8230; and you&amp;#8217;re good to go!&lt;/p&gt;
&lt;p&gt;Credit for Ubuntu cluster stack packaging goes to &lt;a href=&quot;https://wiki.ubuntu.com/AnteKaramatic&quot;&gt;Ante Karamatić (ivoks)&lt;/a&gt; and &lt;a href=&quot;http://www.roaksoax.com/&quot;&gt;Andres Rodriguez (roaksoax)&lt;/a&gt;, along with the rest of the &lt;a href=&quot;http://launchpad.net/~ubuntu-ha&quot;&gt;ubuntu-ha team&lt;/a&gt;. Their work builds on Debian packaging by Martin Loschwitz, Guido Günther, Frederik Schüler and others.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/fghaas.wordpress.com/462/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/fghaas.wordpress.com/462/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/fghaas.wordpress.com/462/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/fghaas.wordpress.com/462/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/fghaas.wordpress.com/462/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/fghaas.wordpress.com/462/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/fghaas.wordpress.com/462/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/fghaas.wordpress.com/462/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/fghaas.wordpress.com/462/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/fghaas.wordpress.com/462/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=fghaas.wordpress.com&amp;blog=1182330&amp;post=462&amp;subd=fghaas&amp;ref=&amp;feed=1&quot; /&gt;</content>
		<author>
			<name>Florian's blog</name>
			<uri>http://fghaas.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Florian's blog</title>
			<subtitle type="html">Linux, DRBD, and other stuff of interest</subtitle>
			<link rel="self" href="http://blogs.linbit.com/florian/feed/"/>
			<id>http://blogs.linbit.com/florian/feed/</id>
			<updated>2010-07-19T19:20:33+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">MySQL HA , an alternative approach</title>
		<link href="http://www.krisbuytaert.be/blog/mysql-ha-alternative-approach"/>
		<id>http://www.krisbuytaert.be/1001 at http://www.krisbuytaert.be/blog</id>
		<updated>2010-04-28T21:17:27+00:00</updated>
		<content type="html">&lt;p&gt;For those who've seen my presentation on MySQL HA, you already know that I often use a multimaster setup with a meta OCF resource  that groups my favoured MySQL instance with the service ip ,  using a meta resource means that pacemaker monitors mysql, but it doesn't actually manage it.  It's an approach that works for us.&lt;/p&gt;
&lt;p&gt;One of the other approaches I will be looking at soon is the freshly released OCF resource that &lt;a href=&quot;http://fghaas.wordpress.com/2010/04/21/mysql-masterslave-support-now-merged-into-linux-ha/&quot; rel=&quot;nofollow&quot;&gt;Florian&lt;/a&gt; announced last week.&lt;/p&gt;
&lt;p&gt;Back in the days our approach meant we didn't have to use clone resources, which you might remember being pretty buggy in the v2 era,  not wanting to use clons resources isn't really a valid reason anymore these days .  I've also frequently mentioned the combination of using DRBD and MultiMaster replication,  using this set of OCF resource makes that a lot more easy ..&lt;/p&gt;
&lt;p&gt;Now all I need to do is find me some time to validate this setup.&lt;/p&gt;
&lt;div class=&quot;technorati_tags&quot;&gt;&lt;img alt=&quot;Technorati Tags:&quot; src=&quot;http://www.krisbuytaert.be/blog/sites/all/modules/technorati/technobubble.gif&quot; /&gt;&lt;strong&gt;Technorati Tags: &lt;/strong&gt;&lt;a href=&quot;http://technorati.com/tag/cluster&quot; rel=&quot;tag&quot;&gt;cluster&lt;/a&gt; &lt;a href=&quot;http://technorati.com/tag/ha&quot; rel=&quot;tag&quot;&gt;ha&lt;/a&gt; &lt;a href=&quot;http://technorati.com/tag/mysql&quot; rel=&quot;tag&quot;&gt;mysql&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;sharomaticbutton&quot;&gt; &lt;a href=&quot;http://www.shareomatic.com/http://www.krisbuytaert.be/blog/mysql-ha-alternative-approach/shareomatic-drupal/MySQL HA , an alternative approach&quot;&gt;&lt;img src=&quot;http://www.shareomatic.com/images/s_16_black.gif&quot; alt=&quot;Share with Shareomatic!&quot; title=&quot;Post this item on various social news sites with Shareomatic!&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://www.shareomatic.com/http://www.krisbuytaert.be/blog/mysql-ha-alternative-approach/shareomatic-drupal/MySQL HA , an alternative approach&quot;&gt;Share with Shareomatic!&lt;/a&gt; &lt;/div&gt;
&lt;!--
&lt;rdf:RDF xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:trackback=&quot;http://madskills.com/public/xml/rss/module/trackback/&quot;&gt;
&lt;rdf:Description rdf:about=&quot;http://www.krisbuytaert.be/blog/mysql-ha-alternative-approach&quot; dc:identifier=&quot;http://www.krisbuytaert.be/blog/mysql-ha-alternative-approach&quot; dc:title=&quot;MySQL HA , an alternative approach&quot; trackback:ping=&quot;http://www.krisbuytaert.be/blog/trackback/1001&quot; /&gt;
&lt;/rdf:RDF&gt;
--&gt;
&lt;div class=&quot;trackback-url&quot;&gt;&lt;div class=&quot;box&quot;&gt;

  &lt;h3&gt;Trackback URL for this post:&lt;/h3&gt;

  &lt;div class=&quot;content&quot;&gt;http://www.krisbuytaert.be/blog/trackback/1001&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content>
		<author>
			<name>Everything is a Freaking DNS problem - ha</name>
			<uri>http://www.krisbuytaert.be/blog/taxonomy/term/449/0</uri>
		</author>
		<source>
			<title type="html">Everything is a Freaking DNS problem - ha</title>
			<link rel="self" href="http://www.krisbuytaert.be/blog/taxonomy/term/449/0/feed"/>
			<id>http://www.krisbuytaert.be/blog/taxonomy/term/449/0/feed</id>
			<updated>2010-07-30T13:00:04+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Why high-availability is hard with databases</title>
		<link href="http://www.xaprb.com/blog/2010/04/26/why-high-availability-is-hard-with-databases/"/>
		<id>http://www.xaprb.com/blog/?p=1778</id>
		<updated>2010-04-26T11:53:15+00:00</updated>
		<content type="html">&lt;p&gt;A lot of systems are relatively easy to make HA (highly available).  You just slap them into a well-known HA framework such as Linux-HA and you&amp;#8217;re done.  But databases are different, especially replicated databases, &lt;em&gt;especially&lt;/em&gt; replicated MySQL.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://www.xaprb.com/blog/wp-content/uploads/2010/04/matchbox_car-300x200.jpg&quot; alt=&quot;Matchbox Car&quot; title=&quot;Matchbox Car&quot; width=&quot;300&quot; height=&quot;200&quot; class=&quot;alignnone size-medium wp-image-1779&quot; /&gt;The reason has to do with some properties that hold for many systems, but not for most databases.  Most systems that you want to make HA are relatively lightweight and interchangeable, with little to zero statefulness, easy to start, easy to stop, don&amp;#8217;t care a lot about storage (or at least don&amp;#8217;t write a lot of data; that&amp;#8217;s usually delegated to the database), and there&amp;#8217;s little or no harm done if you ruthlessly behead them.  The classic example is a web server or even most application servers.  Most of the time these things are all about CPU power and network bandwidth. If I were to compare them to a car, I&amp;#8217;d say they are like matchbox cars: there are many of them, and they are cheap and easy to replace.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://www.xaprb.com/blog/wp-content/uploads/2010/04/mining-truck-300x242.jpg&quot; alt=&quot;Mining Truck&quot; title=&quot;Mining Truck&quot; width=&quot;300&quot; height=&quot;242&quot; class=&quot;alignnone size-medium wp-image-1783&quot; /&gt;Databases are different.  With or without replication, you&amp;#8217;re looking at a system that is complex, stateful, heavyweight, and cares a lot about storage.  It runs on bigger hardware with fast disks and a lot of memory.  It&amp;#8217;s usually disk-bound, and it does a lot of writes.  It&amp;#8217;s hard to start &amp;#8212; it takes a long time to warm up and really get ready to serve production workloads (many minutes, hours, or even days).  It tends to run with a lot of data in memory in a dirty state, so shutdown is slow, because a clean shutdown requires flushing a bunch of data to disk.  If you yank its power plug or kill-dash-nine it, it&amp;#8217;ll have to perform recovery on startup, which slows the startup process even more.  If I were to compare a database server to a car, I wouldn&amp;#8217;t even use a car as the analogy: I&amp;#8217;d use one of those big-ass mining trucks.  If your mining truck breaks down, you don&amp;#8217;t just toss it in the trash and pull another off the shelf.&lt;/p&gt;

&lt;p&gt;The problem with a lot of HA solutions is that they want to deal with inconsistencies or irregularities by killing the resource and replacing it in another location.  This works fine with web servers, but not with database servers.  Doing that will cause serious pain and downtime, defeating the point of HA.  And when you add replication into the mix, it gets even worse.  A system that wants to manage replication needs to deal with very complex conditions.  A lot of replication failures are delicate matters that require skilled human intervention to solve.  The HA solution must insulate the application from the misbehaving resource, but leave it running so the human can handle things.&lt;/p&gt;

&lt;p&gt;This is not the way most applications are made HA.  It&amp;#8217;s different with databases, and it&amp;#8217;s much harder.&lt;/p&gt;

&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;http://www.xaprb.com/blog/2007/10/18/high-performance-mysql-second-edition-replication-scaling-and-high-availability/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: High Performance MySQL, Second Edition: Replication, Scaling and High Availability&quot;&gt;High Performance MySQL, Second Edition: Replication, Scaling and High Availability&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.xaprb.com/blog/2010/06/12/postmodern-databases/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: Postmodern databases&quot;&gt;Postmodern databases&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.xaprb.com/blog/2009/09/20/observations-on-key-value-databases/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: Observations on key-value databases&quot;&gt;Observations on key-value databases&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.xaprb.com/blog/2008/01/12/more-progress-on-high-performance-mysql-second-edition/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: More progress on High Performance MySQL, Second Edition&quot;&gt;More progress on High Performance MySQL, Second Edition&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.xaprb.com/blog/2007/09/19/high-performance-mysql-second-edition-backup-and-recovery/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: High Performance MySQL, Second Edition: Backup and Recovery&quot;&gt;High Performance MySQL, Second Edition: Backup and Recovery&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;</content>
		<author>
			<name>Xaprb » High Availability</name>
			<uri>http://www.xaprb.com/blog</uri>
		</author>
		<source>
			<title type="html">Xaprb » High Availability</title>
			<subtitle type="html">Stay curious!</subtitle>
			<link rel="self" href="http://www.xaprb.com/blog/category/high-availability/feed/"/>
			<id>http://www.xaprb.com/blog/category/high-availability/feed/</id>
			<updated>2010-07-28T17:50:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">MySQL master/slave support merged into Linux-HA</title>
		<link href="http://fghaas.wordpress.com/2010/04/21/mysql-masterslave-support-now-merged-into-linux-ha/"/>
		<id>http://fghaas.wordpress.com/?p=450</id>
		<updated>2010-04-21T05:27:07+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/en/replication.html&quot;&gt;MySQL replication&lt;/a&gt; support for the &lt;a href=&quot;http://www.clusterlabs.org&quot;&gt;Pacemaker&lt;/a&gt; cluster manager (the stuff that we explained in &lt;a href=&quot;http://fghaas.wordpress.com/2010/04/08/mysqlpacemaker-scaleout-webinar-recording-available/&quot;&gt;this webinar&lt;/a&gt;) &lt;a href=&quot;http://hg.linux-ha.org/agents/rev/82206c4818dc&quot;&gt;has made it&lt;/a&gt; into the Linux-HA resource agents default branch. If you are interested in testing &amp;#8212; and you should! &amp;#8212; please read the &lt;a href=&quot;http://lists.linux-ha.org/pipermail/linux-ha-dev/2010-April/017350.html&quot;&gt;extended announcement&lt;/a&gt;. Feedback is extremely welcome on &lt;a href=&quot;http://lists.linux-ha.org/mailman/listinfo/linux-ha-dev&quot;&gt;the linux-ha-dev mailing list&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We are expecting to release this as part of resource-agents 1.0.4, in late May/early June.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/fghaas.wordpress.com/450/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/fghaas.wordpress.com/450/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/fghaas.wordpress.com/450/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/fghaas.wordpress.com/450/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/fghaas.wordpress.com/450/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/fghaas.wordpress.com/450/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/fghaas.wordpress.com/450/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/fghaas.wordpress.com/450/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/fghaas.wordpress.com/450/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/fghaas.wordpress.com/450/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=fghaas.wordpress.com&amp;blog=1182330&amp;post=450&amp;subd=fghaas&amp;ref=&amp;feed=1&quot; /&gt;</content>
		<author>
			<name>Florian's blog</name>
			<uri>http://fghaas.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Florian's blog</title>
			<subtitle type="html">Linux, DRBD, and other stuff of interest</subtitle>
			<link rel="self" href="http://blogs.linbit.com/florian/feed/"/>
			<id>http://blogs.linbit.com/florian/feed/</id>
			<updated>2010-07-19T19:20:33+00:00</updated>
		</source>
	</entry>

</feed>
