Documentation Home
MySQL 8.0 参考手册  / 第 23 章 MySQL NDB Cluster 8.0  / 23.6 NDB Cluster的管理  / 23.6.10 NDB Cluster 磁盘数据表  /  18.6.11.2 对磁盘数据对象使用符号链接

18.6.11.2 对磁盘数据对象使用符号链接

通过将数据节点文件系统与撤消日志文件和表空间数据文件分开并将它们放在不同的磁盘上,可以大大提高使用磁盘数据存储的 NDB Cluster 的性能。在 NDB Cluster 的早期版本中,NDB Cluster 对此没有直接支持,并且有必要使用符号链接来实现这种分离,如本节后面所述。NDB Cluster 7.3 及更高版本支持数据节点配置参数 FileSystemPathDDFileSystemPathDataFilesFileSystemPathUndoFiles,这使得无需为此目的使用符号链接。有关这些参数的更多信息,请参阅 磁盘数据文件系统参数

本节其余部分描述的过程仅供参考。

集群中的每个数据节点都在文件中定义 的数据节点 目录下创建一个文件系统 。在此示例中,我们假设每个数据节点主机有 3 个磁盘,别名为 、和 ,并且集群的 包括以下内容: ndb_node_id_fsDataDirconfig.ini/data0/data1/data2config.ini

[ndbd default]
DataDir= /data0

我们的目标是将所有磁盘数据日志文件 放在每个数据节点主机上/data1,并将所有磁盘数据数据文件 /data2放在每个数据节点主机上。

笔记

在这个例子中,我们假设集群的数据节点主机都使用 Linux 操作系统。对于其他平台,您可能需要用操作系统的命令替换此处显示的命令。

为此,请执行以下步骤:

  • 在数据节点文件系统下创建指向其他驱动器的符号链接:

    $> cd /data0/ndb_2_fs
    $> ls
    D1  D10  D11  D2  D8  D9  LCP
    $> ln -s /data0 dnlogs
    $> ln -s /data1 dndata

    您现在应该有两个符号链接:

    $> ls -l --hide=D*
    lrwxrwxrwx 1 user group   30 2007-03-19 13:58 dndata -> /data1
    lrwxrwxrwx 1 user group   30 2007-03-19 13:59 dnlogs -> /data2

    我们仅针对节点 ID 为 2 的数据节点显示此信息;但是,您必须为每个数据节点执行此操作。

  • 现在,在mysql客户端中,使用符号链接创建一个日志文件组和表空间,如下所示:

    mysql> CREATE LOGFILE GROUP lg1
        ->    ADD UNDOFILE 'dnlogs/undo1.log'
        ->    INITIAL_SIZE 150M
        ->    UNDO_BUFFER_SIZE = 1M
        ->    ENGINE=NDBCLUSTER;
    
    mysql> CREATE TABLESPACE ts1
        ->    ADD DATAFILE 'dndata/data1.log'
        ->    USE LOGFILE GROUP lg1
        ->    INITIAL_SIZE 1G
        ->    ENGINE=NDBCLUSTER;

    验证文件是否已创建并正确放置,如下所示:

    $> cd /data1
    $> ls -l
    total 2099304
    -rw-rw-r--  1 user group 157286400 2007-03-19 14:02 undo1.dat
    
    $> cd /data2
    $> ls -l
    total 2099304
    -rw-rw-r--  1 user group 1073741824 2007-03-19 14:02 data1.dat
  • 如果您在一台主机上运行多个数据节点,则必须注意避免让它们尝试为磁盘数据文件使用相同的空间。您可以通过在每个数据节点文件系统中创建符号链接来简化此过程。假设您正在使用/data0两个数据节点文件系统,但您希望两个节点的磁盘数据文件都位于/data1. 在这种情况下,您可以执行类似于此处所示的操作:

    $> cd /data0
    $> ln -s /data1/dn2 ndb_2_fs/dd
    $> ln -s /data1/dn3 ndb_3_fs/dd
    $> ls -l --hide=D* ndb_2_fs
    lrwxrwxrwx 1 user group   30 2007-03-19 14:22 dd -> /data1/dn2
    $> ls -l --hide=D* ndb_3_fs
    lrwxrwxrwx 1 user group   30 2007-03-19 14:22 dd -> /data1/dn3
  • 现在您可以使用符号链接创建日志文件组和表空间,如下所示:

    mysql> CREATE LOGFILE GROUP lg1
        ->    ADD UNDOFILE 'dd/undo1.log'
        ->    INITIAL_SIZE 150M
        ->    UNDO_BUFFER_SIZE = 1M
        ->    ENGINE=NDBCLUSTER;
    
    mysql> CREATE TABLESPACE ts1
        ->    ADD DATAFILE 'dd/data1.log'
        ->    USE LOGFILE GROUP lg1
        ->    INITIAL_SIZE 1G
        ->    ENGINE=NDBCLUSTER;

    验证文件是否已创建并正确放置,如下所示:

    $> cd /data1
    $> ls
    dn2        dn3
    $> ls dn2
    undo1.log        data1.log
    $> ls dn3
    undo1.log        data1.log