而集群升级
命令可以用来执行NDB集群的降级操作集群升级
命令用于应用的限制),当涉及降级时,需要特殊的步骤mysqld不支持就地降级。例如,从NDB集群7.5降级到7.4涉及到将MySQL服务器从5.7和5.6降级,为此必须使用逻辑降级方法(参见降级的路径参阅有关调低评级的资料mysqld).本节解释在这种情况下要采取的步骤。让我们以这个样本群为例:
MCM >显示状态-r mycluster;+--------+----------+----------+---------+-----------+----------+ | NodeId | | | |主机状态过程节点组|包 | +--------+----------+----------+---------+-----------+----------+ | 49 | ndb_mgmd | tonfisk运行| | | 7.5 -dmr1 | | 1 | ndbmtd | flundra | | 0 | 7.5运行-dmr1 | | 2 | ndbmtd | grindval | | 0 | 7.5运行-dmr1 | | 50 |7.5 -dmr1运行mysqld | flundra | | | | | 51 | mysqld | grindval运行| | | 7.5 -dmr1 | | | 52 ndbapi | * |补充道 | | | +--------+----------+----------+---------+-----------+----------+
假设NDB集群已经从7.4升级到7.5,然后用户遇到了一个大问题,现在需要将集群恢复到7.4版本,以下步骤:
备份所有集群数据:
MCM >备份集群;+-------------------------------+ | 备份成功完成 | +-------------------------------+
使用, mysqldump备份非ndb数据mysqld节点。
假设你想降级到较低版本的NDB集群的包仍然可用到MySQL集群管理器(如果不是这样,使用
添加包
命令来提供包),则使用集群升级
命令和——nodeid
降级管理和数据节点的选项:mcm>升级集群-P 7.4.10——nodeid=49,1,2——重试集群;+-------------------------------+ | 集群升级成功 | +-------------------------------+
方法中包含所有管理节点和数据节点
——nodeid
选项,但省略任何mysqld节点。的显示状态
命令显示哪些节点现在被降级了:MCM >显示状态-r mycluster;+--------+----------+----------+---------+-----------+----------+ | NodeId | | | |主机状态过程节点组|包 | +--------+----------+----------+---------+-----------+----------+ | 49 | ndb_mgmd | tonfisk运行| | | 7.4.10 | | 1 | ndbmtd | flundra | | 0 |运行7.4.10 | | 2 | ndbmtd | grindval | | 0 |运行7.4.10 | | 50 | mysqld|flundra | running | | 7.5-DMR1 | | 51 | mysqld | grindval | running | | 7.5-DMR1 | | 52 | ndbapi | * | added | | | +--------+----------+----------+---------+-----------+----------+
为每个对象重新创建数据目录mysqld节点:
停止mysqld节点:
MCM >停止进程50;+-------------------------------+ | 过程停止成功 | +-------------------------------+
删除虚拟机的数据目录mysqldNode并将其重新创建为一个空文件夹:
user@host$ CD McM_data /clusters/mycluster/50/ user@host$ rm -rf data user@host$ mkdir data
属性初始化重新创建的数据目录mysql_install_db你正在降级的NDB集群版本包中的脚本:
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集群7.5或更高版本时mysqld属性初始化数据目录mysqld
——初始化
命令;看到初始化数据目录详情)。重新启动mysqld使用MySQL集群管理器的节点(由于之前已经在管理和数据节点上执行了降级,mcmd要开始吗mysqld节点与二进制的集群版本,你正在降级到):
启动进程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[]
可能会出现如上所示的超时错误,这是由于mcmd仍然要在mysqld节点(这将在下一步中发生)。如果您能够尽快执行下一步,则可以避免该错误。但即使出现错误,这里也没有问题,因为mcmd会一直尝试连接到mysqld节点。
重新创建
mcmd
用户在mysqld节点:mysql> CREATE USER 'mcmd @'127.0.0.1' IDENTIFIED BY '
';mysql>授予*上的所有权限。* TO 'mcmd'@'127.0.0.1' IDENTIFIED BY \ ' ' WITH GRANT OPTION;mysql >冲洗特权; 重新加载到mysqld节点的非ndb数据备份之前使用, mysqldump:
mysql -h 127.0.0.1 -P 3306 -u root -P < dumpfile.sql
对每个重复上面的步骤4和它的每个子步骤mysqld集群的节点。
在所有的mysqld节点被降级,它们的数据目录也准备好了,mcmd最终与他们全部重新连接:
MCM >显示状态-r mycluster;+--------+----------+----------+---------+-----------+---------+ | NodeId | | | |主机状态过程节点组|包 | +--------+----------+----------+---------+-----------+---------+ | 49 | ndb_mgmd | tonfisk运行| | | 7.4.10 | | 1 | ndbmtd | flundra | | 0 |运行7.4.10 | | 2 | ndbmtd | grindval | | 0 |运行7.4.10 | | 50 | mysqld |flundra | running | | 7.4.10 | | 51 | mysqld | grindval | running | | 7.4.10 | | 52 | ndbapi | * | added | | | +--------+----------+----------+---------+-----------+---------+