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 MySQL Cluster 7.3 and so is not yet GA but it can also be used on MySQL Cluster 7.2. 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.
Downloading and running the wizard
The software can be downloaded from MySQL Labs; just select the MySQL-Cluster-Auto-Installer build, unzip the file and then run. To run on Windows, just double click setup.bat – note that if you installed from the MSI and didn’t change the install directory then this will be located somewhere like C:\Program Files (x86)\MySQL\MySQL Cluster 7.2. On Linux, just run ndb_setup.
Creating your cluster
When you run the auto-installer it starts a small web server and then (if possible) automatically connects your web browser to it – presenting you with the first page of the wizard. If this isn’t possible (for example the server isn’t running a desktop environment), then you can connect to it remotely using the URL http://your-server-name-goes-here:8081/index.html. It may take a number of seconds to load and so please be patient. Note that the machine where you run this doesn’t need to be a host that will be included in the cluster.
From the landing page, just click on the “Create new MySQL Cluster” icon to get started.
On the next page you need to specify the list of servers that will form part of the cluster. The machine where the installer is being run from needs to have ssh access to all of the cluster hosts (further, access to those machines must already have been approved from this one – if you’re uncertain, just manually connect to each one using an ssh client.
By default, the wizard assumes that ssh keys have been set up (so that a password isn't needed) - if that isn't the case, just un-check the checkbox and provide your username and password.
On this page, you also get to specify what "type" of cluster you want; if you're experimenting for the first time then it's probably safest to stick with "Simple testing" but for a production system you'd want to specify the kind of application and whether it will a write-intensive application.
On the next page, you will see the wizard attempt to auto-detect the resources on your target machines. If this fails then you can enter the data manually.
You can also overwrite the resource-values (for example, if you don't want the cluster to use up a big share of the memory on the target systems then just overwrite the amount of memory.
It'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't correct) - this should be the path to where you unzipped the MySQL Cluster tar-ball/zip file - 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 "edit" button.
The following page presents you with a default set of nodes (processes) and how they'll be distributed across all of the target hosts - if you're happy with the proposal then just advance to the next page. So what can you change:
The diagram to the right shows an example of adding an extra MySQL Server.
On the next screen you're presented with some of the key configuration parameters that have been set (behind the scenes, the wizard sets many more) that you might want to override; if you're happy then just progress to the next screen. If you do want to make any changes then make them here before continuing. If you'd previously selected anything other than "simple" for the kind of cluster to create then you can check the "Show advanced configuration options" box in order to view/modify more parameters.
On the final screen you can review the details of the final recommended configuration and then just hit "Deploy and start cluster" and it will do just that. Depending on the complexity of the cluster, it can take a while to deploy and start everything but you're shown a progress bar together with an explanation of what stage the process is at.
If for some reason you prefer or need to start the processes manually, this page also shows you the commands that you'd need to run (as well as the configuration files if you need to create them manually).
Once the wizard declares the process complete, you can check for yourself before going ahead and start your testing:
billy@black:~ $ ndb_mgm -e show
Connected to Management Server at: localhost:1186
[ndbd(NDB)] 2 node(s)
id=1 @192.168.1.106 (mysql-5.5.25 ndb-7.2.8, Nodegroup: 0, Master)
id=2 @192.168.1.107 (mysql-5.5.25 ndb-7.2.8, Nodegroup: 0)
[ndb_mgmd(MGM)] 2 node(s)
id=49 @192.168.1.104 (mysql-5.5.25 ndb-7.2.8)
id=52 @192.168.1.105 (mysql-5.5.25 ndb-7.2.8)
[mysqld(API)] 9 node(s)
id=50 (not connected, accepting connect from 192.168.1.104)
id=51 (not connected, accepting connect from 192.168.1.104)
id=53 (not connected, accepting connect from 192.168.1.105)
id=54 (not connected, accepting connect from 192.168.1.105)
id=55 @192.168.1.104 (mysql-5.5.25 ndb-7.2.8)
id=56 @192.168.1.104 (mysql-5.5.25 ndb-7.2.8)
id=57 @192.168.1.105 (mysql-5.5.25 ndb-7.2.8)
id=58 @192.168.1.105 (mysql-5.5.25 ndb-7.2.8)
id=59 @192.168.1.106 (mysql-5.5.25 ndb-7.2.8)
As always it would be great to hear some feedback especially if you've ideas on improving it or if you hit any problems.