• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • NDB群集的MySQL服务器使用情况

    mysqld是传统的MySQL服务器进程。要与NDB群集一起使用,必须在支持存储引擎的情况下构建 mysqldNDB,因为它位于https://dev.mysql.com/downloads/中提供的预编译二进制文件中。如果从源代码构建MySQL,则必须调用 CMake-DWITH_NDBCLUSTER=1选择包含对的支持NDB

    有关从源代码编译NDB群集的更多信息,请参见“在Linux上从源代码编译NDB群集”和“在Windows上从源代码编译和安装NDB群集”。

    (有关本章讨论的与NDB群集相关的mysqld选项和变量的信息,请参阅“ NDB群集的MySQL服务器选项和变量”。)

    如果mysqld二进制文件是通过群集支持构建的,则NDBCLUSTER默认情况下仍禁用存储引擎。您可以使用两个可能的选项之一来启用此引擎:

    • 使用--ndbcluster开始时作为命令行启动选项的mysqld
    • ndbcluster在文件的[mysqld]部分插入一行my.cnf

    验证服务器是否在NDBCLUSTER启用存储引擎的情况下运行的一种简单方法是SHOW ENGINES在MySQL Monitor(mysql)中发出该语句。您应该将值YES视为Support的行中的值NDBCLUSTER。如果您NO在此行中看到或在输出中没有显示该行,则说明您没有运行NDB启用了MySQL的版本。如果您DISABLED在此行中看到,则需要以上述两种方式之一启用它。

    要读取集群配置数据,MySQL服务器至少需要三项信息:

    • MySQL服务器自己的集群节点ID
    • 管理服务器(MGM节点)的主机名或IP地址
    • 可以连接到管理服务器的TCP / IP端口号

    节点ID可以动态分配,因此不一定要明确指定它们。

    所述mysqld的参数ndb-connectstring被用来启动时要么指定命令行上的连接字符串的mysqldmy.cnf。连接字符串包含可以在其中找到管理服务器的主机名或IP地址,以及它使用的TCP / IP端口。

    在以下示例中,ndb_mgmd.mysql.com是管理服务器所在的主机,管理服务器在端口1186上侦听群集消息:

    shell>mysqld --ndbcluster --ndb-connectstring=ndb_mgmd.mysql.com:1186
    

    有关连接字符串的更多信息,请参见“ NDB群集连接字符串”。

    有了这些信息,MySQL服务器将完全参与集群。(我们通常将以此方式运行的mysqld进程称为SQL节点。)它将完全了解所有群集数据节点及其状态,并将建立与所有数据节点的连接。在这种情况下,它可以使用任何数据节点作为事务协调器,并读取和更新节点数据。

    您可以在mysql客户端中参见是否使用来将MySQL服务器连接到群集SHOW PROCESSLIST。如果MySQL服务器已连接到集群,并且您具有PROCESS特权,则输出的第一行如下所示:

    mysql> SHOW PROCESSLIST \G
    *************************** 1. row***************************
         Id: 1
       User: system user
       Host:
         db:
    Command: Daemon
       Time: 1
      State: Waiting for event from ndbcluster
    Info: NULL
    
    重要

    要参与NDB群集,必须同时使用选项和(或中的等效项)启动mysqld进程。如果仅使用该选项启动mysqld,或者如果它无法联系集群,则无法使用表,也不管存储引擎如何都不能创建任何新表。后一种限制是一种安全措施,旨在防止创建与以下名称相同的表--ndbcluster--ndb-connectstringmy.cnf--ndbclusterNDBNDBSQL节点未连接到群集时使用表。如果您希望在mysqld进程未参与NDB群集时使用其他存储引擎创建表,则必须在没有--ndbcluster选项的情况下重新启动服务器。