Testing and performing and performing the migration of a standalone MySQL Cluster into MySQL Cluster Manager consists of the following steps:
Perform a test run of the proposed import using
import cluster
with the--dryrun
option. When this option is used, MySQL Cluster Manager checks for mismatched configuration attributes, missing or invalid processes or hosts, missing or invalid PID files, and other errors, and warns of any it finds, but does not actually perform any migration of processes or data.mcm> import cluster --dryrun newcluster; ERROR 5302 (00MGR): No access for user mcmd to mysqld 100 in cluster newcluster. Please verify user access and grants adhere to documented requirements.
We omitted a crucial step earlier: we apparently neglected to create the
mcmd
superuser account needed on all SQL nodes in the “wild” cluster to bring them under control of MySQL Cluster Manager. In this case, there is only one SQL node, running ondelta
. Log into this SQL node as the MySQLroot
user, and create themcmd
account in the mysql client, as shown here:$> ./mysql -uroot -p Enter password: ************ Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.6.24-ndb-7.4.6 Source distribution Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> CREATE USER 'mcmd'@'localhost' IDENTIFIED BY 'super'; Query OK, 0 rows affected (0.00 sec) mysql> GRANT ALL PRIVILEGES ON *.* -> TO 'mcmd'@'localhost' IDENTIFIED BY 'super' -> WITH GRANT OPTION; Query OK, 0 rows affected (0.00 sec) mysql> SHOW GRANTS FOR 'mcmd'@'localhost'\G *************************** 1. row *************************** Grants for mcmd@localhost: GRANT ALL PRIVILEGES ON *.* TO 'mcmd'@'localhost' IDENTIFIED BY PASSWORD '*F85A86E6F55A370C1A115F696A9AD71A7869DB81' WITH GRANT OPTION 1 row in set (0.00 sec)
Having corrected this issue on the SQL node, we repeat the dry run in the mcm client:
mcm> import cluster --dryrun newcluster; ERROR 5310 (00MGR): Process ndb_mgmd 50 reported 6 processes, while 5 processes are configured for cluster newcluster
This error means that there are one or more cluster processes not accounted for the configuration for the target cluster. Checking the contents of the file
/etc/mysql-cluster/config.ini
on hostalpha
, we see that we overlooked a section in it earlier. This section is shown here:[mysqld] NodeId=102
To address this discrepancy, we need to add another “free”
ndbapi
process to newcluster, which we can do by executing the followingadd process
command in the mcm client:mcm> add process -R ndbapi:102@* newcluster; +----------------------------+ | Command result | +----------------------------+ | Process added successfully | +----------------------------+ 1 row in set (0.38 sec)
You can verify this by checking the output of
show status
-r
command, as shown here:mcm> show status -r newcluster; +--------+----------+-------+--------+-----------+------------+ | NodeId | Process | Host | Status | Nodegroup | Package | +--------+----------+-------+--------+-----------+------------+ | 50 | ndb_mgmd | alpha | import | | newpackage | | 5 | ndbd | beta | import | n/a | newpackage | | 6 | ndbd | gamma | import | n/a | newpackage | | 100 | mysqld | delta | import | | newpackage | | 101 | ndbapi | * | import | | | | 102 | ndbapi | * | import | | | +--------+----------+-------+--------+-----------+------------+ 6 rows in set (0.11 sec)
Now we can run another test, using
import cluster
with the--dryrun
as we did previously:mcm> import cluster --dryrun newcluster;
Continue to correct any errors or other discrepancies found using
--dryrun
, repeating the dry run shown in the previous step to ensure that no errors were missed. The following list contains some common errors you may encounter, and their likely causes:MySQL Cluster Manager requires a specific MySQL user and privileges to manage SQL nodes. If the
mcmd
MySQL user account is not set up properly, you may see No access for user..., Incorrect grants for user..., or possibly other errors. See Section 3.5.2.2, “Preparing the Standalone Cluster for Migration”.As described previously, each cluster process (other than a process whose type is
ndbapi
) being brought under MySQL Cluster Manager control must have a valid PID file. Missing, misnamed, or invalid PID files can produce errors such as PID file does not exist for process..., PID ... is not running ..., and PID ... is type .... See Section 3.5.2.3, “Verify All Cluster Process PID Files”.Process version mismatches can also produce seemingly random errors whose cause can sometime prove difficult to track down. Ensure that all nodes are supplied with the correct release of the MySQL Cluster software, and that it is the same release and version of the software.
Each data node angel process in the standalone cluster must be stopped prior to import. A running angel process can cause errors such as Angel process
pid
exists ... or Processpid
is an angel process for .... See Section 3.5.2.2, “Preparing the Standalone Cluster for Migration”.The number of processes, their types, and the hosts where they reside in the standalone cluster must be reflected accurately when creating the target site, package, and cluster for import. Otherwise, errors such as Process
id
reported#
processes ..., Processid
... does not match configured process ..., Processid
not configured ..., and Processid
does not match configured process .... See Section 3.5.2.1, “Creating and Configuring the Target Cluster”.Other factors that can cause specific errors include processes in the wrong state, processes that were started with unsupported command-line options (see Section 3.5.2.1, “Creating and Configuring the Target Cluster” for details) or without required options, and processes having the wrong process ID, or using the wrong node ID.
When
import cluster
--dryrun
no longer warns of any errors, you can perform the import with theimport cluster
command, this time omitting the--dryrun
option.