You must verify that each process in the “wild” cluster has a valid PID file. For purposes of this discussion, a valid PID file has the following characteristics:
The filename is
ndb_, wherenode_id.pidnode_idis the node ID used for this process.The file is located in the data directory used by this process.
The first line of the file contains the process ID, and only the process ID.
To check the PID file for the management node process, log into the system shell on host
alpha, and change to the management node's data directory. If this is not specified, the PID file should be created in the same directory that ndb_mgmd runs in; change to this directory instead. Then check to see whether the PID file is present using your system's tools for doing this. On Linux, you can use the command shown here:$> ls ndb_1* ndb_1_cluster.log ndb_1_out.log ndb_1.pidCheck the content of the matching
.pidfile using a pager or text editor. We use more for this purpose here:$> more ndb_1.pid 17066The number shown should match the ndb_mgmd process ID. We can check this on Linux as before, using ps:
$> ps -ef | grep ndb_mgmd jon 17066 1 1 19:16 ? 00:00:01 ./ndb_mgmd -f /etc/mysql-cluster/config.ini --config-cache=false jon 17942 1819 0 19:17 pts/2 00:00:00 grep --color=auto ndb_mgmdThe management node PID file satisfies the requirements listed at the beginning of this section. Next, we check the PID files for the data nodes, on hosts
betaandgamma. Log into a system shell onbeta, then obtain the process ID of the ndbd process on this host, as shown here:$> ps -ef | grep ndbd jon 2024 1 1 18:46 ? 00:00:01 ./ndbd -c alpha jon 2150 1819 0 18:47 pts/2 00:00:00 grep --color=auto ndbdWe observed earlier (see Section 3.5.2.1, “Creating and Configuring the Target Cluster”) that this node's node ID is 5 and that its
DataDiris/var/lib/mysql-cluster. Check in this directory for the presence of a file namedndb_5.pid:$> ls /var/lib/mysql-cluster/ndb_5.pid ndb_5.pidNow check the content of this file and make certain that it contains the process ID 2024 on the first line and no other content, like this:
$> more /var/lib/mysql-cluster/ndb_5.pid 2024Similarly, we locate and check the content of the PID file for the remaining data node (node ID 6, data directory
/var/lib/mysql-cluster/) on hostgamma:$> ps -ef | grep ndbd jon 2067 1 1 18:46 ? 00:00:01 ./ndbd -c alpha jon 2150 1819 0 18:47 pts/2 00:00:00 grep --color=auto ndbd $> ls /var/lib/mysql-cluster/ndb_6.pid ndb_6.pid $> more /var/lib/mysql-cluster/ndb_6.pid 2067The PID file for this data node also meets our requirements, so we are now ready to proceed to the mysqld binary running on host
delta. We handle the PID file for this process in the next step.If a given process does not have a valid PID file, you must create one for it, or, in some cases, modify the existing one. This is most likely to be a concern when checking PID files for mysqld processes, due to the fact that the MySQL Server is customarily started using the startup script mysqld_safe, which can start the mysqld binary with any number of default options, including the
--pid-fileoption. We see that is the case when we check on hostdeltafor the running mysqld process there (emphasized text):$> ps -ef | grep mysqld jon 8782 8520 0 10:30 pts/3 00:00:00 /bin/sh ./mysqld_safe --ndbcluster --ndb-connectstring=alpha jon 8893 8782 1 10:30 pts/3 00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --ndbcluster --ndb-connectstring=alpha --log-error=/usr/local/mysql/data/delta.err --pid-file=/usr/local/mysql/data/delta.pid jon 8947 8520 0 10:30 pts/3 00:00:00 grep --color=auto mysqld $> more /usr/local/mysql/data/delta.pid 8893The PID for the SQL node is in an acceptable location (the data directory) and has the correct content, but has the wrong name.
You can create a correct PID file in either of two locations—in the process data directory, or in the directory
on the same host as the process, wheremcm_dir/clusters/cluster name/pid/mcm_diris the MySQL Cluster Manager installation directory, andcluster_nameis the name of the cluster. In this case, since the existing PID file is otherwise correct, it is probably easiest just to copy it to a correctly named file in the same directory incorporating the node ID (100), like this:$> cp /usr/local/mysql/data/delta.pid /usr/local/mysql/data/ndb_100.pidAnother alternative is to create and write a completely new PID file to the proper location in the MySQL Cluster Manager installation directory, as shown here:
$> echo '8893' > /opt/mcm-1.3.6/clusters/newcluster/pid/ndb_100.pid $> more /opt/mcm-1.3.6/clusters/newcluster/pid/ndb_100.pid 8893ndbapiprocesses running under MySQL Cluster Manager do not require PID files, so we have completed this step of the import, and we should be ready for a test or “dry run” of the migration. We perform this test in the next step.