<?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>Andrew Morgan's MySQL Cluster Database Blog</title>
	<atom:link href="http://www.clusterdb.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.clusterdb.com</link>
	<description>MySQL Cluster database &#38; MySQL Replication</description>
	<lastBuildDate>Thu, 02 May 2013 16:10:51 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>MySQL Cluster Manager 1.2.3 Released</title>
		<link>http://www.clusterdb.com/mysql-cluster/mysql-cluster-manager-1-2-3-released/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mysql-cluster-manager-1-2-3-released</link>
		<comments>http://www.clusterdb.com/mysql-cluster/mysql-cluster-manager-1-2-3-released/#comments</comments>
		<pubDate>Thu, 02 May 2013 16:10:51 +0000</pubDate>
		<dc:creator>andrew</dc:creator>
				<category><![CDATA[MySQL Cluster]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[MySQL Cluster Manager]]></category>

		<guid isPermaLink="false">http://www.clusterdb.com/?p=2778</guid>
		<description><![CDATA[MySQL Cluster Manager 1.2.3 is now available to download from My Oracle Support. Details on the changes can be found in the MySQL Cluster Manager documentation . Documentation is available here.]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.clusterdb.com/wp-content/uploads/2010/11/MySQL-Cluster-Manager.jpg"><img class="alignright size-full wp-image-1352" title="MySQL Cluster Manager" src="http://www.clusterdb.com/wp-content/uploads/2010/11/MySQL-Cluster-Manager.jpg" alt="" width="205" height="141" /></a>MySQL Cluster Manager 1.2.3 is now available to <a href="https://support.oracle.com/" title="Download MySQL Cluster Manager" target="_blank">download from My Oracle Support</a>.</p>
<p>Details on the <a title="MySQL Cluster Manager - change history" href="http://dev.mysql.com/doc/relnotes/mysql-cluster-manager/1.2/en/mcm-news-1-2-3.html" target="_blank">changes can be found in the MySQL Cluster Manager documentation</a> .</p>
<p><a title="MySQL Cluster Manager documentation" href="http://dev.mysql.com/doc/mysql-cluster-manager/1.2/en/index.html" target="_blank">Documentation is available here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.clusterdb.com/mysql-cluster/mysql-cluster-manager-1-2-3-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Cluster 7.3 DMR2 &#8211; Includes MySQL Cluster Auto-Installer</title>
		<link>http://www.clusterdb.com/mysql-cluster/mysql-cluster-7-3-auto-installer/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mysql-cluster-7-3-auto-installer</link>
		<comments>http://www.clusterdb.com/mysql-cluster/mysql-cluster-7-3-auto-installer/#comments</comments>
		<pubDate>Wed, 17 Apr 2013 11:47:02 +0000</pubDate>
		<dc:creator>andrew</dc:creator>
				<category><![CDATA[MySQL Cluster]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[MySQL Cluster 7.3]]></category>

		<guid isPermaLink="false">http://www.clusterdb.com/?p=2725</guid>
		<description><![CDATA[The second Development Milestone Release for MySQL Cluster 7.3 has just been released &#8211; download it from the development tab on this page. Deploying a well configured cluster has just got a lot easier! Oracle have released a new auto-installer/configurator for MySQL Cluster that makes the processes extremely simple while making sure that the cluster [...]]]></description>
				<content:encoded><![CDATA[<p>The second Development Milestone Release for MySQL Cluster 7.3 has just been released &#8211; <a href="http://dev.mysql.com/downloads/cluster/#downloads" title="Download MySQL Cluster 7.3 Development Milestone Release - DMR2" target="_blank">download it from the development tab on this page</a>. </p>
<p>Deploying a well configured cluster has just got a lot easier! Oracle have released a new auto-installer/configurator for MySQL Cluster that makes the processes extremely simple while making sure that the cluster is well configured for your application. The installer is part of the latest MySQL Cluster 7.3 Development Milestone Release and so is not yet GA but it can also be used on MySQL Cluster 7.2 (which is GA). A single command launches the web-based wizard which then steps you through configuring the cluster; to keep things even simpler, it will automatically detect the resources on your target machines and use these results together with the type of workload you specify in order to determine values for the key configuration parameters.</p>
<p>For a broader view of what is being released &#8211; check out this <a title="MySQL Cluster 7.3 DMR2: Increasing Developer Flexibility and Simplicity" target="DMR2" href="http://dev.mysql.com/tech-resources/articles/cluster-7.3-dmr2.html">MySQL Cluster 7.3.1 DMR article</a>.</p>
<h3>Tutorial Video</h3>
<p>Before going through the detailed steps, here&#8217;s a demonstration of the auto-installer in action (note that this is actually an earlier version but the idea is the same)&#8230;</p>
<p><iframe width="500" height="375" src="http://www.youtube.com/embed/nYiIwgjcRWI?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<h3>Downloading and running the wizard</h3>
<p>The software can be downloaded as part of the MySQL Cluster package from the &#8220;Development Releases&#8221; tab at <a href="http://dev.mysql.com/downloads/cluster/#downloads" title="MySQL Development Milestone Release - download and try out upcoming MySQL software" target="_blank">MySQL Cluster DMR Download</a>. To run on Windows, just double click setup.bat &#8211; note that if you installed from the MSI and didn&#8217;t change the install directory then this will be located somewhere like C:\Program Files (x86)\MySQL\MySQL Cluster 7.3. On Linux, just run <span style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; color: #000080;">ndb_setup</span> from the <span style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; color: #000080;">bin</span> folder.</p>
<p>
If you launch the installer from a desktop environment then the first page of the wizard will automatically be opened in your web browser, if not then just browse to the URL that is displayed on the command line.</p>
<h3>Creating your cluster</h3>
<p><div id="attachment_2731" class="wp-caption alignright" style="width: 310px"><a href="http://www.clusterdb.com/wp-content/uploads/2013/04/Capture1.png"><img src="http://www.clusterdb.com/wp-content/uploads/2013/04/Capture1-300x244.png" alt="Figure 1 Specify hosts and application type" width="300" height="244" class="size-medium wp-image-2731" /></a><p class="wp-caption-text">Figure 1 Specify hosts and application type</p></div>After the initial splash-screen you’re presented with the page shown in Figure 1 where you specify the list of servers that will form part of the cluster.<br />
You also get to specify what &#8220;type&#8221; of cluster you want; if you&#8217;re experimenting for the first time then it&#8217;s probably safest to stick with &#8220;Simple testing&#8221; but for a production system you&#8217;d want to specify the application type and query profile, i.e. write-intensive.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><div id="attachment_2732" class="wp-caption alignright" style="width: 310px"><a href="http://www.clusterdb.com/wp-content/uploads/2013/04/Capture2.png"><img src="http://www.clusterdb.com/wp-content/uploads/2013/04/Capture2-300x244.png" alt="Figure 2 Auto-discovery of host resources" width="300" height="244" class="size-medium wp-image-2732" /></a><p class="wp-caption-text">Figure 2 Auto-discovery of host resources</p></div>On the next page (Figure 2), you will see the wizard attempt to auto-detect the resources on your target machines. If this fails (e.g. if you don’t have an accessible SSH server on the target hosts) then you can enter the data manually. You can also overwrite the resource-values &#8211; for example, if you don&#8217;t want the cluster to use up a big share of the memory on the target systems then just overwrite the amount of memory.</p>
<p>It&#8217;s also on this page that you can specify where the MySQL Cluster software is stored on each of the hosts (if the defaults aren&#8217;t correct) &#8211; this should be the path to where you extracted the MySQL Cluster tar-ball file &#8211; as well as where the data (and configuration files) should be stored. You can just overwrite the values or select multiple rows and hit the &#8220;edit&#8221; button.<br />
<div id="attachment_2733" class="wp-caption alignright" style="width: 310px"><a href="http://www.clusterdb.com/wp-content/uploads/2013/04/Capture5.png"><img src="http://www.clusterdb.com/wp-content/uploads/2013/04/Capture5-300x246.png" alt="Figure 3 Review Cluster topology" width="300" height="246" class="size-medium wp-image-2733" /></a><p class="wp-caption-text">Figure 3 Review Cluster topology</p></div>The following page (Figure 3) presents you with a default set of nodes (processes) and how they&#8217;ll be distributed across all of the target hosts &#8211; if you&#8217;re happy with the proposal then just advance to the next page. </p>
<p>Alternatively, you can add extra nodes, move nodes from one host to another (just drag and drop), delete nodes or change a node from one type to another.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><div id="attachment_2734" class="wp-caption alignright" style="width: 310px"><a href="http://www.clusterdb.com/wp-content/uploads/2013/04/Capture6.png"><img src="http://www.clusterdb.com/wp-content/uploads/2013/04/Capture6-300x243.png" alt="Figure 4 Review configuration parameters" width="300" height="243" class="size-medium wp-image-2734" /></a><p class="wp-caption-text">Figure 4 Review configuration parameters</p></div>On the next screen (Figure 4) you&#8217;re presented with some of the key configuration parameters that have been configured (behind the scenes, the installer sets many more) that you might want to override; if you&#8217;re happy then just progress to the next screen. If you do want to make any changes then make them here before continuing. Note that you can enable the advanced configuration option here in order to view/modify more parameters.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><div id="attachment_2735" class="wp-caption alignright" style="width: 310px"><a href="http://www.clusterdb.com/wp-content/uploads/2013/04/Capture9.png"><img src="http://www.clusterdb.com/wp-content/uploads/2013/04/Capture9-300x202.png" alt="Figure 5 Deploy the Cluster" width="300" height="202" class="size-medium wp-image-2735" /></a><p class="wp-caption-text">Figure 5 Deploy the Cluster</p></div>With the click of a button, the final screen (Figure 5) lets you deploy (copy the correct configuration settings to the hosts and create the directory structures) and start the Cluster.</p>
<p>If you prefer or need to start the processes manually, this page also shows you the commands that you&#8217;d need to run (as well as the configuration files if you need to create them manually).</p>
<p>A traffic light display shows the various Cluster nodes (processes) coming into service.</p>
<p>&nbsp;</p>
<p><div id="attachment_2736" class="wp-caption alignright" style="width: 310px"><a href="http://www.clusterdb.com/wp-content/uploads/2013/04/CaptureA.png"><img src="http://www.clusterdb.com/wp-content/uploads/2013/04/CaptureA-300x202.png" alt="Figure 6: Confirm that all nodes are running" width="300" height="202" class="size-medium wp-image-2736" /></a><p class="wp-caption-text">Figure 6: Confirm that all nodes are running</p></div>Finally, you can confirm that all of the processes (nodes) are up and running (note that any API slots that don&#8217;t have MySQL Servers using them won&#8217;t show as running &#8211; that&#8217;s as expected):</p>
<p>As always it would be great to hear some feedback especially if you&#8217;ve ideas on improving it or if you hit any problems.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.clusterdb.com/mysql-cluster/mysql-cluster-7-3-auto-installer/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Foreign Keys in MySQL Cluster</title>
		<link>http://www.clusterdb.com/mysql-cluster/foreign-keys-in-mysql-cluster/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=foreign-keys-in-mysql-cluster</link>
		<comments>http://www.clusterdb.com/mysql-cluster/foreign-keys-in-mysql-cluster/#comments</comments>
		<pubDate>Wed, 17 Apr 2013 11:46:03 +0000</pubDate>
		<dc:creator>andrew</dc:creator>
				<category><![CDATA[MySQL Cluster]]></category>
		<category><![CDATA[Foreign Keys]]></category>
		<category><![CDATA[MySQL Cluster CGE]]></category>

		<guid isPermaLink="false">http://www.clusterdb.com/?p=2298</guid>
		<description><![CDATA[The newly announced second MySQL Cluster 7.3 Development Milestone Release (7.3.1 m2) builds upon first DMR (7.3.0 m1) released last year which added Foreign Keys to MySQL Cluster. Foreign Keys is a feature requested by many, many people and has often been cited as the reason for not being able to replace InnoDB with MySQL [...]]]></description>
				<content:encoded><![CDATA[<div id="attachment_2304" class="wp-caption alignright" style="width: 310px"><a href="http://www.clusterdb.com/wp-content/uploads/2012/05/FK_Relationship.png"><img class="size-medium wp-image-2304" title="Foreign Key Constraints" src="http://www.clusterdb.com/wp-content/uploads/2012/05/FK_Relationship-300x103.png" alt="Foreign Key constraints between tables" width="300" height="103" /></a><p class="wp-caption-text">Foreign Key constraints between tables</p></div>
<p>The newly announced second MySQL Cluster 7.3 Development Milestone Release (7.3.1 m2) builds upon first DMR (7.3.0 m1) released last year which added Foreign Keys to MySQL Cluster. Foreign Keys is a feature requested by many, many people and has often been cited as the reason for not being able to replace InnoDB with MySQL Cluster when they needed the extra availability or scalability. While this functionality is not yet Generally Available (i.e. you shouldn&#8217;t deploy your application on it yet) you can can try it out by downloading the binaries from <a title="Download MySQL Cluster Foreign Keys in MySQL Cluster 7.3 DMR load" href="http://dev.mysql.com/downloads/cluster/" target="_blank">http://dev.mysql.com/downloads/cluster/</a> and selecting the &#8220;Development Releases&#8221; tab. Please let us have your feedback so that we know what to improve.</p>
<p>For a broader view of what is being released &#8211; check out this <a title="MySQL Cluster 7.3 DMR2: Increasing Developer Flexibility and Simplicity" target="DMR2" href="http://dev.mysql.com/tech-resources/articles/cluster-7.3-dmr2.html">MySQL Cluster 7.3.1 DMR article</a>.</p>
<p>Note that this post is an up-version of the original &#8211; and was first published with the 7.3 labs release in June 2012.</p>
<h3>What&#8217;s a Foreign Key</h3>
<p>The majority of readers who are already familiar with Foreign Keys can skip to the next section.</p>
<p>Foreign Keys are a way of implementing relationships/constraints between columns in different tables. For example, in the above figure, we want to make sure that the value of the <span style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; color: #000080;">county</span> column in the towns table has an associated entry in the <span style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; color: #000080;">counties</span> table. In this way, no-one can place a town in a non-existent county and similarly no one can remove a county and leave orphaned towns behind.</p>
<p>We refer to the towns table as the <em>child</em> and the counties table as the <em>parent</em>.</p>
<p>There are different categories of constraints that influence how they&#8217;re enforced when a row is updated or deleted from the parent table:</p>
<ul>
<li><strong>Cascade</strong>: If a row is deleted from the parent then any rows in the child table with a matching FK value will also be deleted. Similarly for changes to the value in the parent table.</li>
<li><strong>Restrict</strong>: A row cannot be deleted from the parent table if this would break a FK constraint with the child table. Similarly for changes to the value in the parent table.</li>
<li><strong>No Action</strong>: Very similar to &#8220;Restrict&#8221; except that any events/triggers on the parent table will be executed before the constraint is enforced &#8211; giving the application writer the option to resolve any FK constraint conflicts using a stored procedure.</li>
<li><strong>Set NULL</strong>: If NULL is a permitted value for the FK column in the child table then it will be set to NULL if the associated data in the parent table is updated or deleted.</li>
<li><strong>Set Default</strong>: If there is a default value for the FK column in the child table then it will be used if the associated data in the parent table is updated or deleted. Note that this is not implemented in this version &#8211; the constraint can be added to the schema but any subsequent deletion or update to the column in the parent table will fail.</li>
</ul>
<h3>How to use Foreign Keys with MySQL Cluster</h3>
<p>For anyone familiar with using FKs with InnoDB, a lot of this will be very similar &#8211; that&#8217;s intentional in the design of this Cluster feature. Throughout this section we will use the tables shown in the above figure.</p>
<p>First of all, create the tables and add some data:</p>
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; padding-left: 30px; color: #000080;">mysql&gt; CREATE DATABASE clusterdb;USE clusterdb;
mysql&gt; CREATE TABLE counties (county VARCHAR(30) NOT NULL PRIMARY KEY, country VARCHAR(30))
  ENGINE=ndb;
mysql&gt; INSERT INTO counties VALUES ('Berkshire','England'),('Shropshire','England'),
  ('Oxfordshire','England'),('Buckinghamshire','England');
mysql&gt; CREATE TABLE towns (town VARCHAR(30) NOT NULL PRIMARY KEY, county VARCHAR(30),
  INDEX county_county_index (county), <strong>CONSTRAINT county_town FOREIGN KEY (county) 
  REFERENCES counties(county) ON DELETE RESTRICT ON UPDATE RESTRICT</strong>) ENGINE=ndb;
mysql&gt; INSERT INTO towns VALUES ('Maidenhead','Berkshire'),('Reading','Berkshire'),
  ('Shrewsbury','Shropshire'),('Oxford','Oxfordshire');
mysql&gt; SELECT * FROM counties;SELECT * FROM towns;
+-----------------+---------+
| county          | country |
+-----------------+---------+
| Shropshire      | England |
| Buckinghamshire | England |
| Berkshire       | England |
| Oxfordshire     | England |
+-----------------+---------+
4 rows in set (0.00 sec)

+------------+-------------+
| town       | county      |
+------------+-------------+
| Reading    | Berkshire   |
| Shrewsbury | Shropshire  |
| Maidenhead | Berkshire   |
| Oxford     | Oxfordshire |
+------------+-------------+
4 rows in set (0.00 sec)</pre>
<p>Note that the FK is actually defined as part of creating the towns table with <span style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; color: #000080;">CONSTRAINT county_town FOREIGN KEY (county) REFERENCES counties(county) ON DELETE RESTRICT ON UPDATE RESTRICT</span>. <span style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; color: #000080;">county_town</span> is the label assigned to the constraint (if you don&#8217;t specify one then one will be automatically created &#8211; you can see it by executing <span style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; color: #000080;">SHOW CREATE TABLE towns</span>). The constraint is set up from the <span style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; color: #000080;">county</span> column in the <span style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; color: #000080;">towns</span> (child) table to the <span style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; color: #000080;">county</span> column in the <span style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; color: #000080;">counties</span> (parent) table.</p>
<p>As a first check, we can confirm that values that are not part of the constraint can be modified in the parent table &#8211; in this case we&#8217;ll move the England/Wales border:</p>
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; padding-left: 30px; color: #000080;">mysql&gt; UPDATE counties SET country='WALES' WHERE county='Shropshire';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0</pre>
<p>Next, to illustrate the kind of user error that can be prevented, we attempt to add a town in a county that has not yet been defined &#8211; we want this to fail as it would break the constraint we created:</p>
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; padding-left: 30px; color: #000080;">mysql&gt; INSERT towns VALUES ('Cambridge','Cambridgeshire');
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails
  (Unknown error code)
mysql&gt; SHOW WARNINGS;
+---------+------+---------------------------------------------------------------------------------------+
| Level   | Code | Message                                                                               |
+---------+------+---------------------------------------------------------------------------------------+
| Warning | 1296 | Got error 255 'Foreign key constaint violated: No parent row found' from NDB          |
| Error   | 1452 | Cannot add or update a child row: a foreign key constraint fails (Unknown error code) |
+---------+------+---------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)</pre>
<p>We can also confirm that the constraint checking works in the opposite direction, by attempting to delete a county that has towns defined for it:</p>
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; padding-left: 30px; color: #000080;">mysql&gt; DELETE FROM counties WHERE county='Berkshire';
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (Unknown error code)
mysql&gt; SHOW WARNINGS;
+---------+------+-------------------------------------------------------------------------------------------+
| Level   | Code | Message                                                                                   |
+---------+------+-------------------------------------------------------------------------------------------+
| Warning | 1296 | Got error 256 'Foreign key constaint violated: Referenced row exists' from NDB            |
| Error   | 1451 | Cannot delete or update a parent row: a foreign key constraint fails (Unknown error code) |
+---------+------+-------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)</pre>
<p>It is also possible to delete FK constraints and add new ones, we do that next and at the same time we&#8217;ll switch to a <span style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; color: #000080;">CASCADE</span> restriction. Note that adding and deleting FKs are on-line operations. In case you have forgotten the name of the constraint (or we had not explicitly named it) we can use the <span style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; color: #000080;">SHOW CREATE TABLE</span> command to remind us:</p>
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; padding-left: 30px; color: #000080;">mysql&gt; SHOW CREATE TABLE towns;
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                                                                                                                                 |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| towns | CREATE TABLE `towns` (
  `town` varchar(30) NOT NULL,
  `county` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`town`),
  KEY `county_county_index` (`county`),
CONSTRAINT <strong>`county_town`</strong> FOREIGN KEY(`county`) REFERENCES `counties` (`county`)
  ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql&gt; ALTER TABLE towns DROP FOREIGN KEY county_town;
Query OK, 0 rows affected (0.47 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql&gt; ALTER TABLE towns ADD CONSTRAINT county_town FOREIGN KEY (county)
  REFERENCES counties(county) ON DELETE CASCADE ON UPDATE CASCADE;</pre>
<p>The data in the tables will not have changed as part of dropping and adding constraints and so you can always <span style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; color: #000080;">DROP</span> and the re-add constraints if you need to turn FKs off for a while:</p>
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; padding-left: 30px; color: #000080;">mysql&gt; SELECT * FROM counties;SELECT * FROM towns;
+-----------------+---------+
| county          | country |
+-----------------+---------+
| Buckinghamshire | England |
| Berkshire       | England |
| Oxfordshire     | England |
| Shropshire      | WALES   |
+-----------------+---------+
4 rows in set (0.00 sec)

+------------+-------------+
| town       | county      |
+------------+-------------+
| Reading    | Berkshire   |
| Shrewsbury | Shropshire  |
| Maidenhead | Berkshire   |
| Oxford     | Oxfordshire |
+------------+-------------+
4 rows in set (0.00 sec)</pre>
<p>Now if we delete the county of Berkshire then the CASCADE option will cause all of the associated towns to be deleted too:</p>
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; padding-left: 30px; color: #000080;">mysql&gt; DELETE FROM counties WHERE county='Berkshire';
Query OK, 1 row affected (0.00 sec)

mysql&gt; SELECT * FROM counties;SELECT * FROM towns;
+-----------------+---------+
| county          | country |
+-----------------+---------+
| Shropshire      | WALES   |
| Buckinghamshire | England |
| Oxfordshire     | England |
+-----------------+---------+
3 rows in set (0.00 sec)

+------------+-------------+
| town       | county      |
+------------+-------------+
| Shrewsbury | Shropshire  |
| Oxford     | Oxfordshire |
+------------+-------------+
2 rows in set (0.00 sec)</pre>
<p>Note that MySQL Cluster implements FKs in the data nodes and the constraints will be enforced regardless of how the data is written (through SQL, javascript, Memcached, ClusterJ, REST or directly through the NDB API). Before illustrating this, we add back the data we have just deleted:</p>
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; padding-left: 30px; color: #000080;">mysql&gt; INSERT INTO counties VALUES ('Berkshire','England');
Query OK, 1 row affected (0.00 sec)

mysql&gt; INSERT INTO towns VALUES ('Maidenhead','Berkshire'),('Reading','Berkshire');
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql&gt; SELECT * FROM counties;SELECT * FROM towns;
+-----------------+---------+
| county          | country |
+-----------------+---------+
| Shropshire      | WALES   |
| Buckinghamshire | England |
| Berkshire       | England |
| Oxfordshire     | England |
+-----------------+---------+
4 rows in set (0.00 sec)

+------------+-------------+
| town       | county      |
+------------+-------------+
| Reading    | Berkshire   |
| Shrewsbury | Shropshire  |
| Maidenhead | Berkshire   |
| Oxford     | Oxfordshire |
+------------+-------------+
4 rows in set (0.00 sec)</pre>
<p>We&#8217;ll then run a simple C++ app to delete the &#8216;Berkshire&#8217; row from the <span style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; color: #000080;">counties</span> table. The <a title="Example code for testing Foreign Key constraint enforcement through the NDB API" href="http://clusterdb.com/upload/testfk.cpp" target="_blank">full source for the app is available here</a> but the key part of the code is this:</p>
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; padding-left: 30px; color: #000080;">static void do_change(Ndb &amp;myNdb)
{
const NdbDictionary::Dictionary* myDict= myNdb.getDictionary();
const NdbDictionary::Table *countiesTable= myDict-&gt;getTable("counties");

char royalBorough[255];
royalBorough[0]=9;
strcpy(royalBorough + 1, "Berkshire");

if (countiesTable == NULL)
APIERROR(myDict-&gt;getNdbError());

NdbTransaction *myTransaction= myNdb.startTransaction();
if (myTransaction == NULL) APIERROR(myNdb.getNdbError());

NdbOperation *myOperation= myTransaction-&gt;getNdbOperation(countiesTable);
if (myOperation == NULL) APIERROR(myTransaction-&gt;getNdbError());

std::cout &lt;&lt; "About to delete " &lt;&lt; royalBorough &lt;&lt; "\n";

<strong>myOperation-&gt;deleteTuple(); </strong></pre>
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; padding-left: 30px; color: #000080;"><strong>myOperation-&gt;equal("county", (const char *) royalBorough);</strong>

if (myTransaction-&gt;execute( NdbTransaction::Commit ) == -1)
APIERROR(myTransaction-&gt;getNdbError());

myNdb.closeTransaction(myTransaction);
}</pre>
<p>We then run this code and confirm that the cascaded delete has worked:</p>
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; padding-left: 30px; color: #000080;">billy@ws2:~/projects/fk$ ./testfk localhost:1186
About to delete         Berkshire

mysql&gt; SELECT * FROM counties;SELECT * FROM towns;
+-----------------+---------+
| county          | country |
+-----------------+---------+
| Shropshire      | WALES   |
| Buckinghamshire | England |
| Oxfordshire     | England |
+-----------------+---------+
3 rows in set (0.00 sec)

+------------+-------------+
| town       | county      |
+------------+-------------+
| Shrewsbury | Shropshire  |
| Oxford     | Oxfordshire |
+------------+-------------+
2 rows in set (0.00 sec)</pre>
<h3>Comparison with InnoDB&#8217;s Foreign Keys</h3>
<p>As mentioned, we&#8217;ve attempted to mirror the way that InnoDB works as much as possible in the way that it implements Foreign Keys as that&#8217;s what we think will allow people to move more easily to MySQL Cluster when appropriate. There are a couple of exceptions though:</p>
<ul>
<li>InnoDB doesn&#8217;t support &#8220;No Action&#8221; constraints, MySQL Cluster does</li>
<li>You can choose to suspend FK constraint enforcement with InnoDB using the <span style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; color: #000080;">FOREIGN_KEY_CHECKS</span> parameter; MySQL Cluster ignores that parameter. This causes issues as some tools rely on this in order to avoid needing to define FKs and/or populate data in the correct order &#8211; examples are database restore and adding multiple FKs using MySQL Workbench. This is something to be addressed in the GA version.</li>
<li>You cannot set up FKs between 2 tables where one is stored using MySQL Cluster and the other InnoDB.</li>
<li>You cannot change primary keys through the NDB API which means that the MySQL Server actually has to simulate such operations by deleting and re-adding the row. If the PK in the parent table has a FK constraint on it then this causes non-ideal behaviour. With <span style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; color: #000080;">Restrict</span> or <span style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; color: #000080;">No Action</span> constraints, the change will result in an error. With Cascaded constraints, you&#8217;d want the rows in the child table to be updated with the new FK value but, the implicit delete of the row from the parent table would remove the associated rows from the child table and the subsequent implicit insert into the parent wouldn&#8217;t reinstate the child rows. For this reason, an attempt to add an <span style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; color: #000080;">ON UPDATE CASCADE</span> where the parent column is a primary key will be rejected.</li>
</ul>
<h3>MySQL Workbench</h3>
<p><div id="attachment_2567" class="wp-caption alignright" style="width: 310px"><a href="http://www.clusterdb.com/wp-content/uploads/2012/09/WB-ndb-FKs-full.png"><img src="http://www.clusterdb.com/wp-content/uploads/2012/09/WB-ndb-FKs-full-300x208.png" alt="Viewing &amp; updating Foreign Key Constraints in MySQL Workbench" title="Viewing &amp; updating Foreign Key Constraints in MySQL Workbench" width="300" height="208" class="size-medium wp-image-2567" /></a><p class="wp-caption-text">Viewing and updating Foreign Key Constraints in MySQL Workbench</p></div>While not really the subject of this post, MySQL Workbench is a great tool for database developers and one of the features is the creation, modification and reverse engineering of schemas. For example, you could import your existing schema, add a new table and then introduce a FK constraint between an existing table and your new one. Previously, WorkBench would only allow you to play with FKs for InnoDB tables; this has now been extended to allow MySQL Cluster (NDB) tables. <strong>Note:</strong> as mentioned above, there is an issue with adding multiple FK constraints with MySQL WB in this DMR &#8211; this will be addressed.</p>
<h3>Closing remarks</h3>
<p>This DMR gives you a look at this important new feature that the MySQL engineering team have been working on. We believe that this is going to enable a whole new set of applications exploit the advantages of MySQL Cluster (on-line scalability, real-time performance, NoSQL APIs, real-time performance, on-line schema changes,&#8230;) either because:</p>
<ul>
<li>they want to simplify their application by pushing these referential checks down into the database &#8211; letting the developer focus more of their time on extending the application;</li>
<li>because they&#8217;re stuck with 3rd party middleware that is dependent on FKs</li>
<li>or that the application is already so dependent on FKs that it would be too much pain to remove them.</li>
</ul>
<p>It is important to note that this software <strong>is not production ready</strong> and you should be using MySQL Cluster 7.2 for any live deployments.</p>
<p>If you are new to MySQL Cluster then here are some useful resources to get you started:</p>
<ul>
<li><a href="http://www.clusterdb.com/mysql-cluster/mysql-cluster-7-3-auto-installer" title="MySQL Cluster Auto-Installer; browser based GUI to get a well configured cluster up and running within minutes" target="_blank">MySQL Cluster Auto-Installer; browser based GUI to get a well configured cluster up and running within minutes</a> </li>
<li><a href="https://www.mysql.com/why-mysql/white-papers/mysql_cluster_eval_guide.php" title="Get the most out of your MySQL Cluster evaluation" target="_blank">Get the most out of your MySQL Cluster evaluation</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.clusterdb.com/mysql-cluster/foreign-keys-in-mysql-cluster/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>MySQL Cluster 7.2.12 Released</title>
		<link>http://www.clusterdb.com/mysql-cluster/mysql-cluster-7-2-12-released/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mysql-cluster-7-2-12-released</link>
		<comments>http://www.clusterdb.com/mysql-cluster/mysql-cluster-7-2-12-released/#comments</comments>
		<pubDate>Thu, 28 Mar 2013 10:17:09 +0000</pubDate>
		<dc:creator>andrew</dc:creator>
				<category><![CDATA[MySQL Cluster]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[MySQL Cluster 7.2]]></category>

		<guid isPermaLink="false">http://www.clusterdb.com/?p=2715</guid>
		<description><![CDATA[The binary version for MySQL Cluster 7.2.12 has now been made available at http://www.mysql.com/downloads/cluster/ (GPL version) and should soon be available at https://support.oracle.com/ (commercial version). A description of all of the changes (fixes) that have gone into MySQL Cluster 7.2.12 (compared to 7.2.10) is available from the 7.2.12 Change log.]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.clusterdb.com/wp-content/uploads/2010/02/mysql-cluster-logo-150x105.png"><img class="alignright size-full  wp-image-919" title="mysql-cluster-logo-150x105" src="http://www.clusterdb.com/wp-content/uploads/2010/02/mysql-cluster-logo-150x105.png" alt="" width="150" height="105" /></a> The binary version for MySQL Cluster 7.2.12 has now been made available at <a href="http://www.mysql.com/downloads/cluster/" target="_blank">http://www.mysql.com/downloads/cluster/</a> (GPL version) and should soon be available at <a href="https://support.oracle.com/" target="_blank">https://support.oracle.com/</a> (commercial version).</p>
<p>A description of all of the changes (fixes) that have gone into MySQL Cluster 7.2.12 (compared to 7.2.10) is available from the <a title="MySQL Cluster 7.2.12 Release Notes" href="http://dev.mysql.com/doc/relnotes/mysql-cluster/7.2/en/mysql-cluster-news-5-5-30-ndb-7-2-12.html" target="_blank">7.2.12 Change log</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.clusterdb.com/mysql-cluster/mysql-cluster-7-2-12-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL 5.6 Replication Webinar</title>
		<link>http://www.clusterdb.com/mysql-replication/mysql-5-6-replication-webinar/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mysql-5-6-replication-webinar</link>
		<comments>http://www.clusterdb.com/mysql-replication/mysql-5-6-replication-webinar/#comments</comments>
		<pubDate>Tue, 26 Mar 2013 09:48:42 +0000</pubDate>
		<dc:creator>andrew</dc:creator>
				<category><![CDATA[MySQL Replication]]></category>
		<category><![CDATA[5.6]]></category>
		<category><![CDATA[HA]]></category>
		<category><![CDATA[High Availability]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.clusterdb.com/?p=2712</guid>
		<description><![CDATA[Update &#8211; the recording of this webinar is now available here. This Wednesday (27th March) Mat Keep and I will be presenting a free, live webinar on MySQL 5.6 Replication. You need to register here ahead of the webinar &#8211; worth doing even if you can&#8217;t attend as you&#8217;ll then be sent a link to [...]]]></description>
				<content:encoded><![CDATA[<p><strong>Update &#8211; the <a href="http://event.on24.com/eventRegistration/EventLobbyServlet?target=lobby.jsp&#038;eventid=594173&#038;sessionid=1&#038;key=674D0FF3C19682A7A63A88ED142C7020&#038;eventuserid=78563505" title="MySQL 5.6 webinar recording" target="_blank">recording of this webinar is now available here</a>.</strong></p>
<p>This Wednesday (27th March) Mat Keep and I will be presenting a free, live webinar on MySQL 5.6 Replication. You need to <a href="http://www.mysql.com/news-and-events/web-seminars/mysql-5-6-replication-enabling-next-generation-of-web-mobile-social-and-cloud-services/" target="_blank">register here</a> ahead of the webinar &#8211; worth doing even if you can&#8217;t attend as you&#8217;ll then be sent a link to the replay when it&#8217;s available. We&#8217;ll also have some of the key MySQL replication developers on-line to answer your questions and so it&#8217;s also a great chance to get some free consultancy <img src='http://www.clusterdb.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h3>Details&#8230;.</h3>
<p>Join this session to learn how the new replication features in MySQL 5.6 enable developers and DBAs to build and scale next generation services using the world&#8217;s most popular open source database. MySQL 5.6 delivers new replication capabilities which we will discuss and demonstrate in the webinar:</p>
<ul>
<li>High performance with Binary Log Group Commit, Multi-Threaded Slaves and Optimized Row Based Replication</li>
<li>High availability with Global Transaction Identifiers, Failover Utilities and Crash Safe Slaves &#038; Binlog</li>
<li>Data integrity with Replication Event Checksums<br />
Dev/Ops agility with new Replication Utilities, Time Delayed Replication and more</li>
</ul>
<p>The session will wrap up with resources to get started with MySQL 5.6.</p>
<p>WHEN:<br />
Wed, Mar 27: 07:00 Pacific time (America)<br />
Wed, Mar 27: 08:00 Mountain time (America)<br />
Wed, Mar 27: 09:00 Central time (America)<br />
Wed, Mar 27: 10:00 Eastern time (America)<br />
Wed, Mar 27: 14:00 UTC<br />
Wed, Mar 27: 14:00 Western European time<br />
Wed, Mar 27: 15:00 Central European time<br />
Wed, Mar 27: 16:00 Eastern European time<br />
Wed, Mar 27: 19:30 India, Sri Lanka<br />
Wed, Mar 27: 22:00 Singapore/Malaysia/Philippines time<br />
Wed, Mar 27: 22:00 China time<br />
Wed, Mar 27: 23:00 日本<br />
Thu, Mar 28: 01:00 NSW, ACT, Victoria, Tasmania (Australia) </p>
<p>The presentation will be approximately 60 minutes long. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.clusterdb.com/mysql-replication/mysql-5-6-replication-webinar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL 5.6 GA &#8211; Replication Enhancements</title>
		<link>http://www.clusterdb.com/mysql-replication/mysql-5-6-ga-replication-enhancements/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mysql-5-6-ga-replication-enhancements</link>
		<comments>http://www.clusterdb.com/mysql-replication/mysql-5-6-ga-replication-enhancements/#comments</comments>
		<pubDate>Tue, 05 Feb 2013 13:05:44 +0000</pubDate>
		<dc:creator>andrew</dc:creator>
				<category><![CDATA[MySQL Replication]]></category>
		<category><![CDATA[High Availability]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[MySQL 5.6]]></category>

		<guid isPermaLink="false">http://www.clusterdb.com/?p=2684</guid>
		<description><![CDATA[MySQL 5.6 has now been declared Generally Available (i.e. suitable for production use). This is a very exciting release from a MySQL replication perspective with some big new features. These include: Global Transaction Identifiers (GTIDs) &#8211; a unique identifier that is used accross your replication topology to identify a transaction. Makes setting up and managing [...]]]></description>
				<content:encoded><![CDATA[<p><div id="attachment_2687" class="wp-caption alignright" style="width: 304px"><a href="http://www.clusterdb.com/wp-content/uploads/2013/02/MTS.png"><img src="http://www.clusterdb.com/wp-content/uploads/2013/02/MTS-294x300.png" alt="Multi-Threaded Slave" width="294" height="300" class="size-medium wp-image-2687" /></a><p class="wp-caption-text">Multi-Threaded Slave</p></div>MySQL 5.6 has now been declared Generally Available (i.e. suitable for production use). This is a very exciting release from a MySQL replication perspective with some big new features. These include:</p>
<ul>
<li><strong>Global Transaction Identifiers (GTIDs)</strong> &#8211; a unique identifier that is used accross your replication topology to identify a transaction. Makes setting up and managing your cluster (including the promotion of a new master) far simpler and more reliable.
</li>
<li><strong>Multi-threaded slaves (MTS)</strong> &#8211; Increases the performance of replication on the slave; different threads will handle applying events to different databases.</li>
<li><strong>Binary Log Group Commit</strong> &#8211; Improves replication performance on the master.</li>
<li><strong>Optimized Row Based Replication</strong> &#8211; reduces the amount of data that needs to be replicated; reducing network usage and potentially speeding up replication.</li>
<li><strong>Crash-Safe Replication</strong> &#8211; makes replication transactional. The data and replication positioning information are both updated as part of the same transaction.</li>
<li><strong>Replication Event Checksums</strong> &#8211; checks to ensure that the data being replicated hasn&#8217;t become corrupted, avoids writing corrupted data to the slave.</li>
<li><strong>Time-Delayed Replication</strong> &#8211; configure one or more of your slaves to only apply replicated events after a configured time. This can be useful to protect against DBA mistakes.</li>
<li><strong>Informational Logs</strong> &#8211; includes the original statement in the binary log when using row-based-replication to aid in debugging.</li>
</ul>
<p>To coincide with the GA announcement, a new white paper has been released &#8211; <a href="http://www.mysql.com/why-mysql/white-papers/mysql-replication-introduction" title="MySQL 5.6 Replication - An Introduction" target="_blank">MySQL 5.6 Replication An Introduction</a> &#8211; that provides a lot more details on these new features. We&#8217;ve also released a second white paper &#8211; <a href="http://www.mysql.com/why-mysql/white-papers/mysql-replication-tutorial" title="MySQL 5.6 Replication Enhancing Scalability and Availability – A Tutorial" target="_blank">MySQL 5.6 Replication, Enhancing Scalability and Availability &#8211; A Tutorial</a> that steps you through using MySQL Replication, with a particular focus on the new features.</p>
<p>If you&#8217;re already familiar with using MySQL Replication, here are a few pointers on what to do differently for the new MySQL 5.6 features but you should refer to the <a href="http://www.mysql.com/why-mysql/white-papers/mysql-replication-tutorial" title="MySQL 5.6 Replication Enhancing Scalability and Availability – A Tutorial" target="_blank">full tutorial</a> to see these changes in context.</p>
<p>First of all, here are some extra configuration parameters to include&#8230;</p>
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; padding-left: 30px; color: #000080;">
[mysqld]
gtid-mode=on				# GTID
enforce-gtid-consistency=true		# GTID
master-info-repository=TABLE            # Chrash-safe replication
relay-log-info-repository=TABLE         # Chrash-safe replication
slave-parallel-workers=2                # MTS
binlog-checksum=CRC32                   # Checksums
master-verify-checksum=1                # Checksums
slave-sql-verify-checksum=1             # Checksums
binlog-rows-query-log_events=1          # Informational logs
</pre>
<p>When initiating (or restarting) replication on the slave, it is no longer necessary to include the binary log positioning information as the master and slave will automatically negotiate what outstanding events need to be replicated based on any GTIDs previously received by the slave&#8230;</p>
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; padding-left: 30px; color: #000080;">
slave> CHANGE MASTER TO MASTER_HOST='black', 
                        MASTER_USER='repl_user', 
                        MASTER_PASSWORD='billy', 
                        MASTER_AUTO_POSITION=1;
</pre>
<p>Please try out these new features and let us know what you think.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.clusterdb.com/mysql-replication/mysql-5-6-ga-replication-enhancements/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MySQL Presentations from FOSDEM 2013</title>
		<link>http://www.clusterdb.com/mysql-cluster/fosdem2013/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=fosdem2013</link>
		<comments>http://www.clusterdb.com/mysql-cluster/fosdem2013/#comments</comments>
		<pubDate>Mon, 04 Feb 2013 08:58:39 +0000</pubDate>
		<dc:creator>andrew</dc:creator>
				<category><![CDATA[MySQL Cluster]]></category>
		<category><![CDATA[fosdem]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[NoSQL]]></category>

		<guid isPermaLink="false">http://www.clusterdb.com/?p=2678</guid>
		<description><![CDATA[The Free and Open source Software Developers’ European Meeting (FOSDEM) is a two-day event organized by volunteers to promote the widespread use of Free and Open Source software. I attended for the first time over the weekend and was really impressed by the number of people there, the energy and the quality of the content. [...]]]></description>
				<content:encoded><![CDATA[<p><div id="attachment_2670" class="wp-caption alignright" style="width: 136px"><a href="https://fosdem.org/2013/"><img src="http://www.clusterdb.com/wp-content/uploads/2013/01/about.png" alt="FOSDEM 2013" width="126" height="124" class="size-full wp-image-2670" /></a><p class="wp-caption-text">FOSDEM 2013</p></div>The Free and Open source Software Developers’ European Meeting (FOSDEM) is a two-day event organized by volunteers to promote the widespread use of Free and Open Source software.</p>
<p>I attended for the first time over the weekend and was really impressed by the number of people there, the energy and the quality of the content. The event really lives up to it&#8217;s name and is very developer-focused.</p>
<p>In the end, I got the opportunity to make 2 presentations. The first is a general introduction to MySQL Cluster&#8230;.</p>
<iframe src="http://www.slideshare.net/slideshow/embed_code/16335451" width="600" height="489" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe><br/><br/>
<p>The second illustrates how you can realise the benefits promised by NoSQL data stores wihtout losing the consistency and flexibility of relational databases&#8230;</p>
<iframe src="http://www.slideshare.net/slideshow/embed_code/16335512" width="600" height="489" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe><br/><br/>
]]></content:encoded>
			<wfw:commentRss>http://www.clusterdb.com/mysql-cluster/fosdem2013/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>&#8220;MySQL &amp; Friends devroom&#8221; at FOSDEM 2013</title>
		<link>http://www.clusterdb.com/mysql-cluster/mysql-friends-devroom-at-fosdem-2013/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mysql-friends-devroom-at-fosdem-2013</link>
		<comments>http://www.clusterdb.com/mysql-cluster/mysql-friends-devroom-at-fosdem-2013/#comments</comments>
		<pubDate>Fri, 18 Jan 2013 09:00:09 +0000</pubDate>
		<dc:creator>andrew</dc:creator>
				<category><![CDATA[MySQL Cluster]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[MySQL 5.6]]></category>
		<category><![CDATA[MySQL Cluster CGE]]></category>

		<guid isPermaLink="false">http://www.clusterdb.com/?p=2669</guid>
		<description><![CDATA[The Free and Open source Software Developers’ European Meeting (FOSDEM) is a two-day event organized by volunteers to promote the widespread use of Free and Open Source software. As in previous years, there is a dedicated stream of MySQL Sessions. On Saturday (2nd Feb) evening there&#8217;s a MySQL community dinner and then we&#8217;ve a packed [...]]]></description>
				<content:encoded><![CDATA[<p><div id="attachment_2670" class="wp-caption alignright" style="width: 136px"><a href="https://fosdem.org/2013/"><img src="http://www.clusterdb.com/wp-content/uploads/2013/01/about.png" alt="FOSDEM 2013" width="126" height="124" class="size-full wp-image-2670" /></a><p class="wp-caption-text">FOSDEM 2013</p></div>The Free and Open source Software Developers’ European Meeting (FOSDEM) is a two-day event organized by volunteers to promote the widespread use of Free and Open Source software. As in previous years, there is a dedicated stream of MySQL Sessions. On Saturday (2nd Feb) evening there&#8217;s a <a href="http://www.eventbrite.com/event/5255505358" title="FOSDEM 2013 MySQL Community Dinner" target="_blank">MySQL community dinner</a> and then we&#8217;ve a <a href="https://fosdem.org/2013/schedule/track/mysql_and_friends/" title="MySQL devroom schedule for FOSEM 2013" target="_blank">packed program</a> from 9:15 through 17:30 on Sunday (3rd Feb).</p>
<p>FOSDEM 2013 is a free event and there&#8217;s no requirement  to pre-register &#8211; just get yourself along to Brussels.</p>
<p>This year I&#8217;ll be making a <a href="https://fosdem.org/2013/schedule/event/mysql_cluster/" title="FOSDEM 2013 - MySQL Cluster" target="_blank">presentation introducing MySQL Cluster</a>. Several of my colleagues from Oracle will also be there to present on the latest and greatest MySQL capabilities &#8211; including what&#8217;s coming in MySQL 5.6. This will be a great opportunity to politely listen to some real technical experts but an even better one to pester them for extra details &#8211; whether during the presentations or when you can grab them at other times.</p>
<p>Hope to see some of you there!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.clusterdb.com/mysql-cluster/mysql-friends-devroom-at-fosdem-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Cluster Manager 1.2.2 released</title>
		<link>http://www.clusterdb.com/mysql-cluster/mysql-cluster-manager-1-2-2-released/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mysql-cluster-manager-1-2-2-released</link>
		<comments>http://www.clusterdb.com/mysql-cluster/mysql-cluster-manager-1-2-2-released/#comments</comments>
		<pubDate>Fri, 11 Jan 2013 15:07:29 +0000</pubDate>
		<dc:creator>andrew</dc:creator>
				<category><![CDATA[MySQL Cluster]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[MySQL Cluster Manager]]></category>

		<guid isPermaLink="false">http://www.clusterdb.com/?p=2659</guid>
		<description><![CDATA[MySQL Cluster Manager 1.2.2 is now available to download from E-delivery and from My Oracle Support . Details on the changes can be found in the MySQL Cluster Manager documentation . Please give it a try and let me know what you think. Documentation is available here.]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.clusterdb.com/wp-content/uploads/2010/11/MySQL-Cluster-Manager.jpg"><img class="alignright size-full wp-image-1352" title="MySQL Cluster Manager" src="http://www.clusterdb.com/wp-content/uploads/2010/11/MySQL-Cluster-Manager.jpg" alt="" width="205" height="141" /></a>MySQL Cluster Manager 1.2.2 is now available to <a href="https://edelivery.oracle.com/" title="Download MySQL Cluster Manager" target="_blank">download from E-delivery</a> and from <a title="Download MySQL Cluster Manager 1.2.2 from Oracle" href="http://support.oracle.com" target="_blank">My Oracle Support</a>  .</p>
<p>Details on the <a title="MySQL Cluster Manager - change history" href="http://dev.mysql.com/doc/relnotes/mysql-cluster-manager/1.2/en/mcm-news-1-2-2.html" target="_blank">changes can be found in the MySQL Cluster Manager documentation</a> . Please give it a try and let me know what you think.</p>
<p><a title="MySQL Cluster Manager documentation" href="http://dev.mysql.com/doc/mysql-cluster-manager/1.2/en/index.html" target="_blank">Documentation is available here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.clusterdb.com/mysql-cluster/mysql-cluster-manager-1-2-2-released/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>MySQL Cluster 7.2.10 Released</title>
		<link>http://www.clusterdb.com/mysql-cluster/mysql-cluster-7-2-10-released/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mysql-cluster-7-2-10-released</link>
		<comments>http://www.clusterdb.com/mysql-cluster/mysql-cluster-7-2-10-released/#comments</comments>
		<pubDate>Mon, 07 Jan 2013 14:28:20 +0000</pubDate>
		<dc:creator>andrew</dc:creator>
				<category><![CDATA[MySQL Cluster]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[MySQL Cluster 7.2]]></category>

		<guid isPermaLink="false">http://www.clusterdb.com/?p=2653</guid>
		<description><![CDATA[The binary version for MySQL Cluster 7.2.10 has now been made available at http://www.mysql.com/downloads/cluster/ (GPL version) or https://support.oracle.com/ (commercial version). A description of all of the changes (fixes) that have gone into MySQL Cluster 7.2.10 (compared to 7.2.9) is available from the 7.2.10 Change log.]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.clusterdb.com/wp-content/uploads/2010/02/mysql-cluster-logo-150x105.png"><img class="alignright size-full  wp-image-919" title="mysql-cluster-logo-150x105" src="http://www.clusterdb.com/wp-content/uploads/2010/02/mysql-cluster-logo-150x105.png" alt="" width="150" height="105" /></a> The binary version for MySQL Cluster 7.2.10 has now been made available at <a href="http://www.mysql.com/downloads/cluster/" target="_blank">http://www.mysql.com/downloads/cluster/</a> (GPL version) or <a href="https://support.oracle.com/" target="_blank">https://support.oracle.com/</a> (commercial version).</p>
<p>A description of all of the changes (fixes) that have gone into MySQL Cluster 7.2.10 (compared to 7.2.9) is available from the <a title="MySQL Cluster 7.2.10 Release Notes" href="http://dev.mysql.com/doc/refman/5.5/en/mysql-cluster-news-5-5-29-ndb-7-2-10.html" target="_blank">7.2.10 Change log</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.clusterdb.com/mysql-cluster/mysql-cluster-7-2-10-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
