概述
本章,您将学习到 MySQL NDB Cluster 的几种安装方式。
作者当前使用的操作系统为 Rocky Linux 8.10
从存储库安装
操作步骤如下:
# 下载 Rocky Linux 8.10 所需要的存储库软件包
Shell > wget https://dev.mysql.com/get/mysql84-community-release-el8-2.noarch.rpm
# 安装软件包
Shell > rpm -ivh mysql84-community-release-el8-2.noarch.rpm
# 将不需要的存储库永久关闭
Shell > dnf config-manager --set-disabled mysql-8.4-lts-community mysql-connectors-community mysql-tools-8.4-lts-community
# 永久开启需要的存储库
Shell > dnf config-manager --set-enabled mysql-cluster-8.4-lts-community
# 查询存储库信息
Shell > dnf repolist
repo id repo name
appstream Rocky Linux 8 - AppStream
baseos Rocky Linux 8 - BaseOS
extras Rocky Linux 8 - Extras
mysql-cluster-8.4-lts-community MySQL Cluster 8.4 LTS Community
# 若当前的集群主机需要运行管理节点(mgmd),则执行
Shell > dnf -y install mysql-cluster-community-management-server
# 若当前的集群主机需要运行 SQL 节点(mysqld),则执行
Shell > dnf -y install mysql-cluster-community-server
# 若当前的集群主机需要运行数据节点(ndbd),则执行
Shell > dnf -y install mysql-cluster-community-data-node
Linux 通用的二进制文件(推荐)
访问 https://dev.mysql.com/downloads/cluster/ 网站,依次选择 「8.4.8 LTS」 ---> 「Linux - Generic」 ---> 「Linux - Generic (glibc 2.28)(x86,64-bit)」 ,下载对应的文件即可。
若当前的集群主机需要运行管理节点(mgmd),则执行以下步骤:
Shell > wget https://dev.mysql.com/get/Downloads/MySQL-Cluster-8.4/mysql-cluster-8.4.8-linux-glibc2.28-x86_64.tar.xz
# 解压归档文件,并从归档文件中提取出文件
Shell > tar -vxf mysql-cluster-8.4.8-linux-glibc2.28-x86_64.tar.xz -C /usr/local/src/
# 运行管理节点只需要 ndb_mgm 和 ndb_mgmd 这两个二进制可执行文件
## 将这两个文件移动到 /usr/local/bin/ 目录中
Shell > cd /usr/local/src/mysql-cluster-8.4.8-linux-glibc2.28-x86_64/bin/ && cp ndb_mgm* /usr/local/bin/
# 添加执行权限
Shell > chmod a+x /usr/local/bin/*
Shell > ls -l /usr/local/bin/
total 41484
-rwxr-xr-x 1 root root 15128728 Feb 4 19:33 ndb_mgm
-rwxr-xr-x 1 root root 27345768 Feb 4 19:33 ndb_mgmd
若当前的集群主机需要运行 SQL 节点(mysqld),则执行以下步骤:
# 添加无任何用户成员的组
Shell > groupadd -r mysql
# 添加用户,并指定一些用户的属性
Shell > useradd -r -g mysql -s /sbin/nologin mysql
# 下载
Shell > wget https://dev.mysql.com/get/Downloads/MySQL-Cluster-8.4/mysql-cluster-8.4.8-linux-glibc2.28-x86_64.tar.xz
# 解压归档文件,并从归档文件中提取出文件
Shell > tar -vxf mysql-cluster-8.4.8-linux-glibc2.28-x86_64.tar.xz -C /usr/local/src/
# 创建目录的软链接(符号链接)
Shell > ln -s /usr/local/src/mysql-cluster-8.4.8-linux-glibc2.28-x86_64/ /usr/local/mysql.d.link
# 查阅
Shell > ls -l /usr/local/mysql.d.link
lrwxrwxrwx 1 root root 58 Feb 4 19:47 /usr/local/mysql.d.link -> /usr/local/src/mysql-cluster-8.4.8-linux-glibc2.28-x86_64/
# 初始化,这将随机生成 root 的用户密码
## 若提示错误,请安装 libaio 软件包
Shell > cd /usr/local/mysql.d.link/bin/ && ./mysqld --initialize
2026-02-04T11:53:35.049083Z 0 [System] [MY-015017] [Server] MySQL Server Initialization - start.
2026-02-04T11:53:35.050531Z 0 [System] [MY-013169] [Server] /usr/local/src/mysql-cluster-8.4.8-linux-glibc2.28-x86_64/bin/mysqld (mysqld 8.4.8-cluster) initializing of server in progress as process 2165
2026-02-04T11:53:35.057639Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2026-02-04T11:53:35.506097Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2026-02-04T11:53:36.936366Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 9%OBoe#luI*Q
2026-02-04T11:53:39.249993Z 0 [System] [MY-015018] [Server] MySQL Server Initialization - end.
# 递归变更链接目录下所有文件的所有者和所属组,递归变更数据目录的所有者
Shell > chown -R root:mysql /usr/local/mysql.d.link/
Shell > chown -R mysql /usr/local/mysql.d.link/data/
# 可使用 mysql.server 文件对进场进行启动、停止或重启
## start 还可以替换为 status、stop、reload、restart 中的任意一个
Shell > /usr/local/mysql.d.link/support-files/mysql.server start
若当前的集群主机需要运行数据节点(ndbd),则执行以下步骤:
# 下载
Shell > wget https://dev.mysql.com/get/Downloads/MySQL-Cluster-8.4/mysql-cluster-8.4.8-linux-glibc2.28-x86_64.tar.xz
# 解压归档文件,并从归档文件中提取出文件
Shell > tar -vxf mysql-cluster-8.4.8-linux-glibc2.28-x86_64.tar.xz -C /usr/local/src/
# 数据节点仅需要 ndbd 和 ndbmtd 这两个可执行文件
Shell > cd /usr/local/src/mysql-cluster-8.4.8-linux-glibc2.28-x86_64/bin/ && cp -p ndbd /usr/local/bin/ && cp -p ndbmtd /usr/local/bin/
# 变更权限
Shell > chmod a+x /usr/local/bin/
编译源码包进行安装
该方式能充分利用硬件释放出最高性能,适合运行在集群环境下的高密度计算应用,需付出的代价就是编译时的时间特别长。
# 安装必须的环境依赖包(rpcgen 软件包来自于 devel 存储库)
Shell > dnf config-manager --set-enabled devel
Shell > dnf -y install libaio ncurses-compat-libs ncurses-devel \
make cmake gcc bison git libtirpc-devel openssl openssl-devel rpcgen \
gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-binutils \
gcc-toolset-12-annobin-annocheck gcc-toolset-12-annobin-plugin-gcc
# 下载需要的 boost 文件
Shell > wget https://archives.boost.io/release/1.90.0/source/boost_1_90_0.tar.gz
# 解压并提取
Shell > tar -vxf boost_1_90_0.tar.gz
# 下载源码包并解压
Shell > wget https://dev.mysql.com/get/Downloads/MySQL-Cluster-8.4/mysql-cluster-gpl-8.4.8.tar.gz
Shell > tar -vxf mysql-cluster-gpl-8.4.8.tar.gz -C /usr/local/src/
特定于 NDB Cluster 的 CMAKE 选项(MySQL Server 源代码的编译选项也适合 NDB Cluster 的 CMAKE 选项):
| 选项 | 说明 | 默认值 |
|---|---|---|
-DCMAKE_INSTALL_PREFIX=PATH |
安装路径 | |
-DNDB_UTILS_LINK_DYNAMIC={ON\|OFF} |
控制 NDB 实用程序(如 "NDB_DROP_TABLE" )是静态链接还是动态链接;静态链接是默认设置 | OFF |
-DWITH_CLASSPATH=PATH |
设置用于为 Java 构建 NDB 集群连接器的 class 路径 | |
-DWITH_NDB={ON\|OFF} |
是否构建MySQL NDB Cluster | |
-DWITH_NDBMTD={ON\|OFF} |
是否构建可执行二进制文件 ndbmtd | ON |
-DWITH_NDB_JAVA={ON\|OFF} |
是否启用构建具有 Java 支持的 NDB Cluster,包括 .ClusterJ | ON |
-DWITH_NDB_PORT=port |
使构建的 NDB Cluster 管理服务器(ndb_mgmd)默认使用此端口 | 1186 |
开始编译安装:
Shell > cd /usr/local/src/mysql-cluster-gpl-8.4.8/ && mkdir build && cd build
Shell > vim quick_install.sh
#!/bin/bash
cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql-cluster8/ \
-DENABLED_LOCAL_INFILE=1 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/root/boost_1_90_0/ \
-DWITH-NDB=ON \
-DWITH-NDBMTD=ON \
&& make && make install
# 根据不同的机器性能,大约平均需要等待 2 小时以上
Shell > chmod u+x quick_install.sh && ./quick_install.sh
...
-- Build files have been written to: /usr/local/src/mysql-cluster-gpl-8.4.8/build
[ 0%] Building CXX object CMakeFiles/gmock.dir/extra/googletest/googletest-1.17.0/googlemock/src/gmock-all.cc.o
[ 0%] Linking CXX static library libgmock.a
[ 0%] Built target gmock
[ 0%] Building CXX object CMakeFiles/gtest.dir/extra/googletest/googletest-1.17.0/googletest/src/gtest-all.cc.o
[ 0%] Linking CXX static library libgtest.a
[ 0%] Built target gtest
[ 0%] Building CXX object CMakeFiles/gmock_main.dir/extra/googletest/googletest-1.17.0/googlemock/src/gmock_main.cc.o
[ 0%] Linking CXX static library libgmock_main.a
[ 0%] Built target gmock_main
[ 0%] Building CXX object CMakeFiles/gtest_main.dir/extra/googletest/googletest-1.17.0/googletest/src/gtest_main.cc.o
[ 0%] Linking CXX static library libgtest_main.a
...
# 最终编译源码包且安装后释放出的文件或目录
Shell > ls -l /usr/local/mysql-cluster8/
total 844
drwxr-xr-x 2 root root 4096 Feb 5 00:02 bin
drwxr-xr-x 2 root root 4096 Feb 5 00:02 docs
drwxr-xr-x 3 root root 4096 Feb 5 00:02 include
drwxr-xr-x 6 root root 4096 Feb 5 00:02 lib
-rw-r--r-- 1 root root 341082 Jan 9 17:13 LICENSE
-rw-r--r-- 1 root root 116704 Jan 9 16:44 LICENSE.router
-rw-r--r-- 1 root root 341082 Jan 9 17:13 LICENSE-test
drwxr-xr-x 4 root root 4096 Feb 5 00:02 man
-rw-r--r-- 1 root root 1672 Feb 4 20:49 mysqlrouter-log-rotate
drwxr-xr-x 10 root root 4096 Feb 5 00:02 mysql-test
-rw-r--r-- 1 root root 666 Jan 9 16:44 README
-rw-r--r-- 1 root root 679 Jan 9 16:44 README.router
-rw-r--r-- 1 root root 666 Jan 9 16:44 README-test
drwxrwxr-x 2 root root 4096 Feb 5 00:02 run
drwxr-xr-x 28 root root 4096 Feb 5 00:02 share
drwxr-xr-x 2 root root 4096 Feb 5 00:02 support-files
drwxr-xr-x 3 root root 4096 Feb 5 00:02 var
# 目录大小为 1.5GB
Shell > du -sh /usr/local/mysql-cluster8/
1.5G /usr/local/mysql-cluster8/
不同节点类型需要不同的二进制文件:
- 管理节点 - 需要
ndb_mgm和ndb_mgmd这两个二进制可执行文件 - SQL 节点 - 需要
mysqld和mysql.server这两个二进制可执行文件 - 数据节点 - 需要
ndbd和ndbmtd这两个可执行文件
后续
上面的内容仅说明安装方式,还有很多的细节配置没有说明。本系列后续的部署操作会按照 「Linux 通用的二进制文件」这种安装进行,会有更加详细的说明。
版权声明:「自由转载-保持署名-非商业性使用-禁止演绎 3.0 国际」(CC BY-NC-ND 3.0)
用一杯咖啡支持我们,我们的每一篇[文档]都经过实际操作和精心打磨,而不是简单地从网上复制粘贴。期间投入了大量心血,只为能够真正帮助到您。
暂无评论










