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

<channel>
	<title>MySQL Preacher &#187; High Availability</title>
	<atom:link href="http://mysqlpreacher.com/wordpress/tag/high-availability/feed/" rel="self" type="application/rss+xml" />
	<link>http://mysqlpreacher.com/wordpress</link>
	<description>A MySQL blog, from a MySQL DBA</description>
	<lastBuildDate>Wed, 16 Jun 2010 13:13:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>MySQL HA &#8211; Let&#8217;s take a look at Sequoia</title>
		<link>http://mysqlpreacher.com/wordpress/2009/03/mysql-ha-quite-a-few-solutions-to-choose-from-here-is-a-look-at-sequoia/</link>
		<comments>http://mysqlpreacher.com/wordpress/2009/03/mysql-ha-quite-a-few-solutions-to-choose-from-here-is-a-look-at-sequoia/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 10:13:33 +0000</pubDate>
		<dc:creator>Darren Cassar</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[Intermediate]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Heartbeat]]></category>
		<category><![CDATA[High Availability]]></category>
		<category><![CDATA[MySQL Cluster]]></category>
		<category><![CDATA[MySQL HA]]></category>
		<category><![CDATA[Proxy]]></category>
		<category><![CDATA[Sequoia]]></category>
		<category><![CDATA[Sun Cluster]]></category>
		<category><![CDATA[Tungsten]]></category>
		<category><![CDATA[Veritas]]></category>

		<guid isPermaLink="false">http://mysqlpreacher.com/wordpress/?p=117</guid>
		<description><![CDATA[MySQL HA:
1. Desirable &#8211; most of the time,
2. Needed &#8211; often enough,
3. Available &#8211; there are some good options out there.
Typical solutions consist of:
Heartbeat with DRBD on Linux. Although HB was introduced to Linux, it can be used on Solaris, FreeBSD and others without the DRBD but with other solutions.
Sun Cluster,
Veritas (commercial),
MySQL Proxy (still in [...]]]></description>
			<content:encoded><![CDATA[<p>MySQL HA:<br />
1. Desirable &#8211; most of the time,<br />
2. Needed &#8211; often enough,<br />
3. Available &#8211; there are some good options out there.</p>
<p>Typical solutions consist of:<br />
Heartbeat with DRBD on Linux. Although HB was introduced to Linux, it can be used on Solaris, FreeBSD and others without the DRBD but with other solutions.<br />
Sun Cluster,<br />
Veritas (commercial),<br />
MySQL Proxy (still in alpha at the time of writing this blog but on testing proved to be a sweet solution),<br />
Sequoia,<br />
Tungsten (commercial),<br />
MySQL cluster (which sadly doesn&#8217;t fit my scenario) and others</p>
<p>Whist researching the above list of load balancers / auto failover solutions I decided to give Sequoia (a load balancer and auto failover tier) a shot. I documented the commands and configuration steps and am listing them here under.<br />
Used windows for this one (shameful I know :P) but should work the same on *nix.</p>
<p>After downloading and unzipping Sequoia I went ahead and configured the controller.xml file. Apart from several other parameters available, this is the place where you should set the port where sequoia listens to requests and forwards them to the MySQL instances it is configured to in return connect to.</p>
<p><code>------------------------------&gt; CONTROLLER.XML to be stored in sequoia.x.xx/config/controller </code></p>
<blockquote><p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243; ?&gt;</p>
<p>&lt;!DOCTYPE SEQUOIA-CONTROLLER PUBLIC &#8220;-//Continuent//DTD SEQUOIA-CONTROLLER 2.10.10//EN&#8221;  &#8220;http://sequoia.continuent.org/dtds/sequoia-controller-2.10.10.dtd&#8221;&gt;</p>
<p>&lt;SEQUOIA-CONTROLLER&gt;<br />
&lt;Controller port=&#8221;25322&#8243;&gt;<br />
&lt;Report hideSensitiveData=&#8221;true&#8221; generateOnShutdown=&#8221;true&#8221; generateOnFatal=&#8221;true&#8221; enableFileLogging=&#8221;true&#8221; /&gt;<br />
&lt;JmxSettings&gt;<br />
&lt;RmiJmxAdaptor/&gt;<br />
&lt;/JmxSettings&gt;<br />
&lt;/Controller&gt;<br />
&lt;/SEQUOIA-CONTROLLER&gt;</p></blockquote>
<p>Next came the distribution file which contains several general parameters for which you should read the documentation if you would like to know better what each does. I personally followed a standard file and tuned it for my needs.</p>
<p><code>------------------------------&gt; TEST-MYSQL-DISTRIBUTION.XML to be stored in sequoia.x.xx/config/virtualdatabase </code></p>
<blockquote><p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243;?&gt;<br />
&lt;!DOCTYPE SEQUOIA PUBLIC &#8220;-//Continuent//DTD SEQUOIA 2.10.10//EN&#8221; &#8220;http://sequoia.continuent.org/dtds/sequoia-2.10.10.dtd&#8221;&gt;</p>
<p>&lt;SEQUOIA&gt;</p>
<p>&lt;VirtualDatabase name=&#8221;test&#8221;&gt;</p>
<p>&lt;Monitoring&gt;<br />
&lt;SQLMonitoring defaultMonitoring=&#8221;off&#8221;&gt;<br />
&lt;SQLMonitoringRule queryPattern=&#8221;^select&#8221; caseSensitive=&#8221;false&#8221; applyToSkeleton =&#8221;false&#8221; monitoring=&#8221;on&#8221;/&gt;<br />
&lt;/SQLMonitoring&gt;<br />
&lt;/Monitoring&gt;</p>
<p>&lt;Backup&gt;<br />
&lt;Backuper backuperName=&#8221;Octopus&#8221;<br />
className=&#8221;org.continuent.sequoia.controller.backup.backupers.OctopusBackuper&#8221;<br />
options=&#8221;zip=true&#8221;/&gt;<br />
&lt;/Backup&gt;</p>
<p>&lt;AuthenticationManager&gt;<br />
&lt;Admin&gt;<br />
&lt;User username=&#8221;admin&#8221; password=&#8221;"/&gt;<br />
&lt;/Admin&gt;<br />
&lt;VirtualUsers&gt;<br />
&lt;VirtualLogin vLogin=&#8221;user&#8221; vPassword=&#8221;"/&gt;<br />
&lt;/VirtualUsers&gt;<br />
&lt;/AuthenticationManager&gt;</p>
<p>&lt;DatabaseBackend name=&#8221;localhost1&#8243; driver=&#8221;com.mysql.jdbc.Driver&#8221;<br />
url=&#8221;jdbc:mysql://localhost:3306/test&#8221;<br />
connectionTestStatement=&#8221;select 1&#8243;&gt;<br />
&lt;ConnectionManager vLogin=&#8221;user&#8221; rLogin=&#8221;test&#8221; rPassword=&#8221;"&gt;<br />
&lt;VariablePoolConnectionManager initPoolSize=&#8221;10&#8243; minPoolSize=&#8221;5&#8243;<br />
maxPoolSize=&#8221;50&#8243; idleTimeout=&#8221;30&#8243; waitTimeout=&#8221;10&#8243;/&gt;<br />
&lt;/ConnectionManager&gt;<br />
&lt;/DatabaseBackend&gt;</p>
<p>&lt;DatabaseBackend name=&#8221;localhost2&#8243; driver=&#8221;com.mysql.jdbc.Driver&#8221;<br />
url=&#8221;jdbc:mysql://localhost:3307/test&#8221;<br />
connectionTestStatement=&#8221;select 1&#8243;&gt;<br />
&lt;ConnectionManager vLogin=&#8221;user&#8221; rLogin=&#8221;test&#8221; rPassword=&#8221;"&gt;<br />
&lt;VariablePoolConnectionManager initPoolSize=&#8221;10&#8243; minPoolSize=&#8221;5&#8243;<br />
maxPoolSize=&#8221;50&#8243; idleTimeout=&#8221;30&#8243; waitTimeout=&#8221;10&#8243;/&gt;<br />
&lt;/ConnectionManager&gt;<br />
&lt;/DatabaseBackend&gt;</p>
<p>&lt;RequestManager&gt;<br />
&lt;RequestScheduler&gt;<br />
&lt;RAIDb-1Scheduler level=&#8221;passThrough&#8221;/&gt;<br />
&lt;/RequestScheduler&gt;</p>
<p>&lt;RequestCache&gt;<br />
&lt;MetadataCache/&gt;<br />
&lt;ParsingCache/&gt;<br />
&lt;!&#8211;       &lt;ResultCache granularity=&#8221;table&#8221;/&gt; &#8211;&gt;<br />
&lt;/RequestCache&gt;</p>
<p>&lt;LoadBalancer&gt;<br />
&lt;RAIDb-1&gt;<br />
&lt;WaitForCompletion policy=&#8221;first&#8221;/&gt;<br />
&lt;RAIDb-1-LeastPendingRequestsFirst/&gt;<br />
&lt;/RAIDb-1&gt;<br />
&lt;/LoadBalancer&gt;<br />
&lt;RecoveryLog driver=&#8221;com.mysql.jdbc.Driver&#8221;<br />
url=&#8221;jdbc:mysql://localhost:3306/recovery&#8221; login=&#8221;test&#8221; password=&#8221;"&gt;<br />
&lt;RecoveryLogTable tableName=&#8221;RECOVERY&#8221;<br />
logIdColumnType=&#8221;BIGINT NOT NULL&#8221;<br />
vloginColumnType=&#8221;VARCHAR NOT NULL&#8221;<br />
sqlColumnType=&#8221;VARCHAR NOT NULL&#8221;<br />
extraStatementDefinition=&#8221;,PRIMARY KEY (log_id)&#8221;/&gt;<br />
&lt;CheckpointTable tableName=&#8221;CHECKPOINT&#8221;<br />
checkpointNameColumnType=&#8221;VARCHAR(255) NOT NULL&#8221;/&gt;<br />
&lt;BackendTable tableName=&#8221;BACKEND&#8221;<br />
databaseNameColumnType=&#8221;VARCHAR(255) NOT NULL&#8221;<br />
backendNameColumnType=&#8221;VARCHAR(255) NOT NULL&#8221;<br />
checkpointNameColumnType=&#8221;VARCHAR(255) NOT NULL&#8221;/&gt;<br />
&lt;DumpTable tableName=&#8221;DUMP&#8221; dumpNameColumnType=&#8221;VARCHAR(255) NOT NULL&#8221;<br />
dumpDateColumnType=&#8221;TIMESTAMP&#8221;<br />
dumpPathColumnType=&#8221;VARCHAR(255) NOT NULL&#8221;<br />
dumpFormatColumnType=&#8221;VARCHAR(255) NOT NULL&#8221;<br />
checkpointNameColumnType=&#8221;VARCHAR(255) NOT NULL&#8221;<br />
backendNameColumnType=&#8221;VARCHAR(255) NOT NULL&#8221;<br />
tablesColumnType=&#8221;VARCHAR(255) NOT NULL&#8221;/&gt;<br />
&lt;/RecoveryLog&gt;</p>
<p>&lt;/RequestManager&gt;</p>
<p>&lt;/VirtualDatabase&gt;</p>
<p>&lt;/SEQUOIA&gt;</p></blockquote>
<p>Given the above recovery log table contains illegal names for MySQL, it complains and therefore I went along and created the table directly using SQL. List of MySQL reserved words can be found here: http://dev.mysql.com/doc/mysqld-version-reference/en/mysqld-version-reference-reservedwords-5-1.html</p>
<p><code>------------------------------&gt; INSTALLATION STEPS</code></p>
<p>1) Run the following create table before loading virtualdatabase configuration C:\test-mysql-distribution.xml on the console window:<br />
CREATE DATABSE recovery</p>
<p><code>CREATE TABLE recovery ( </code><br />
<code>`log_id` BIGINT NOT NULL UNIQUE, </code><br />
<code>`vlogin` TEXT NOT NULL, </code><br />
<code>`sql` VARCHAR(255) NOT NULL, </code><br />
<code>`sql_param` TEXT, </code><br />
<code>`auto_conn_tran` CHAR(1) NOT NULL,</code><br />
<code>`transaction_id` BIGINT, </code><br />
<code>`request_id` BIGINT, </code><br />
<code>`exec_status` CHAR(1) NOT NULL, </code><br />
<code>`exec_time` BIGINT, </code><br />
<code>`update_count` BIGINT, </code><br />
<code>PRIMARY KEY (`log_id`) </code><br />
<code>) </code><br />
<code> </code></p>
<p>Edit controller.bat and console.bat to include the mysqlconnector in the CLASSPATH<br />
SET CLASSPATH=;&#8221;C:\Program Files\sequoia-2.10.10-bin/drivers/mysql-connector-java-3.1.14-bin.jar&#8221;;$CLASSPATH</p>
<p><code>------------------------------&gt; MySQL INSTALLATION STEPS</code></p>
<p>Install two mysql instances on 3306 and 3307 respectively, on the same machine (can be done on different machines and test-mysql-distribution.xml changed to suit the IPs. Set master &#8211; master replication and prepare startup / stop script. (For help installing master &#8211; master replication you can either use sandbox or install it customly using my.cnf replication settings and remember to set auto_increment_increment and auto_increment_offset according to how many masters you have.</p>
<p>On a two node setup they would be:</p>
<p>First Master the values:</p>
<p>auto_increment_increment = 2<br />
auto_increment_offset = 1</p>
<p>Second Master:</p>
<p>auto_increment_increment = 2<br />
auto_increment_offset = 2</p>
<p>If you are not knowledgable about the subject I recommend you use MySQL Sandbox or check out MySQL Documentation at: http://dev.mysql.com/doc/refman/5.1/en/replication.html</p>
<p><code>------------------------------&gt; EXECUTION STEPS</code></p>
<p>Run controller.bat then console.bat and issue `load virtualdatabase configuration C:\test-mysql-distribution.xml` when ready</p>
<p><code>------------------------------&gt;  OUTPUT on CONSOLE.BAT window</code></p>
<p>NOTE if stuck in console, just hit `tab` and the commands will be displayed</p>
<p><code>Running the tools and software: </code><br />
<code> </code><br />
<code>Launching the Sequoia controller console </code><br />
<code>Initializing Controller module... </code><br />
<code>Initializing VirtualDatabase Administration module... </code><br />
<code>Initializing SQL Console module... </code><br />
<code>Sequoia driver (Sequoia core v2.10.10) successfully loaded. </code><br />
<code>localhost:1090 &gt; load virtualdatabase configuration C:\test-mysql-distribution.xml </code><br />
<code>XML file C:\test-mysql-distribution.xml successfully sent to Sequoia controller. </code><br />
<code>localhost:1090 &gt; admin test </code><br />
<code>Virtual database Administrator Login &gt; admin </code><br />
<code>Virtual database Administrator Password &gt; </code><br />
<code>Ready to administrate virtual database test </code><br />
<code>test(admin) &gt; initialize localhost1 </code><br />
<code>Virtual Database test has been successfully initialized from backend localhost1 </code><br />
<code>test(admin) &gt; initialize localhost2 </code><br />
<code>Backend localhost1 has a last known checkpoint (Initial_empty_recovery_log) </code><br />
<code>test(admin) &gt; show backend localhost1 </code><br />
<code>+--------------------------+----------------------------------+ </code><br />
<code>| Backend Name             | localhost1                       | </code><br />
<code>| Driver                   | com.mysql.jdbc.Driver            | </code><br />
<code>| URL                      | jdbc:mysql://localhost:3306/test | </code><br />
<code>| Active transactions      | 0                                | </code><br />
<code>| Pending Requests         | 0                                | </code><br />
<code>| Read Enabled             | false                            | </code><br />
<code>| Write Enabled            | false                            | </code><br />
<code>| Is Initialized           | false                            | </code><br />
<code>| Static Schema            | false                            | </code><br />
<code>| Connection Managers      | 1                                | </code><br />
<code>| Total Active Connections | 50                               | </code><br />
<code>| Persistent Connections   | 0                                | </code><br />
<code>| Total Requests           | 0                                | </code><br />
<code>| Total Transactions       | 0                                | </code><br />
<code>| Last known checkpoint    | Initial_empty_recovery_log       | </code><br />
<code>+--------------------------+----------------------------------+ </code><br />
<code> </code><br />
<code>test(admin) &gt; show backend localhost2 </code><br />
<code>+--------------------------+----------------------------------+ </code><br />
<code>| Backend Name             | localhost2                       | </code><br />
<code>| Driver                   | com.mysql.jdbc.Driver            | </code><br />
<code>| URL                      | jdbc:mysql://localhost:3307/test | </code><br />
<code>| Active transactions      | 0                                | </code><br />
<code>| Pending Requests         | 0                                | </code><br />
<code>| Read Enabled             | false                            | </code><br />
<code>| Write Enabled            | false                            | </code><br />
<code>| Is Initialized           | false                            | </code><br />
<code>| Static Schema            | false                            | </code><br />
<code>| Connection Managers      | 1                                | </code><br />
<code>| Total Active Connections | 50                               | </code><br />
<code>| Persistent Connections   | 0                                | </code><br />
<code>| Total Requests           | 0                                | </code><br />
<code>| Total Transactions       | 0                                | </code><br />
<code>| Last known checkpoint    |                         | </code><br />
<code>+--------------------------+----------------------------------+ </code><br />
<code> </code><br />
<code>test(admin) &gt; enable localhost1 force </code><br />
<code>Enabling backend localhost1 from its last known checkpoint </code><br />
<code>test(admin) &gt; show backend localhost1 </code><br />
<code>+--------------------------+----------------------------------+ </code><br />
<code>| Backend Name             | localhost1                       | </code><br />
<code>| Driver                   | com.mysql.jdbc.Driver            | </code><br />
<code>| URL                      | jdbc:mysql://localhost:3306/test | </code><br />
<code>| Active transactions      | 0                                | </code><br />
<code>| Pending Requests         | 0                                | </code><br />
<code>| Read Enabled             | true                             | </code><br />
<code>| Write Enabled            | true                             | </code><br />
<code>| Is Initialized           | true                             | </code><br />
<code>| Static Schema            | false                            | </code><br />
<code>| Connection Managers      | 1                                | </code><br />
<code>| Total Active Connections | 10                               | </code><br />
<code>| Persistent Connections   | 0                                | </code><br />
<code>| Total Requests           | 0                                | </code><br />
<code>| Total Transactions       | 0                                | </code><br />
<code>| Last known checkpoint    |                         | </code><br />
<code>+--------------------------+----------------------------------+ </code><br />
<code> </code><br />
<code>test(admin) &gt; initialize localhost2 force </code><br />
<code>Virtual Database test has been successfully initialized from backend localhost2 </code><br />
<code>test(admin) &gt; enable localhost2 </code><br />
<code>Enabling backend localhost2 from its last known checkpoint </code><br />
<code>test(admin) &gt; show backend localhost1 </code><br />
<code>+--------------------------+--------------------------------------------------------------+ </code><br />
<code>| Backend Name             | localhost1                                                   | </code><br />
<code>| Driver                   | com.mysql.jdbc.Driver                                        | </code><br />
<code>| URL                      | jdbc:mysql://localhost:3306/test                             | </code><br />
<code>| Active transactions      | 0                                                            | </code><br />
<code>| Pending Requests         | 0                                                            | </code><br />
<code>| Read Enabled             | false                                                        | </code><br />
<code>| Write Enabled            | false                                                        | </code><br />
<code>| Is Initialized           | false                                                        | </code><br />
<code>| Static Schema            | false                                                        | </code><br />
<code>| Connection Managers      | 2                                                            | </code><br />
<code>| Total Active Connections | 25                                                           | </code><br />
<code>| Persistent Connections   | 0                                                            | </code><br />
<code>| Total Requests           | 0                                                            | </code><br />
<code>| Total Transactions       | 0                                                            | </code><br />
<code>| Last known checkpoint    | backup localhost1-172.22.16.103:25322-20090311114054271+0000 | </code><br />
<code>+--------------------------+--------------------------------------------------------------+ </code><br />
<code> </code><br />
<code>test(admin) &gt; disable localhost1 </code><br />
<code>Disabling backend localhost1 with automatic checkpoint. </code><br />
<code>test(admin) &gt; initialize localhost1 force </code><br />
<code>Virtual Database test has been successfully initialized from backend localhost1 </code><br />
<code>test(admin) &gt; enable localhost1 </code><br />
<code>Enabling backend localhost1 from its last known checkpoint </code><br />
<code>test(admin) &gt; show backend localhost1 </code><br />
<code>+--------------------------+----------------------------------+ </code><br />
<code>| Backend Name             | localhost1                       | </code><br />
<code>| Driver                   | com.mysql.jdbc.Driver            | </code><br />
<code>| URL                      | jdbc:mysql://localhost:3306/test | </code><br />
<code>| Active transactions      | 0                                | </code><br />
<code>| Pending Requests         | 0                                | </code><br />
<code>| Read Enabled             | true                             | </code><br />
<code>| Write Enabled            | true                             | </code><br />
<code>| Is Initialized           | true                             | </code><br />
<code>| Static Schema            | false                            | </code><br />
<code>| Connection Managers      | 2                                | </code><br />
<code>| Total Active Connections | 30                               | </code><br />
<code>| Persistent Connections   | 0                                | </code><br />
<code>| Total Requests           | 0                                | </code><br />
<code>| Total Transactions       | 0                                | </code><br />
<code>| Last known checkpoint    |                         | </code><br />
<code>+--------------------------+----------------------------------+ </code><br />
<code> </code><br />
<code>test(admin) &gt; show backend localhost2 </code><br />
<code>+--------------------------+----------------------------------+ </code><br />
<code>| Backend Name             | localhost2                       | </code><br />
<code>| Driver                   | com.mysql.jdbc.Driver            | </code><br />
<code>| URL                      | jdbc:mysql://localhost:3307/test | </code><br />
<code>| Active transactions      | 0                                | </code><br />
<code>| Pending Requests         | 0                                | </code><br />
<code>| Read Enabled             | true                             | </code><br />
<code>| Write Enabled            | true                             | </code><br />
<code>| Is Initialized           | true                             | </code><br />
<code>| Static Schema            | false                            | </code><br />
<code>| Connection Managers      | 2                                | </code><br />
<code>| Total Active Connections | 25                               | </code><br />
<code>| Persistent Connections   | 0                                | </code><br />
<code>| Total Requests           | 3                                | </code><br />
<code>| Total Transactions       | 0                                | </code><br />
<code>| Last known checkpoint    |                         | </code><br />
<code>+--------------------------+----------------------------------+ </code><br />
<code> </code><br />
<code>test(admin) &gt; show backend localhost2 </code><br />
<code>+--------------------------+----------------------------------+ </code><br />
<code>| Backend Name             | localhost2                       | </code><br />
<code>| Driver                   | com.mysql.jdbc.Driver            | </code><br />
<code>| URL                      | jdbc:mysql://localhost:3307/test | </code><br />
<code>| Active transactions      | 0                                | </code><br />
<code>| Pending Requests         | 0                                | </code><br />
<code>| Read Enabled             | true                             | </code><br />
<code>| Write Enabled            | true                             | </code><br />
<code>| Is Initialized           | true                             | </code><br />
<code>| Static Schema            | false                            | </code><br />
<code>| Connection Managers      | 2                                | </code><br />
<code>| Total Active Connections | 25                               | </code><br />
<code>| Persistent Connections   | 0                                | </code><br />
<code>| Total Requests           | 3                                | </code><br />
<code>| Total Transactions       | 0                                | </code><br />
<code>| Last known checkpoint    |                         | </code><br />
<code>+--------------------------+----------------------------------+ </code><br />
<code> </code><br />
<code>test(admin) &gt; disable localhost2 </code><br />
<code>Disabling backend localhost2 with automatic checkpoint. </code><br />
<code>test(admin) &gt; initialize localhost2 force </code><br />
<code>Virtual Database test has been successfully initialized from backend localhost2 </code><br />
<code>test(admin) &gt; enable localhost2 </code><br />
<code>Enabling backend localhost2 from its last known checkpoint </code><br />
<code>test(admin) &gt; disable localhost1 </code><br />
<code>Disabling backend localhost1 with automatic checkpoint. </code><br />
<code>test(admin) &gt; initialize localhost1 </code><br />
<code>Backend localhost2 is not in a disabled state (current state is enabled) </code><br />
<code>test(admin) &gt; disable localhost1 </code><br />
<code>Disabling backend localhost1 with automatic checkpoint. </code><br />
<code>test(admin) &gt; initialize localhost1 </code><br />
<code>Backend localhost2 is not in a disabled state (current state is enabled) </code><br />
<code>test(admin) &gt; initialize localhost1 force </code><br />
<code>Virtual Database test has been successfully initialized from backend localhost1 </code><br />
<code>test(admin) &gt; enable localhost1 </code><br />
<code>Enabling backend localhost1 from its last known checkpoint </code><br />
<code>test(admin) &gt; </code><br />
<code> </code><br />
<code> </code><br />
<code> </code><br />
<code>------------------------------&gt;  OUTPUT on CMD JAVA PROCESS EXECUTION WINDOW </code><br />
<code> </code><br />
<code>C:\Program Files\MySQL&gt;java -cp .;"c:\Program Files\MySQL\sequoia-driver.jar" Connect </code><br />
<code>Database connection established </code><br />
<code>id = 2, name = snake, category = reptile </code><br />
<code>id = 4, name = frog, category = amphibian </code><br />
<code>id = 6, name = tuna, category = fish </code><br />
<code>id = 8, name = racoon, category = mammal </code><br />
<code>4 rows were retrieved </code><br />
<code>Database connection terminated </code><br />
<code> </code><br />
<code> </code><br />
<code> </code><br />
<code>-------------------------------&gt; Here I inserted some rows directly in the database and reran the java program </code><br />
<code> </code><br />
<code> </code><br />
<code>C:\Program Files\MySQL&gt;java -cp .;"c:\Program Files\MySQL\sequoia-driver.jar" Connect </code><br />
<code>Database connection established </code><br />
<code>id = 2, name = snake, category = reptile </code><br />
<code>id = 4, name = frog, category = amphibian </code><br />
<code>id = 6, name = tuna, category = fish </code><br />
<code>id = 8, name = racoon, category = mammal </code><br />
<code>id = 10, name = darren, category = human </code><br />
<code>id = 12, name = michael, category = alien </code><br />
<code>6 rows were retrieved </code><br />
<code>Database connection terminated </code><br />
<code> </code><br />
<code> </code><br />
<code> </code><br />
<code>------------------------------&gt; The JAVA PROGRAM used, obtained from: http://www.kitebird.com/articles/jdbc.html : </code><br />
<code> </code><br />
<code> </code><br />
<code> import java.sql.*; </code><br />
<code> </code><br />
<code> public class Connect </code><br />
<code> { </code><br />
<code> public static void main (String[] args) </code><br />
<code> { </code><br />
<code> Connection conn = null; </code><br />
<code> </code><br />
<code> try </code><br />
<code> { </code><br />
<code> String userName = "admin"; </code><br />
<code> String password = ""; </code><br />
<code> String url = "jdbc:sequoia://127.0.0.1:25322/test?user=root"; </code><br />
<code> Class.forName ("org.continuent.sequoia.driver.Driver").newInstance (); </code><br />
<code> conn = DriverManager.getConnection (url,userName,password); </code><br />
<code> System.out.println ("Database connection established"); </code><br />
<code> </code><br />
<code> /* Uncomment the following at the first run so that it creates a table called animal and inserts a few rows in it. </code><br />
<code> */ </code><br />
<code> /* Statement s = conn.createStatement (); </code><br />
<code> int count; </code><br />
<code> s.executeUpdate ("DROP TABLE IF EXISTS animal"); </code><br />
<code> s.executeUpdate ( </code><br />
<code> "CREATE TABLE animal (" </code><br />
<code> + "id INT UNSIGNED NOT NULL AUTO_INCREMENT," </code><br />
<code> + "PRIMARY KEY (id)," </code><br />
<code> + "name CHAR(40), category CHAR(40))"); </code><br />
<code> count = s.executeUpdate ( </code><br />
<code> "INSERT INTO animal (name, category)" </code><br />
<code> + " VALUES" </code><br />
<code> + "('snake', 'reptile')," </code><br />
<code> + "('frog', 'amphibian')," </code><br />
<code> + "('tuna', 'fish')," </code><br />
<code> + "('racoon', 'mammal')"); </code><br />
<code> s.close (); </code><br />
<code> System.out.println (count + " rows were inserted");  : */ </code><br />
<code> </code><br />
<code> Statement s = conn.createStatement (); </code><br />
<code> s.executeQuery ("SELECT id, name, category FROM animal"); </code><br />
<code> ResultSet rs = s.getResultSet (); </code><br />
<code> int count = 0; </code><br />
<code> while (rs.next ()) </code><br />
<code> { </code><br />
<code> int idVal = rs.getInt ("id"); </code><br />
<code> String nameVal = rs.getString ("name"); </code><br />
<code> String catVal = rs.getString ("category"); </code><br />
<code> System.out.println ( </code><br />
<code> "id = " + idVal </code><br />
<code> + ", name = " + nameVal </code><br />
<code> + ", category = " + catVal); </code><br />
<code> ++count; </code><br />
<code> } </code><br />
<code> rs.close (); </code><br />
<code> s.close (); </code><br />
<code> System.out.println (count + " rows were retrieved"); </code><br />
<code> </code><br />
<code> </code><br />
<code> </code><br />
<code> } </code><br />
<code> catch (Exception e) </code><br />
<code> { </code><br />
<code> System.err.println ("Cannot connect to database server"); </code><br />
<code> // System.err.println (e); </code><br />
<code> e.printStackTrace(); </code><br />
<code> } </code><br />
<code> finally </code><br />
<code> { </code><br />
<code> if (conn != null) </code><br />
<code> { </code><br />
<code> try </code><br />
<code> { </code><br />
<code> conn.close (); </code><br />
<code> System.out.println ("Database connection terminated"); </code><br />
<code> } </code><br />
<code> catch (Exception e) { /* ignore close errors */ } </code><br />
<code> } </code><br />
<code> } </code><br />
<code> } </code><br />
<code> } </code><br />
<code> </code><br />
<code> </code><br />
<code> </code><br />
<code>------------------------------&gt; COMPILING / EXECUTING JAVA PROGRAM </code><br />
<code> </code><br />
download and install JDK<br />
compile: javac Connect.java<br />
execute: java -cp .;&#8221;c:\Program Files\MySQL\sequoia-driver.jar&#8221; Connect</p>
]]></content:encoded>
			<wfw:commentRss>http://mysqlpreacher.com/wordpress/2009/03/mysql-ha-quite-a-few-solutions-to-choose-from-here-is-a-look-at-sequoia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
