当前位置: 首页 > 文档资料 > MySQL 中文手册 >

17.5. MySQL簇中的进程管理

优质
小牛编辑
129浏览
2023-12-01
17.5.1. 用于MySQL簇的MySQL服务器进程使用
17.5.2. ndbd,存储引擎节点进程
17.5.3. ndb_mgmd,“管理服务器”进程
17.5.4. ndb_mgm,“管理客户端”进程
17.5.5. 用于MySQL簇进程的命令选项
要想掌握管理MySQL簇的方法,需要了解4种基本进程。在本章下面的几节内,介绍了这些进程在簇内的作用,它们的使用方法,以及每种进程可用的启动选项。

17.5.1. 用于MySQL簇的MySQL服务器进程使用

mysqld是传统的MySQL服务器进程。要想与MySQL簇一起使用,所创建的mysqld应支持NDB簇存储引擎,就像在预编译的-max二进制版本中那样,http://dev.mysql.com/downloads/。

即使采用该方式创建了mysqld二进制版本,在默认情况下,NDB簇存储引擎仍处于禁止状态。要想启用NDB簇存储引擎,可使用两种可能的选项之一:

·启动mysqld时,将“—ndbcluster”用作启动选项。

·在my.cnf文件的[mysqld]部分插入包含ndbcluster的1行内容。

验证运行的服务器是否启用了NDB簇存储引擎的简单方法是,在MySQL监视器(mysql)中发出命令SHOW ENGINES。在列出NDBCLUSTER的行中应能看到值YES,如果在该行上看到NO(或在输出中未显示该行),你所运行的是未启用NDB功能的MySQl版本。如果在该行上看到DISABLED,就需采用上述两种方法之一启用它。

为了读取簇配置数据,MySQL服务器至少需要3种信息:

·MySQL服务器自己的簇节点ID。

·管理服务器(MGM节点)的主机名或IP地址。

·与管理服务器相连的端口。

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

mysqld参数ndb-connectstring用于指定连接字符串,或是在启动mysqld时在命令行上指定,或是在my.cnf文件中指定。连接字符串包含主机名或IP地址,以及能够发现管理服务器的端口。

在下面的示例中,ndb_mgmd.mysql.com是管理服务器所在的主机,管理服务器在端口1186上监听簇消息。

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

关于连接字符串的更多信息,请参见17.4.4.2节,“MySQL簇连接字符串”。

给定该信息,MySQL服务器将成为簇中的完全参与者。(有时,我们也将运行在该方式下的mysqld进程称为SQL节点)。它能完全了解所有的簇数据节点以及它们的状态,并能建立与所有数据节点的连接。在这种情形下,它能将任何数据节点用作事务协调器,并能访问数据节点以执行读取和更新操作。

17.5.2. ndbd,存储引擎节点进程

ndbd是使用NDB簇存储引擎处理表中所有数据的进程。通过该进程,存储节点能够实现分布式事务处理,节点恢复,对磁盘的检查点操作,在线备份,以及相关的任务。

在MySQL簇中,一组ndbd进程能够共同处理数据。这些进程可以在相同的计算机(主机)上执行,也能在不同的计算机上执行。数据节点和簇主机之间的通信是完全可配置的。

Ndbd将生成一组日志文件,这些文件位于由配置文件中DataDir指定的目录下。下面列出了这些日志文件。注意,node_id代表节点的唯一ID。例如,ndb_2_error.log是由节点ID为2的存储节点生成的错误日志。

·ndb_node_id_error.log是包含所引用ndbd进程所遇到的所有崩溃记录的文件。该文件中的每条记录均包含1个简要的错误字符串,以及对该崩溃跟踪文件的引用。该文件的典型条目与下面给出的类似:

·Date/Time: Saturday 30 July 2004 - 00:20:01
·Type of error: error
·Message: Internal program error (failed ndbrequire)
·Fault ID: 2341
·Problem data: DbtupFixAlloc.cpp
·Object of reference: DBTUP (Line: 173)
·ProgramName: NDB Kernel
·ProcessID: 14909
·TraceFile: ndb_2_trace.log.2
·***EOM***

注释:请记住,错误日志文件中的最后1个条目并不必然是最新的(也不太可能),这点很重要。错误日志中的条目不是按时间顺序排列的,而是与ndb_node_id_trace.log.next(请参见下面的介绍)中定义的跟踪文件的顺序对应。因此,错误日志条目是按循环方式而不是顺序方式覆盖的。

·ndb_node_id_trace.log.trace_id是准确描述了错误出现之时所发生情况的跟踪文件。该信息在MySQL簇开发团队进行分析时很有帮助。

能够对覆盖旧文件之前创建的跟踪文件的数目进行配置。trace_id是为每个连续的跟踪文件增加的编号。

