MySQL Cluster Manager 8.0.31 用户手册  / 第 4 章使用 MySQL 集群管理器  /  3.10 NDB Cluster降级涉及MySQL节点逻辑降级

3.10 NDB Cluster降级涉及MySQL节点逻辑降级

虽然该upgrade cluster命令可用于执行 NDB Cluster 的降级(请参阅upgrade cluster命令的描述以了解适用的限制),但当涉及 不支持就地降级的mysqld降级时,需要执行特殊步骤。例如,从 NDB Cluster 7.5 降级到 7.4 涉及将 MySQL 服务器从 5.7 和 5.6 降级,为此必须使用逻辑降级方法( 有关降级 mysqld的信息,请参阅降级路径)。本节说明在这种情况下要采取的步骤。让我们以这个示例集群为例:

mcm> show status -r mycluster;
+--------+----------+----------+---------+-----------+----------+
| NodeId | Process  | Host     | Status  | Nodegroup | Package  |
+--------+----------+----------+---------+-----------+----------+
| 49     | ndb_mgmd | tonfisk  | running |           | 7.5-DMR1 |
| 1      | ndbmtd   | flundra  | running | 0         | 7.5-DMR1 |
| 2      | ndbmtd   | grindval | running | 0         | 7.5-DMR1 |
| 50     | mysqld   | flundra  | running |           | 7.5-DMR1 |
| 51     | mysqld   | grindval | running |           | 7.5-DMR1 |
| 52     | ndbapi   | *        | added   |           |          |
+--------+----------+----------+---------+-----------+----------+

假设 NDB Cluster 已经从 7.4 版升级到 7.5 版,然后用户遇到了一个主要问题,现在需要将集群恢复到 7.4 版,这些是要遵循的步骤:

  1. 备份所有集群数据:

    mcm> backup cluster mycluster;
    +-------------------------------+
    | Backup completed successfully |
    +-------------------------------+
  2. 使用mysqldump从每个mysqld节点 备份非 NDB 数据。

  3. 假设您要降级到的较低版本 NDB Cluster 的包仍然可用于 MySQL Cluster Manager(如果不是这种情况,请使用add package 命令提供包),使用 upgrade cluster命令和 –-nodeid 选项降级管理和数据节点:

    mcm> upgrade cluster -P 7.4.10 --nodeid=49,1,2 --retry mycluster;
    +-------------------------------+
    | Cluster upgraded successfully |
    +-------------------------------+

    请记住在该选项中包含所有管理节点和数据节点 –-nodeid ,但忽略任何mysqld节点。该 show status命令显示哪些节点现在已降级:

    mcm> show status -r mycluster;
    +--------+----------+----------+---------+-----------+----------+
    | NodeId | Process  | Host     | Status  | Nodegroup | Package  |
    +--------+----------+----------+---------+-----------+----------+
    | 49     | ndb_mgmd | tonfisk  | running |           | 7.4.10   |
    | 1      | ndbmtd   | flundra  | running | 0         | 7.4.10   |
    | 2      | ndbmtd   | grindval | running | 0         | 7.4.10   |
    | 50     | mysqld   | flundra  | running |           | 7.5-DMR1 |
    | 51     | mysqld   | grindval | running |           | 7.5-DMR1 |
    | 52     | ndbapi   | *        | added   |           |          |
    +--------+----------+----------+---------+-----------+----------+
  4. 为每个mysqld 节点重新创建数据目录:

    1. 停止mysqld节点:

      mcm> stop process 50 mycluster;
      +-------------------------------+
      | Process stopped successfully  |
      +-------------------------------+
    2. 删除mysqld 节点的数据目录并重新创建它,作为一个空文件夹:

      user@host$ cd mcm_data/clusters/mycluster/50/
      user@host$ rm -rf data
      user@host$ mkdir data
    3. 使用要降级到的 NDB Cluster 版本包中 的mysql_install_db脚本 初始化重新创建的数据目录 :

      user@host$ /clusters/7.4/scripts/mysql_install_db \
        --defaults-file=/mcm_data/clusters/mycluster/50/cfg/my.cnf \
        --datadir=/mcm_data/clusters/mycluster/50/data --basedir=/clusters/7.4.10 \
        > mysql_install_db.log 2>&1

      (当您降级到 NDB Cluster 7.5 或更高版本时, 应该使用mysqld命令 初始化mysqld数据目录;有关详细信息,请参阅初始化数据目录。) --initialize

    4. 使用 MySQL Cluster Manager重新启动mysqld节点(由于之前已经在管理和数据节点上执行降级,mcmd将使用您要降级到的集群版本的二进制文件 启动mysqld节点):

      mcm> start process 50 mycluster;
      ERROR 9003 (00MGR): Tx {690be0d6 270 0 15} timed out on agent 0 @{19 0 50
      Wait for mysqld to start} participants: 0@tonfisk:18620[X] 1@flundra:18620[ ] 2@grindval:18620[ ]

      可能会出现如上所示的超时错误,这是由于在mysqld节点上仍要创建mcmd用户(这将在下一步中发生)。如果您足够快地执行下一步,就可以避免该错误。但即使发生错误,这里也没有问题,因为 mcmd将继续尝试连接到 mysqld节点。

    5. 在mysqld节点 上 重新创建mcmd用户 :

      mysql> CREATE USER 'mcmd'@'127.0.0.1' IDENTIFIED BY '<manager-password>';
      mysql> GRANT ALL PRIVILEGES ON *.* TO 'mcmd'@'127.0.0.1' IDENTIFIED BY \
        '<manager-password>' WITH GRANT OPTION;
      mysql> FLUSH PRIVILEGES;
    6. 将您之前使用mysqldump备份的非 NDB 数据 重新加载到mysqld节点上:

      mysql -h 127.0.0.1 -P 3306 -u root -p < dumpfile.sql
  5. 对集群的每个mysqld节点 重复上面的步骤 4 及其每个子步骤 。

  6. 在所有mysqld节点降级并准备好它们的数据目录后, mcmd最终重新连接它们:

    mcm> show status -r mycluster;
    +--------+----------+----------+---------+-----------+---------+
    | NodeId | Process  | Host     | Status  | Nodegroup | Package |
    +--------+----------+----------+---------+-----------+---------+
    | 49     | ndb_mgmd | tonfisk  | running |           | 7.4.10  |
    | 1      | ndbmtd   | flundra  | running | 0         | 7.4.10  |
    | 2      | ndbmtd   | grindval | running | 0         | 7.4.10  |
    | 50     | mysqld   | flundra  | running |           | 7.4.10  |
    | 51     | mysqld   | grindval | running |           | 7.4.10  |
    | 52     | ndbapi   | *        | added   |           |         |
    +--------+----------+----------+---------+-----------+---------+