4.3.1add package命令

add package {--basedir=|-b }path
    [{--hosts=|-h }host_list] package_name

host_list:
    host[,host[,...]]

此命令创建一个新包,或者,如果名为的包 package_name已经存在,则此命令扩展包定义。

--basedir选项(缩写形式:) 表示-bMySQL Cluster 安装目录在列出的主机上的位置,并且是必需的。这必须是 MySQL Cluster 软件所在的顶级目录的路径(例如, /usr/local/mysql),并且不应 包括MySQL Cluster binlibexec或安装目录中的其他子目录。

--hosts可以使用选项(缩写形式 :)将主机指定为逗号分隔的列表 -h;但是,此选项不是必需的。如果 --hosts省略, path则假定对使用此包创建的集群中的所有主机都有效(请参阅 第 4.4.1 节“create cluster命令”)。

重要的
  • add package如果您尚未定义任何站点( add package命令中引用的每个主机必须与站点相关联), 则无法执行。有关定义站点的更多信息, 请参见第 4.2.6 节“create site命令” 。

  • add package当使用命令 首次为站点添加包 时,无论何时--hosts使用该选项,主机列表都必须包含mcm客户端当前连接到的mcmd 代理的主机,以允许 MySQL 集群管理器访问包的版本信息。

假设我们有两台名为tonfisk 和的 Linux 主机,两台主机上都flundra安装了 MySQL Cluster 软件/usr/local/mysql。在这种情况下,您可以创建一个名为 mypackageaccount for both hosts 的包,如下所示:

mcm> add package --basedir=/usr/local/mysql mypackage;
+----------------------------+
| Command result             |
+----------------------------+
| Package added successfully |
+----------------------------+
1 row in set (0.71 sec)

当这个包用于创建集群时,MySQL Cluster Manager 知道它应该 /usr/local/mysql在每个主机上的目录中找到 MySQL Cluster 软件。

对于以 Windows 路径作为值的 MySQL Cluster Manager 客户端命令选项的选项,必须使用正斜杠 ( /) 代替反斜杠 ( \),因此如果 tonfiskflundra是安装了 MySQL Cluster 的 Windows 主机目录C:\mysql,相应的添加包命令看起来像这样( --basedir突出显示该选项):

mcm> add package --basedir=c:/mysql mypackage;
+----------------------------+
| Command result             |
+----------------------------+
| Package added successfully |
+----------------------------+
1 row in set (0.71 sec)

在刚刚给出的示例中,我们也可以发出命令 as add package --basedir=/usr/local/mysql --hosts=tonfisk,flundra mypackage(或add package --basedir=c:/mysql --hosts=tonfisk,flundra mypackage在 Windows 上)并获得相同的结果,但该 --hosts选项不是必需的,因为 MySQL Cluster 软件的位置在每个主机上都是相同的。但是,让我们假设该软件安装在 host 上的 /usr/local/ndb-host-10 和 host 上tonfisk的 /usr/local/ndb-host-20 中flundra。在这种情况下,我们必须发出 2 个单独的命令,分别指定主机和基本目录,如下所示:

mcm> add package --basedir=/usr/local/ndb-host-10
   >   --hosts=tonfisk yourpackage;
+----------------------------+
| Command result             |
+----------------------------+
| Package added successfully |
+----------------------------+
1 row in set (0.68 sec)

mcm> add package --basedir=/usr/local/ndb-host-20
   >   --hosts=flundra yourpackage;
+----------------------------+
| Command result             |
+----------------------------+
| Package added successfully |
+----------------------------+
1 row in set (0.81 sec)

假设两台主机都属于一个名为 的站点 mysite,您可以使用命令验证是否已根据需要创建了这些包 list packages,如下所示:

mcm> list packages mysite;
+-------------+---------------------------------------+-----------------+
| Package     | Path                                  | Hosts           |
+-------------+---------------------------------------+-----------------+
| yourpackage | /usr/local/ndb-host-10                | tonfisk         |
|             | /usr/local/ndb-host-20                | flundra         |
| mypackage   | /usr/local/mysql                      | tonfisk,flundra |
+-------------+---------------------------------------+-----------------+
3 rows in set (1.07 sec)

(有关此命令的更多信息,请参阅 第 4.3.3 节“list packages命令”。)

可以将同一主机(或主机)上的相同基目录(或目录)分配给多个包,如本例所示,其中我们假设主机 tonfiskflundra之前已分配给名为的站点 mysite

mcm> add package -b /usr/local/mysql-cluster mypackage;
+----------------------------+
| Command result             |
+----------------------------+
| Package added successfully |
+----------------------------+
1 row in set (1.41 sec)

mcm> add package -b /usr/local/mysql-cluster yourpackage;
+----------------------------+
| Command result             |
+----------------------------+
| Package added successfully |
+----------------------------+
1 row in set (1.58 sec)

mcm> list packages mysite;
+-------------+--------------------------+-----------------+
| Package     | Path                     | Hosts           |
+-------------+--------------------------+-----------------+
| mypackage   | /usr/local/mysql-cluster | tonfisk,flundra |
| yourpackage | /usr/local/mysql-cluster | tonfisk,flundra |
+-------------+--------------------------+-----------------+
2 rows in set (0.50 sec)
笔记

当启用 IPv6 的 Windows 系统用作 MySQL Cluster Manager 下的 MySQL Cluster 主机时,您必须使用 IPv4 地址引用这些主机。否则,MySQL Cluster Manager 将无法连接到这些主机上的代理进程。请参阅 第 5.1 节,“MySQL 集群管理器使用和设计限制”