·ndb_node_id_trace.log.next是记录了要指定的下一个跟踪文件编号的文件。

·ndb_node_id_out.log是包含ndbd进程的任何数据输出的文件。仅当将ndbd启动为端口监督程序时才会创建该文件。

·ndb_node_id.pid是包含启动时作为端口监督程序的ndbd进程的进程ID的文件。它还能起到锁定文件的作用,以防止启动具有相同ID的节点。

·ndb_node_id_signal.log是仅在ndbd调试版下使用的文件,它能跟踪ndbd进程中所有的入站、出站和内部消息。以及它们的数据。

建议不要使用通过NFS安装的目录,这是因为在某些情况下,如果pid-file上的锁定依旧有效,即使当进程中止后也会产生问题。

启动ndbd时,或许需要指定管理服务器的主机名以及监听的端口号。作为可选方式,也可以指定进程将使用的节点ID。

shell> ndbd --connect-string="nodeid=2;host=ndb_mgmd.mysql.com:1186"

关于这方面的额外信息,请参见17.4.4.2节,“MySQL簇连接字符串”。

启动ndbd时,它实际上将启动两种进程。第1种进程称为“angel process”(天使进程),它的唯一任务是发现执行进程在何时完成,然后重启ndbd进程(如果作了该配置的话)。因此,如果你打算使用Unix的kill命令杀死ndbd进程,就需要杀死这两个进程。中止ndbd进程的更恰当方法是使用管理客户端,并通过该管理客户端停止进程。

执行进程采用了1个线程,用于读取、写入和扫描数据,以及所有其他任务。该线程是异步实施的,以便能方便地处理数以千计的并发活动。此外,看门狗线程负责监督执行线程,以确保执行线程不会陷入无限循环。线程池负责处理文件I/O,每个线程均能处理一个打开的文件。这些线程也能被ndbd进程中的传输器用作传输器连接。在执行包含更新在内的大量操作的系统中,如果允许,ndbd进程能占用2个CPU。对于拥有多CPU的机器,建议使用属于不同节点组的数个ndbd进程。

17.5.3. ndb_mgmd,“管理服务器”进程

管理服务器是这样一种进程,它读取簇配置文件,并将该信息分配给簇中所有请求该信息的节点。它还负责维护簇活动的日志。管理客户端能够连接到管理服务器,并检查簇的状态。

启动管理服务器时,不是一定需要指定连接字符串。但是,如果使用了1个以上的管理服务器,应提供连接字符串,而且簇中的每个节点应明确指定自己的节点ID。

下述文件是由ndb_mgmd在其启动目录下创建或使用的,并会被置于配置文件中指定的DataDir中。在下面的列表中,node_id是唯一性节点ID。

·config.ini是作为整体的簇的配置文件。该文件由用户创建并由管理服务器读取。在17.4节,“MySQL簇的配置”中,讨论了设置该文件的方法。

·ndb_node_id_cluster.log是簇事件日志文件。这类事件的例子包括:检查点操作的启动和完成,节点启动事件,节点故障,以及内存使用水平。关于簇事件的完整列表和描述,请参见17.6节,“MySQL簇的管理”。

当簇日志的大小达到1MB时,文件将被重命名为ndb_node_id_cluster.log.seq_id,其中seq_id是簇日志文件的序列号(例如,如果编号1、2、3已存在,下一个日志文件将用4命名)。

·ndb_node_id_out.log是将管理服务器用作端口监督程序时用于stdout和stderr的文件。

·ndb_node_id.pid是将管理服务器用作端口监督程序时所使用的PID文件。

17.5.4. ndb_mgm,“管理客户端”进程

对于簇的运行,实际上不需要管理客户端的进程。其价值在于它提供了一组命令,这组命令可用于检查簇的状态、启动备份、并执行其他管理功能。管理客户端使用C API来访问管理服务器,高级用户也能使用C API来编制专用的管理进程来执行任务,这类任务与ndb_mgm执行的类似。

启动管理客户端时,需要提供管理服务器的主机名和端口号,如下例所示。默认值是localhost和1186。

shell> ndb_mgm localhost 1186

关于使用ndb_mgm的更多信息,请参见17.5.5.4节,“ndb_mgm的命令选项”和17.6.2节,“管理客户端”中的命令。

17.5.5. 用于MySQL簇进程的命令选项

17.5.5.1. 用于mysqld的与MySQL有关的命令选项
17.5.5.2. ndbd命令选项
17.5.5.3. ndb_mgmd的命令选
17.5.5.4. ndb_mgm的命令选项

