在Windows上安装NDB群集
本节介绍Windows主机上NDB Cluster的安装过程。可以从https://dev.mysql.com/downloads/cluster/获得适用于Windows的NDB Cluster 8.0二进制文件。有关从Oracle提供的二进制发行版在Windows上安装NDB群集的信息,请参见“从二进制发行版在Windows上安装NDB群集”。
也可以使用Microsoft Visual Studio在Windows上从源代码编译和安装NDB Cluster。有关更多信息,请参见“在Windows上从源代码编译和安装NDB群集”。
从二进制发行版在Windows上安装NDB群集
本节使用本节开头概述的相同的4节点设置,介绍了由Oracle提供的二进制“无安装” NDB Cluster版本在Windows上的NDB Cluster基本安装(请参见“ NDB Cluster安装”)。),如下表所示:
示例集群中节点的网络地址
节点 | IP地址 |
---|---|
管理节点(mgmd) | 198.51.100.10 |
SQL节点(mysqld) | 198.51.100.20 |
数据节点“ A”(ndbd) | 198.51.100.30 |
数据节点“ B”(ndbd) | 198.51.100.40 |
与在其他平台上一样,运行SQL节点的NDB群集主机必须在其上安装MySQL服务器二进制文件(mysqld.exe)。您还应该在此主机上具有MySQL客户端(mysql.exe)。对于管理节点和数据节点,没有必要安装MySQL Server二进制文件。但是,每个管理节点都需要管理服务器守护程序(ndb_mgmd.exe);每个数据节点都需要数据节点守护程序(ndbd.exe或ndbmtd.exe)。对于此示例,我们将ndbd.exe称为数据节点可执行文件,但是您可以安装ndbmtd.exe,则以完全相同的方式代替此程序的多线程版本。您还应该在管理服务器主机上安装管理客户端(ndb_mgm.exe)。本节介绍了为每种类型的NDB群集节点安装正确的Windows二进制文件所需的步骤。
注意与其他Windows程序一样,NDB Cluster可执行文件以
.exe
文件扩展名命名。但是,.exe
从命令行调用这些程序时,不必包括扩展名。因此,我们在本文档中通常将这些程序简称为mysqld,mysql,ndb_mgmd等。您应该理解,无论我们引用(例如)mysqld还是mysqld.exe,任何一个名称都意味着同一件事(MySQL服务器程序)。
为了使用Oracle的no-install
二进制文件设置NDB群集,安装过程的第一步是从https://dev.mysql.com/downloads/cluster/下载最新的NDB群集Windows ZIP二进制存档。该归档文件的文件名为,其中是存储引擎版本(例如)和体系结构(用于32位二进制文件和 64位二进制文件)。例如,用于64位Windows系统的NDB Cluster 8.0.20存档命名为。mysql-cluster-gpl-ver-winarch.zip
ver
NDB
8.0.20
arch
32
64
mysql-cluster-gpl-8.0.20-win64.zip
您可以在32位和64位版本的Windows上运行32位NDB群集二进制文件。但是,64位NDB群集二进制文件只能在Windows的64位版本上使用。如果在具有64位CPU的计算机上使用Windows 32位版本,则必须使用32位NDB群集二进制文件。
为了最大程度地减少需要从Internet下载或在计算机之间复制的文件数量,我们从要在其中运行SQL节点的计算机开始。
SQL节点。我们假定您已将存档的副本放置在IP地址为198.51.100.20的计算机上的目录中,此处是当前用户的名称。(您可以在命令行上使用此名称。)要将NDB Cluster可执行文件作为Windows服务安装和运行,该用户应是该组的成员。C:\Documents and Settings\username\My Documents\Downloads
username
ECHO %USERNAME%
Administrators
从存档中提取所有文件。与Windows资源管理器集成的提取向导足以完成此任务。(如果使用其他存档程序,请确保它从存档中提取所有文件和目录,并且保留了存档的目录结构。)当系统要求您提供目标目录时,请输入C:\
,这将导致提取向导进行提取。存档到目录。将此目录重命名为。C:\mysql-cluster-gpl-ver-winarch
C:\mysql
可以将NDB群集二进制文件安装到除C:\mysql\bin
;以外的目录中。但是,如果这样做,则必须相应地修改此过程中显示的路径。特别是,如果将MySQL Server(SQL节点)二进制文件安装到C:\mysql
或以外的位置C:\Program Files\MySQL\MySQL Server 8.0
,或者如果SQL节点的数据目录位于C:\mysql\data
或以外的位置C:\Program Files\MySQL\MySQL Server 8.0\data
,则必须在命令行上使用额外的配置选项或将其添加到启动SQL节点时的文件my.ini
或my.cnf
文件。有关将MySQL Server配置为在非标准位置运行的更多信息,请参见“使用Microsoft Windows在Microsoft Windows上安装MySQL”。noinstall
ZIP存档”。
对于NDB集群支持MySQL服务器作为一个NDB集群的一部分运行,它必须与选项来启动--ndbcluster
和--ndb-connectstring
。尽管您可以在命令行上指定这些选项,但是通常将它们放在选项文件中更为方便。为此,请在记事本或其他文本编辑器中创建一个新的文本文件。在此文件中输入以下配置信息:
[mysqld] # Options for mysqld process: ndbcluster # run NDB storage engine ndb-connectstring=198.51.100.10 # location of management server
You can add other options used by this MySQL Server if desired(see Section 2.3.4.2,“Creating an Option File”), but the file must contain the options shown, at a minimum. Save this file as C:\mysql\my.ini
. This completes the installation and setup for the SQL node.
数据节点。 Windows主机上的NDB群集数据节点仅需要一个可执行文件,即ndbd.exe或ndbmtd.exe之一。在这个例子中,我们假设你正在使用ndbd.exe,但同样的指示使用时应用ndbmtd.exe。在这里你想运行一个数据节点(具有IP地址198.51.100.30和198.51.100.40的计算机),创建目录的每台计算机C:\mysql
,C:\mysql\bin
和C:\mysql\cluster-data
;然后,您下载并提取电脑no-install
存档,定位ndbd.exe
在C:\mysql\bin
目录。将此文件复制到C:\mysql\bin
两个数据节点主机上的目录中。
要用作NDB群集的一部分,必须为每个数据节点指定管理服务器的地址或主机名。启动每个数据节点进程时,可以使用--ndb-connectstring
或-c
选项在命令行上提供此信息。但是,通常最好将此信息放在选项文件中。为此,请在记事本或其他文本编辑器中创建一个新的文本文件,然后输入以下文本:
[mysql_cluster] # Options for data node process: ndb-connectstring=198.51.100.10 # location of management server
将此文件另存为C:\mysql\my.ini
在数据节点主机上。创建另一个包含相同信息的文本文件,并将其保存C:mysql\my.ini
在其他数据节点主机上,或将my.ini文件从第一个数据节点主机复制到第二个数据节点主机,确保将副本放置在第二个数据节点的C:\mysql
目录中。现在,两个数据节点主机均已准备就绪,可以在NDB群集中使用,这仅使管理节点得以安装和配置。
管理节点。用于托管NDB群集管理节点的计算机上唯一需要的可执行程序是管理服务器程序ndb_mgmd.exe。但是,为了在启动NDB群集后对其进行管理,还应该将NDB群集管理客户端程序ndb_mgm.exe与管理服务器安装在同一台计算机上。在下载和解no-install
压缩存档的计算机上找到这两个程序;这应该是C:\mysql\bin
SQL节点主机上的目录。创建目录C:\mysql\bin
在IP地址为198.51.100.10的计算机上,将两个程序都复制到此目录。
现在,您应该创建两个配置文件以供ndb_mgmd.exe
:
本地配置文件,用于提供特定于管理节点本身的配置数据。通常,此文件仅需要提供NDB群集全局配置文件的位置(请参阅第2项)。
要创建此文件,请在记事本或其他文本编辑器中启动一个新的文本文件,然后输入以下信息:
[mysql_cluster] # Options for management node process config-file=C:/mysql/bin/config.ini
将此文件另存为文本文件
C:\mysql\bin\my.ini
。一个全局配置文件,管理节点可以从该文件中获取管理整个NDB群集的配置信息。此文件至少必须包含NDB群集中每个节点的一部分,以及管理节点和所有数据节点的IP地址或主机名(
HostName
配置参数)。还建议包括以下附加信息:- 任何SQL节点的IP地址或主机名
- 分配给每个数据节点的数据存储器和索引存储器(
DataMemory
和IndexMemory
配置参数) - 使用
NoOfReplicas
配置参数的副本数(请参见“ NDB群集节点,节点组,副本和分区”) - 每个数据节点存储数据和日志文件的目录,以及管理节点保留其日志文件的目录(在两种情况下均为
DataDir
配置参数)
使用文本编辑器(如记事本)创建一个新的文本文件,并输入以下信息:
[ndbd default] # Options affecting ndbd processes on all data nodes: NoOfReplicas=2 # Number of replicas DataDir=C:/mysql/cluster-data # Directory for each data node's data files # Forward slashes used in directory path, # rather than backslashes. This is correct; # see Important note in text DataMemory=80M # Memory allocated to data storage IndexMemory=18M # Memory allocated to index storage # For DataMemory and IndexMemory, we have used the # default values. Since the "world" database takes up # only about 500KB, this should be more than enough for # this example Cluster setup. [ndb_mgmd] # Management process options: HostName=198.51.100.10 # Hostname or IP address of management node DataDir=C:/mysql/bin/cluster-logs # Directory for management node log files [ndbd] # Options for data node "A": # (one [ndbd] section per data node) HostName=198.51.100.30 # Hostname or IP address [ndbd] # Options for data node "B": HostName=198.51.100.40 # Hostname or IP address [mysqld] # SQL node options: HostName=198.51.100.20 # Hostname or IP address
将此文件另存为文本文件
C:\mysql\bin\config.ini
。
重要
\
在Windows上的NDB Cluster使用的程序选项或配置文件中指定目录路径时,不能使用单个反斜杠字符()。相反,您必须使用第二个反斜杠(\\
)来使每个反斜杠字符转义,或者用正斜杠字符(/
)替换反斜杠。例如,[ndb_mgmd]
NDB群集config.ini
文件部分中的以下行不起作用:DataDir=C:\mysql\bin\cluster-logs
而是,您可以使用以下任一方法:
DataDir=C:\\mysql\\bin\\cluster-logs # Escaped backslashes
DataDir=C:/mysql/bin/cluster-logs # Forward slashes
为了简洁起见,我们建议您在Windows上的NDB群集程序选项和配置文件中使用的目录路径中使用正斜杠。
在Windows上从源代码编译和安装NDB群集
Oracle为Windows提供了预编译的NDB群集二进制文件,该文件对于大多数用户来说已经足够了。但是,如果您愿意,也可以从源代码编译Windows版NDB Cluster。这样做的过程几乎与用于编译Windows的标准MySQL Server二进制文件的过程相同,并且使用相同的工具。但是,有两个主要区别:
- 构建MySQL NDB Cluster 8.0需要使用MySQL Server 8.0源。这些可从MySQL下载页面https://dev.mysql.com/downloads/获得。存档的源文件的名称应类似于
mysql-8.0.20.tar.gz
。您也可以从GitHub上获取源代码,网址为 https://github.com/mysql/mysql-server。 WITH_NDBCLUSTER
除了希望与CMake一起使用的任何其他构建选项之外,还必须使用该选项配置构建。WITH_NDBCLUSTER_STORAGE_ENGINE
和WITH_PLUGIN_NDBCLUSTER
作为的别名被支持WITH_NDBCLUSTER
,并且以完全相同的方式工作。
重要
WITH_NDB_JAVA
默认情况下启用该选项。这意味着,默认情况下,如果CMake在系统上找不到Java的位置,则配置过程将失败;如果您不希望启用Java和ClusterJ支持,则必须使用来配置构建以明确指出这一点-DWITH_NDB_JAVA=OFF
。(缺陷号12379735)WITH_CLASSPATH
根据需要用于提供Java类路径。
有关特定于构建NDB群集的CMake选项的详细信息,请参阅《编译NDB群集的选项》。
构建过程完成后,您可以创建一个Zip存档,其中包含已编译的二进制文件。“使用标准源分发版安装MySQL”提供了在Windows系统上执行此任务所需的命令。NDB群集二进制文件可以bin
在结果档案的目录中找到,该目录与档案等效no-install
,并且可以用相同的方式进行安装和配置。有关更多信息,请参见“从二进制发行版在Windows上安装NDB群集”。
Windows上的NDB群集的初始启动
一旦NDB Cluster可执行文件和所需的配置文件到位,执行集群的初始启动仅是为集群中所有节点启动NDB Cluster可执行文件。每个群集节点进程必须在其所在的主机上分别启动。应首先启动管理节点,然后再启动数据节点,然后再启动任何SQL节点。
在管理节点主机上,从命令行发出以下命令以启动管理节点进程。输出应类似于此处显示的内容:
C:\mysql\bin>
ndb_mgmd 2010-06-23 07:53:34 [MgmtSrvr] INFO -- NDB Cluster Management Server. mysql-8.0.20-ndb-8.0.20 2010-06-23 07:53:34 [MgmtSrvr] INFO -- Reading cluster configuration from 'config.ini'管理节点进程继续将日志记录输出打印到控制台。这是正常现象,因为管理节点未作为Windows服务运行。(如果在类似Unix的平台(例如Linux)上使用了NDB群集,您可能会注意到,管理节点在Windows上的默认行为实际上与它在Unix系统上的行为相反,后者在默认情况下以Unix的身份运行对于Windows上运行的NDB群集数据节点进程,此行为也是如此。)因此,请不要关闭正在运行ndb_mgmd.exe的窗口。这样做会杀死管理节点进程。(看到“将NDB群集进程安装为Windows服务”,其中我们展示了如何将NDB群集进程安装和运行为Windows服务。)
必需的
-f
选项告诉管理节点在哪里可以找到全局配置文件(config.ini
)。此选项的长格式为--config-file
。重要
NDB群集管理节点缓存从中读取的配置数据
config.ini
。一旦创建了配置缓存,它将config.ini
在后续启动时忽略该文件,除非被迫执行其他操作。这意味着,如果管理节点由于此文件中的错误而无法启动,则必须config.ini
在更正其中的所有错误之后重新读取管理节点。您可以通过在命令行上使用或选项启动ndb_mgmd.exe来执行此操作。这两个选项均可以刷新配置缓存。--reload
--initial
不必或不建议在管理节点的
my.ini
文件中使用这两个选项。有关可与ndb_mgmd一起使用的选项的更多信息,请参见“ndb_mgmd-NDB群集管理服务器守护程序”,以及“ NDB群集程序公用的选项-NDB群集公用的选项”程序”。
在每个数据节点主机上,运行此处显示的命令以启动数据节点进程:
C:\mysql\bin>
ndbd 2010-06-23 07:53:46 [ndbd] INFO -- Configuration fetched from 'localhost:1186', generation: 1在每种情况下,数据节点进程的第一行输出应类似于前面示例中显示的内容,然后是日志输出的其他行。与管理节点进程一样,这是正常现象,因为数据节点未作为Windows服务运行。因此,请勿关闭正在运行数据节点进程的控制台窗口。这样做会杀死ndbd.exe。(有关更多信息,请参见“将NDB群集进程安装为Windows服务”)。
暂时不要启动SQL节点。在数据节点启动完成之前,它无法连接到群集,这可能需要一些时间。而是在管理节点主机上的新控制台窗口中,启动NDB群集管理客户端ndb_mgm.exe,该客户端应位于
C:\mysql\bin
管理节点主机上。(不要通过键入CTRL+ C来重复使用运行ndb_mgmd.exe的控制台窗口,因为这会杀死管理节点。)结果输出应如下所示:C:\mysql\bin>
ndb_mgm -- NDB Cluster -- Management Client -- ndb_mgm>当
ndb_mgm>
出现提示时,表明管理客户端已准备好接收NDB群集管理命令。您可以通过ALL STATUS
在管理客户端提示符处输入来观察数据节点启动时的状态。此命令将生成有关数据节点启动顺序的运行报告,该报告应类似于以下内容:ndb_mgm>
ALL STATUS Connected to Management Server at: localhost:1186 Node 2: starting (Last completed phase 3) (mysql-8.0.20-ndb-8.0.20) Node 3: starting (Last completed phase 3) (mysql-8.0.20-ndb-8.0.20) Node 2: starting (Last completed phase 4) (mysql-8.0.20-ndb-8.0.20) Node 3: starting (Last completed phase 4) (mysql-8.0.20-ndb-8.0.20) Node 2: Started (version 8.0.20) Node 3: Started (version 8.0.20) ndb_mgm>注意
在管理客户端中发出的命令不区分大小写。我们使用大写字母作为这些命令的规范形式,但是当您将它们输入到ndb_mgm客户端时,不需要遵守该约定。有关更多信息,请参见“ NDB Cluster Management Client中的命令”。
ALL STATUS
根据数据节点能够启动的速度,所使用的NDB Cluster软件的发行版本号以及其他因素,所产生的输出可能与此处显示的不同。重要的是,当您看到两个数据节点都已启动时,就可以启动SQL节点了。您可以使ndb_mgm.exe保持运行状态;它对NDB群集的性能没有负面影响,我们将在下一步中使用它来验证SQL节点在启动后是否已连接到群集。
在指定为SQL节点主机的计算机上,打开一个控制台窗口,然后导航到解压缩NDB Cluster二进制文件的目录(如果您遵循的是示例
C:\mysql\bin
)。通过从命令行调用mysqld.exe来启动SQL节点,如下所示:
C:\mysql\bin>
mysqld --console该
--console
选项导致将日志记录信息写入控制台,这在出现问题时可能会有所帮助。(一旦您对SQL节点以令人满意的方式运行感到满意,就可以停止它并在没有该--console
选项的情况下将其重新启动,以便正常执行日志记录。)在管理客户端(ndb_mgm.exe)在管理节点主机上运行的控制台窗口中,输入
SHOW
命令,该命令应产生类似于此处显示的输出:ndb_mgm>
SHOW Connected to Management Server at: localhost:1186 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 @198.51.100.30 (Version: 8.0.20-ndb-8.0.20, Nodegroup: 0, *) id=3 @198.51.100.40 (Version: 8.0.20-ndb-8.0.20, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s) id=1 @198.51.100.10 (Version: 8.0.20-ndb-8.0.20) [mysqld(API)] 1 node(s) id=4 @198.51.100.20 (Version: 8.0.20-ndb-8.0.20)您还可以使用以下语句验证SQL节点是否已连接到mysql客户端(mysql.exe)中的NDB群集
SHOW ENGINE NDB STATUS
。
现在,您应该准备使用NDB Cluster的NDBCLUSTER
存储引擎来处理数据库对象和数据。有关更多信息和示例,请参见“带有表和数据的NDB群集示例”。
您还可以将ndb_mgmd.exe,ndbd.exe和ndbmtd.exe安装为Windows服务。有关如何执行此操作的信息,请参见“将NDB群集进程安装为Windows服务”)。
将NDB群集进程安装为Windows服务
一旦满足了NDB Cluster的期望,就可以将管理节点和数据节点安装为Windows服务,以便在Windows启动或停止时自动启动和停止这些进程。这也使得可以从命令行使用适当的SC START和SC STOP命令或使用Windows图形服务实用程序来控制这些过程。也可以使用NET START和NET STOP命令。
通常必须使用对系统具有管理员权限的帐户来完成将程序安装为Windows服务的过程。
要将管理节点作为服务安装在Windows 上,请使用该选项从托管管理节点的计算机上的命令行调用ndb_mgmd.exe--install
,如下所示:
C:\>C:\mysql\bin\ndb_mgmd.exe --install Installing service 'NDB Cluster Management Server' as '"C:\mysql\bin\ndbd.exe" "--service=ndb_mgmd"' Service successfully installed.
重要当将NDB群集程序安装为Windows服务时,应始终指定完整路径。否则,服务安装可能会失败,并显示以下错误:系统找不到指定的文件。
--install
必须先使用该选项,然后才能为ndb_mgmd.exe指定其他任何选项。但是,最好在选项文件中指定此类选项。如果您的选项文件不在ndb_mgmd.exe输出中所示的默认位置之一,则--help
可以使用该--config-file
选项指定位置。
现在,您应该能够像这样启动和停止管理服务器:
C:\>SC START ndb_mgmd C:\>SC STOP ndb_mgmd
注意如果使用NET命令,则还可以使用描述性名称作为Windows服务启动或停止管理服务器,如下所示:
C:\>NET START 'NDB Cluster Management Server' The NDB Cluster Management Server service is starting. The NDB Cluster Management Server service was started successfully. C:\>NET STOP 'NDB Cluster Management Server' The NDB Cluster Management Server service is stopping.. The NDB Cluster Management Server service was stopped successfully.
通常,在安装服务时指定简短的服务名称或允许使用默认服务名称,然后在启动或停止服务时引用该名称通常会更简单。要指定除以外的服务名称ndb_mgmd
,请将该名称附加到该--install
选项中,如本示例所示:
C:\>C:\mysql\bin\ndb_mgmd.exe --install=mgmd1 Installing service 'NDB Cluster Management Server' as '"C:\mysql\bin\ndb_mgmd.exe" "--service=mgmd1"' Service successfully installed.
现在,您应该能够使用指定的名称来启动或停止服务,如下所示:
C:\>SC START mgmd1 C:\>SC STOP mgmd1
要删除管理节点服务,请使用SC DELETE service_name
:
C:\>SC DELETE mgmd1
或者,使用该选项调用ndb_mgmd.exe--remove
,如下所示:
C:\>C:\mysql\bin\ndb_mgmd.exe --remove Removing service 'NDB Cluster Management Server' Service successfully removed.
如果使用默认名称以外的其他服务名称安装了该服务,请将该服务名称作为ndb_mgmd.exe--remove
选项的值传递,如下所示:
C:\>C:\mysql\bin\ndb_mgmd.exe --remove=mgmd1 Removing service 'mgmd1' Service successfully removed.
可以使用ndbd.exe(或ndbmtd.exe)--install
选项,以类似的方式将NDB群集数据节点进程作为Windows服务安装,如下所示:
C:\>C:\mysql\bin\ndbd.exe --install Installing service 'NDB Cluster Data Node Daemon' as '"C:\mysql\bin\ndbd.exe" "--service=ndbd"' Service successfully installed.
现在,您可以启动或停止数据节点,如以下示例所示:
C:\>SC START ndbd C:\>SC STOP ndbd
要删除数据节点服务,请使用SC DELETE service_name
:
C:\>SC DELETE ndbd
或者,使用该选项调用ndbd.exe--remove
,如下所示:
C:\>C:\mysql\bin\ndbd.exe --remove Removing service 'NDB Cluster Data Node Daemon' Service successfully removed.
与ndb_mgmd.exe(和mysqld.exe)一样,在将ndbd.exe安装为Windows服务时,您也可以指定服务的名称作为的值--install
,然后在启动或停止服务时使用它,如下所示:
C:\>C:\mysql\bin\ndbd.exe --install=dnode1 Installing service 'dnode1' as '"C:\mysql\bin\ndbd.exe" "--service=dnode1"' Service successfully installed. C:\>SC START dnode1 C:\>SC STOP dnode1
如果在安装数据节点服务时指定了服务名称,则在删除它时也可以使用该名称,如下所示:
C:\>SC DELETE dnode1
或者,您可以将服务名称作为ndbd.exe
--remove
选项的值传递,如下所示:
C:\>C:\mysql\bin\ndbd.exe --remove=dnode1 Removing service 'dnode1' Service successfully removed.
使用mysqld--install
,SC START,SC STOP和SC DELETE(或mysqld--remove
)以类似的方式将SQL节点安装为Windows服务,启动服务,停止服务以及删除服务。NET命令也可以用于启动或停止服务。有关更多信息,请参见“将MySQL作为Windows服务启动”。