This section provides information about compiling MySQL Cluster on Linux and other Unix-like platforms. Building MySQL Cluster from source is similar to building the standard MySQL Server, although it differs in a few key respects discussed here. For general information about building MySQL from source, see Section 2.11, “Installing MySQL from Source”. Beginning with MySQL Cluster NDB 7.1.3, MySQL Cluster is also supported on Windows platforms, and can be built on Windows from source. For information about compiling MySQL Cluster on Windows platforms, see Section 188.8.131.52, “Compiling and Installing MySQL Cluster from Source on Windows”.
Building MySQL Cluster requires using the MySQL Cluster sources.
These are available from the MySQL Cluster downloads page at
http://dev.mysql.com/downloads/cluster/. The archived source
file should have a name similar to
You can also obtain MySQL development sources from
launchpad.net. Attempting to build MySQL Cluster from standard
MySQL 5.1 sources is not supported.
In addition to any other configure options
you wish to use, be sure to include
--with-plugins=max, or , or
Either of these options causes the binaries for the management
nodes, data nodes, and other MySQL Cluster programs to be built;
it also causes mysqld to be compiled with
NDB storage engine support.
After you have run make && make install (or your system's equivalent), the result is similar to what is obtained by unpacking a precompiled binary to the same location. However, the layout can differ. These differences are covered in the next few paragraphs.
Prior to MySQL Cluster NDB 7.1.9, MySQL Cluster was not
compatible with the
in earlier MySQL Cluster releases, only the version of
InnoDB supplied with the MySQL
Server could be used. Beginning with MySQL Cluster NDB 7.1.9,
you can build MySQL Cluster with
InnoDB storage engine or plugin
support using the appropriate
--with-plugins option for
When building from source and running the default
make install, the management server binary
(ndb_mgmd) is placed in
/usr/local/mysql/libexec, while the
management client binary (ndb_mgm) can be
ndb_mgmd is required to be present on a
management node host; however, it is also a good idea to have
ndb_mgm present on the same host machine.
Neither of these executables requires a specific location on
the host machine's file system.
The only executable required on a data node host is
ndbd (mysqld, for
example, does not have to be present on the host machine). By
default when doing a source build, this file is placed in the
installing on multiple data node hosts, only
ndbd need be copied to the other host
machine or machines. (This assumes that all data node hosts
use the same architecture and operating system; otherwise you
may need to compile separately for each different platform.)
ndbd need not be in any particular location
on the host's file system, as long as the location is known.
When compiling MySQL Cluster NDB 7.0 or later from source, no
special options are required for building multi-threaded data
node binaries. On Unix platforms, configuring the build with any
of the options
causes ndbmtd to be built automatically;
make install places the
ndbmtd binary in the
libexec directory along with
mysqld, ndbd, and
If you compile MySQL with clustering support, and perform the
default installation (using make install as
mysqld is placed in
/usr/local/mysql/bin. Follow the steps
given in Section 2.11, “Installing MySQL from Source” to make
mysqld ready for use. If you want to run
multiple SQL nodes, you can use a copy of the same
mysqld executable and its associated
support files on several machines. The easiest way to do this
is to copy the entire
directory and all directories and files contained within it to
the other SQL node host or hosts, then repeat the steps from
Section 2.11, “Installing MySQL from Source” on each machine. If you
configure the build with a nondefault
--prefix, you need to adjust
the directory accordingly.
In Section 17.2.3, “Initial Configuration of MySQL Cluster”, we create configuration files for all of the nodes in our example MySQL Cluster.