所有MySQL簇的可执行文件(除mysqld)均使用下述选项。早期MySQL簇版本的用户应注意,这些选项开关中的一些与MySQL 4.1簇中的相比有所改变,为的是保持它们之间的一致性,以及与mysqld的一致性。可以使用-?开关来查看支持的选项列表。

·-?,--usage,--help

给出简明清单,以及可用命令选项的描述。

·-V,--version

给出ndbd进程的版本号。该版本号是MySQL簇的版本号。版本号有一定的作用,这是因为并非所有的版本均能一起使用,而且在启动时,MySQL簇进程将验证二进制文件的版本是否能在同一簇内共存。执行MySQL簇的在线升级时,它也很重要(请参见MySQL簇的软件升级)。

·-c connect_string,--connect-string

connect_string作为命令选项,用于设置与管理服务器的连接字符串。

shell> ndbd --connect-string="nodeid=2;host=ndb_mgmd.mysql.com:1186"

·--debug[=options]

该选项仅能用于具有调试功能的版本。使用它,能够以与mysqld进程相同的方式允许来自调试调用的输出。

·-e,--execute

使用它,能够从系统shell将命令发送至簇执行程序,如:

shell> ndb_mgm -e show

shell> ndb_mgm --execute="SHOW"

等效于

NDB> SHOW;

它类似于“-e”选项与mysql命令行客户端一起工作的方式。请参见4.3.1节,“在命令行上使用选项”。

17.5.5.1. 用于mysqld的与MySQL有关的命令选项

·--ndbcluster

如果二进制版本包含对NDB簇存储引擎的支持,可使用该选项覆盖对NDB簇存储引擎(简称为NDB存储引擎)的默认禁止设置。使用MySQL簇时,NDB簇存储引擎是必要的。

·--skip-ndbcluster

禁止NDB簇存储引擎。对于包含该功能的二进制版本,在默认情况下,该功能是被禁止的,换句话讲,NDB簇存储引擎处于禁止状态,直至使用“—ndbcluster”选项激活了它为止。仅当所编译的服务器支持NDB簇存储引擎时,才能使用该选项。

·--ndb-connectstring=connect_string

使用NDB存储引擎时,通过设置该选项,能够指定分配簇配置数据的管理服务器。

17.5.5.2. ndbd命令选项

关于某些常见选项的更多信息,请参见17.5.5节,“用于MySQL簇进程的命令选项”。

·-d,--daemon

通知ndbd作为daemon(端口监督程序)进程执行(默认行为)。

·--nodaemon

指明ndbd不得作为daemon(端口监督程序)进程启动。调试ndbd以及希望将输出重定向到屏幕时,它很有用。

·--initial

通知ndbd执行初始化启动。初始化启动将删除以前ndbd实例为恢复目的创建的任何文件。它还能重新创建恢复用日志文件。注意,在某些操作系统上,该进程可能会占用较长的时间。

仅在首次启动ndbd进程时才应使用—initial启动,这是因为它将删除簇文件系统的所有文件,并再次创建所有的REDO日志文件。该规则的例外如下:

o 执行那些会更改文件内容的软件升级时。

o 用新的ndbd版本重启节点时。

o 出于某种原因,节点重启或系统重启不断失败时的最后手段。在这类情形下,请注意,由于数据文件的损坏,不能使用该节点来恢复数据。

该选项不影响那些已被受影响节点创建的备份文件。

·--nostart

指示ndbd不自动启动。使用该选项时,ndbd连接到管理服务器,从管理服务器获取配置数据,并初始化通信对象。但是,在管理服务器特别要求之前,它不会实际启动执行引擎。通过向管理客户端发出恰当的命令,可完成该任务。

17.5.5.3. ndb_mgmd的命令选

关于某些常见选项的更多信息,请参见17.5.5节,“用于MySQL簇进程的命令选项”。

·-ffilename, --config-file=filename, (OBSOLETE):-c filename

通知管理服务器应使用哪个文件作为其配置文件。必须指定该选项。文件名默认为config.ini。注意,“-c”快捷方式已过时,不应在新的安装实例中使用它。

·-d,--daemon

指示ndb_mgmd作为端口监督程序启动。这是默认行为。

·--nodaemon

指示管理服务器不作为端口监督程序启动。

17.5.5.4. ndb_mgm的命令选项

关于某些常见选项的更多信息,请参见17.5.5节,“用于MySQL簇进程的命令选项”。

·[host_name [port_num]]

要想启动管理客户端,需要指定管理服务器所在的位置,即指定主机名和端口。默认的主机名是localhost,默认端口是1186。

·--try-reconnect=number

如果与管理服务器的连接断开,每隔5秒,节点将尝试再次连接到管理服务器,直至成功。使用该选项,能够将尝试的字数限制在number指定的值,超过该限制后,将放弃尝试并通报错误。