Clean way to remove server from cluster, and more
I have setup a MySQL cluster with 1 management server, 2 NDB nodes, and 2 API nodes. In total it is 3 servers, 1 mgmt, and 2 NDB/API.
If I want to cleanly remove a server from the cluster for maintenance, how do I do it? For example, here is the output of show:
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @135.114.94.24 (Version: 4.1.12, Nodegroup: 0, Master)
id=3 @135.114.94.25 (Version: 4.1.12, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @135.114.94.21 (Version: 4.1.12)
[mysqld(API)] 2 node(s)
id=4 @135.114.94.24 (Version: 4.1.12)
id=5 @135.114.94.25 (Version: 4.1.12)
Let's say I need to take down 135.114.94.25 for maintenance. I can stop the NDB:
ndb_mgm> 3 stop
Node 3 has shutdown.
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @135.114.94.24 (Version: 4.1.12, Nodegroup: 0)
id=3 (not connected, accepting connect from 135.114.94.25)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @135.114.94.21 (Version: 4.1.12)
[mysqld(API)] 2 node(s)
id=4 @135.114.94.24 (Version: 4.1.12)
id=5 @135.114.94.25 (Version: 4.1.12)
But I cannot stop the API:
ndb_mgm> 5 stop
Shutdown failed.
* 2002: Stop failed
* The process has wrong type. Expected a DB process.
Is this normal?
Also, should I be able to restart the NDB from the management server?
ndb_mgm> 3 start
Start failed.
* 22: Error
* No contact with the process (dead ?).
Is this normal behaviour or am I missing something here? I am looking for the cleanest way to handle the cluster.
Also, to clarify backups -- when I issue the backup command, is ALL of the data backed up and stored on every (NDB?) server, or is it spread across?
In the case of restore, does it need to run on each server or would it be the same to run the restore on ONE server, then do ndbd --initial on the other?
Is there a way to script a backup without manually doing it in ndb_mgm?
Sorry if these are dumb questions, I am new to this.
sam