3.5.2.2 验证所有集群进程 PID 文件

您必须验证 wild 集群中的每个进程都具有有效的 PID 文件。出于本次讨论的目的,有效的 PID 文件具有以下特征:

  • 文件名的格式为 ,其中是用于进程的节点 ID。 ndb_node_id.pidnode_id

  • 该文件位于进程使用的数据目录中。

  • 该文件的第一行包含节点进程的进程 ID,并且仅包含该进程 ID(当应用于 MySQL Cluster Manager 1.4.7 及更高版本的数据注释时,此要求会发生变化;请参阅下面的解释)。

  1. 要检查管理节点进程的 PID 文件,请登录到 host 上的系统 shell 198.51.100.102,切换到集群配置文件中参数指定的管理节点数据目录 Datadir,然后检查 PID 文件是否存在。在 Linux 上,您可以使用此处显示的命令:

    $> ls ndb_*.pid
    ndb_50.pid

    .pid使用寻呼机或文本编辑器 检查匹配文件的内容 。我们在这里使用更多用于此目的:

    $> more ndb_50.pid
    10221

    显示的数字应与 ndb_mgmd进程 ID 匹配。我们可以在 Linux 上使用ps 命令进行检查:

    $> ps -ef | grep ndb_mgmd
    ari      10221     1  0 19:38 ?        00:00:09 /home/ari/bin/cluster/bin/ndb_mgmd --config-file=/home/ari/bin/cluster/wild-cluster/config.ini --config-cache=false --ndb-nodeid=50

    管理节点 PID 文件满足本节开头列出的要求。

  2. 接下来,我们检查主机上数据节点的 PID 文件 198.51.100.103198.51.100.104. 登录到 上的系统 shell 198.51.100.103,然后获取此主机上的ndbd进程的进程 ID,如下所示:

    $> ps -ef | grep ndbd
    ari      12838     1  0 Nov08 ?        00:10:12 ./bin/ndbd --initial --ndb-nodeid=2 --ndb-connectstring=198.51.100.102

    正如集群配置文件中指定的那样,节点的DataDir/home/ari/bin/cluster/wild-cluster/2/data. 转到该目录以查找名为的文件 ndb_2.pid

    $> ls ndb_*.pid
    ndb_2.pid

    现在检查此文件的内容,您将看到数据节点的天使进程的进程 ID(有关天使进程的更多解释, 请参阅前面关于停止天使进程的说明):

    $> more ndb_2.pid
    12836

    对于 MySQL Cluster Manager 1.4.6 及更早版本:将 PID 文件中的数字更改为数据节点自己的 PID:

    $> sed -i 's/12836/12838/' ndb_2.pid
    $> more ndb_2.pid
    12838

    /home/ari/bin/cluster/wild-cluster/3/data同样,我们定位并调整host上 剩余数据节点(节点ID为3,其数据目录为)的PID文件内容 198.51.100.104

    $> ps -ef | grep ndbd
    ari      11276     1  0 Nov09 ?        00:09:44 ./cluster//bin/ndbd --initial --ndb-nodeid=3 --ndb-connectstring=198.51.100.102
    
    $> more /home/ari/bin/cluster/wild-cluster/3/data/ndb_3.pid
    11274

    编辑.pid文件,使其包含数据节点进程自己的 PID:

    $> cd /home/ari/bin/cluster/wild-cluster/3/data/
    $> sed -i 's/11274/11276/' ndb_3.pid
    $> more ndb_3.pid
    11276

    这个数据节点的PID文件现在也满足我们的要求了。

    对于 MySQL Cluster Manager 1.4.7 及更高版本:无需调整 PID 文件以包含数据节点进程自己的 PID,因为这将由 导入最后一步中--remove-angel 与命令一起使用的选项处理import cluster过程。只要数据节点具有包含其天使进程的 PID 的有效 PID 文件,就可以导入数据节点。

    我们准备好继续 运行在 host 上的mysqld198.51.100.102节点。

  3. 检查 mysqld 节点的 PID 文件:它的默认位置是节点的数据目录,由datadir 配置文件中的选项或mysqld 进程启动时的命令行指定。让我们转到 /home/ari/bin/cluster/wild-cluster/51/data 主机上的数据目录198.51.100.104并查找 PID 文件。

    $> ls *.pid
    localhost.pid

    请注意,MySQL 服务器可以使用选项启动,该--pid-file选项将 PID 文件放在指定位置。在以下情况下,同一个mysqld节点已使用mysqld_safe 脚本启动,并且ps 命令显示使用的值 --pid-file

    $>  ps -ef | grep mysqld
    ari      11999  5667  0 13:15 pts/1    00:00:00 /bin/sh ./bin/mysqld_safe --defaults-file=/home/ari/bin/cluster/wild-cluster.cnf --ndb-nodeid=51
    ari      12136 11999  1 13:15 pts/1    00:00:00 /home/ari/bin/cluster/bin/mysqld --defaults-file=/home/ari/bin/cluster/wild-cluster.cnf
    --basedir=/home/ari/bin/cluster/ --datadir=/home/ari/bin/cluster/wild-cluster/51/data/ --plugin-dir=/home/ari/bin/cluster//lib/plugin
    --ndb-nodeid=51 --log-error=/home/ari/bin/cluster/wild-cluster/51/data//localhost.localdomain.err
    --pid-file=/home/ari/bin/cluster/wild-cluster/51/data//localhost.localdomain.pid

    如示例中所示,您的 PID 文件很可能未以集群导入所需的格式命名 ( );如果 使用了该选项,PID 文件可能不在所需位置(数据目录)。让我们看看上一个示例中引用的 PID 文件: ndb_node_id.pid--pid-file

    $> more /home/ari/bin/cluster/wild-cluster/51/data//localhost.localdomain.pid
    12136

    SQL 节点的 PID 文件位于可接受的位置(在数据目录内)并且具有正确的内容(正确的 PID),但名称错误。让我们将 PID 文件复制到同一目录中正确命名的文件中,如下所示

    $> cd /home/ari/bin/cluster/wild-cluster/51/data/
    $> cp localhost.localdomain.pid ndb_51.pid