As I know, a mysqld process is a kind of a router of a MySQl cluster. It directs requests to the right ndbd node.

Assuming I have 3 ndbd nodes on 3 different machines and I don't use replication. How many mysqld proccesses do I need? I would say one? For me its like a master-slave architecture (comparable with mongodb) But I saw configurations where each ndbd node also has one mysqld proccess. Why?

migrated from stackoverflow.com Dec 10 '13 at 18:57

This question came from our site for professional and enthusiast programmers.

  • 1
    mysqld is the MySQL database server in all configurations, it's not specific to clusters. – Barmar Dec 10 '13 at 18:32
  • thanks, I want to access the ndbd nodes via a/the mysqlds – user2601966 Dec 10 '13 at 18:34
  • Why do you think posting this on MongoDB tag would be of help? Its a MySQL question – Sammaye Dec 10 '13 at 18:41

When it comes to a DB Server running mysqld in a MySQL Cluster environment, the DB Server's role is known as a SQL Node.

I once described the difference between a Storage Node and a SQL Node : Does mysqld --ndb-cluster need to be run on MySQL Cluster data nodes?. In the comment section of the question, Mat Keep commented that you should look at MySQL Cluster -- Storing table data on data nodes.

In a small Cluster, I do not see any significant impact of running mysqld on a Storage Node. In a larger Cluster, I would expect SQL Nodes to be setup apart from the Data Node unless you intend to store data in physical files.

You can find additional info from the three MySQL Cluster gurus in the DBA StackExchange

Based on your comment

To be more precise, I have 3 machines which run a Data Node. Each machine has 8Gb of RAM. In total the the db should store ~50 million ~1kb records. How would you do it here?


Personally, I would get a fourth server and run it as the SQL Node and leave the others as Storage (Data) Nodes. Make sure the SQL node and the Data nodes have the same hardware and OS settings.

If it is a low-write DB Cluster, then you could chance it and run mysqld --ndbcluster on each Data Node (no need for a fourth server).

  • Thanks for your qualified answer! To be more precise, I have 3 machines which run a Data Node. Each machine has 8Gb of RAM. In total the the db should store ~50 million ~1kb records. How would you do it here? thanks – user2601966 Dec 10 '13 at 21:23

~50 million ~1kB records is ~50GB of data even not counting headers and possible indexes. And you have 3 machines with 8GB of RAM each. That means that Data node could use somewhere up to ~6GB of RAM. All the data records in MySQL Cluster has to be stored on two nodes. So in your Cluster you can store (3*6GB)/2=9GB of data.

Actual amount is even less because of data records headers, possible indexes, other metadata.

So to store 50GB of data in Cluster you have to use MySQL Cluster Disk Data Tables.

And by the way with the default Cluster setting of NoOfReplicas=2 you cannot have 3 Data nodes. Documentation says that "The value for this parameter must divide evenly into the number of data nodes in the cluster".

You have either to use 2 Data nodes and dedicate third server for SQL node or change NoOfReplicas to 1 and loose high availability.

Your Answer

