• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 在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地址
    管理节点(mgmd198.51.100.10
    SQL节点(mysqld198.51.100.20
    数据节点“ A”(ndbd198.51.100.30
    数据节点“ B”(ndbd198.51.100.40

    与在其他平台上一样,运行SQL节点的NDB群集主机必须在其上安装MySQL服务器二进制文件(mysqld.exe)。您还应该在此主机上具有MySQL客户端(mysql.exe)。对于管理节点和数据节点,没有必要安装MySQL Server二进制文件。但是,每个管理节点都需要管理服务器守护程序(ndb_mgmd.exe);每个数据节点都需要数据节点守护程序(ndbd.exendbmtd.exe)。对于此示例,我们将ndbd.exe称为数据节点可执行文件,但是您可以安装ndbmtd.exe,则以完全相同的方式代替此程序的多线程版本。您还应该在管理服务器主机上安装管理客户端(ndb_mgm.exe)。本节介绍了为每种类型的NDB群集节点安装正确的Windows二进制文件所需的步骤。

    注意

    与其他Windows程序一样,NDB Cluster可执行文件以.exe文件扩展名命名。但是,.exe从命令行调用这些程序时,不必包括扩展名。因此,我们在本文档中通常将这些程序简称为mysqldmysqlndb_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.zipverNDB8.0.20arch3264mysql-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\DownloadsusernameECHO %USERNAME%Administrators

    从存档中提取所有文件。与Windows资源管理器集成的提取向导足以完成此任务。(如果使用其他存档程序,请确保它从存档中提取所有文件和目录,并且保留了存档的目录结构。)当系统要求您提供目标目录时,请输入C:\,这将导致提取向导进行提取。存档到目录。将此目录重命名为。C:\mysql-cluster-gpl-ver-winarchC:\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.inimy.cnf文件。有关将MySQL Server配置为在非标准位置运行的更多信息,请参见“使用Microsoft Windows在Microsoft Windows上安装MySQL”。noinstallZIP存档”。

    对于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.exendbmtd.exe之一。在这个例子中,我们假设你正在使用ndbd.exe,但同样的指示使用时应用ndbmtd.exe。在这里你想运行一个数据节点(具有IP地址198.51.100.30和198.51.100.40的计算机),创建目录的每台计算机C:\mysqlC:\mysql\binC:\mysql\cluster-data;然后,您下载并提取电脑no-install存档,定位ndbd.exeC:\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\binSQL节点主机上的目录。创建目录C:\mysql\bin在IP地址为198.51.100.10的计算机上,将两个程序都复制到此目录。

    现在,您应该创建两个配置文件以供ndb_mgmd.exe

    1. 本地配置文件,用于提供特定于管理节点本身的配置数据。通常,此文件仅需要提供NDB群集全局配置文件的位置(请参阅第2项)。

      要创建此文件,请在记事本或其他文本编辑器中启动一个新的文本文件,然后输入以下信息:

      [mysql_cluster]
      # Options for management node process
      config-file=C:/mysql/bin/config.ini
      

      将此文件另存为文本文件C:\mysql\bin\my.ini

    2. 一个全局配置文件,管理节点可以从该文件中获取管理整个NDB群集的配置信息。此文件至少必须包含NDB群集中每个节点的一部分,以及管理节点和所有数据节点的IP地址或主机名(HostName配置参数)。还建议包括以下附加信息:

      • 任何SQL节点的IP地址或主机名
      • 分配给每个数据节点的数据存储器和索引存储器(DataMemoryIndexMemory配置参数)
      • 使用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_ENGINEWITH_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节点。

    1. 在管理节点主机上,从命令行发出以下命令以启动管理节点进程。输出应类似于此处显示的内容:

      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群集公用的选项”程序”。

    2. 在每个数据节点主机上,运行此处显示的命令以启动数据节点进程:

      C:\mysql\bin>ndbd
      2010-06-23 07:53:46 [ndbd] INFO -- Configuration fetched from 'localhost:1186', generation: 1
      

      在每种情况下,数据节点进程的第一行输出应类似于前面示例中显示的内容,然后是日志输出的其他行。与管理节点进程一样,这是正常现象,因为数据节点未作为Windows服务运行。因此,请勿关闭正在运行数据节点进程的控制台窗口。这样做会杀死ndbd.exe。(有关更多信息,请参见“将NDB群集进程安装为Windows服务”)。

    3. 暂时不要启动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节点在启动后是否已连接到群集。

    4. 在指定为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.exendbd.exendbmtd.exe安装为Windows服务。有关如何执行此操作的信息,请参见“将NDB群集进程安装为Windows服务”)。

    将NDB群集进程安装为Windows服务

    一旦满足了NDB Cluster的期望,就可以将管理节点和数据节点安装为Windows服务,以便在Windows启动或停止时自动启动和停止这些进程。这也使得可以从命令行使用适当的SC STARTSC STOP命令或使用Windows图形服务实用程序来控制这些过程。也可以使用NET STARTNET 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--installSC STARTSC STOPSC DELETE(或mysqld--remove)以类似的方式将SQL节点安装为Windows服务,启动服务,停止服务以及删除服务。NET命令也可以用于启动或停止服务。有关更多信息,请参见“将MySQL作为Windows服务启动”。