MySQL Cluster篇 — 安装方式

概述

本章,您将学习到 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_mgmndb_mgmd 这两个二进制可执行文件
  • SQL 节点 - 需要 mysqldmysql.server 这两个二进制可执行文件
  • 数据节点 - 需要 ndbdndbmtd 这两个可执行文件

后续

上面的内容仅说明安装方式,还有很多的细节配置没有说明。本系列后续的部署操作会按照 「Linux 通用的二进制文件」这种安装进行,会有更加详细的说明。

Avatar photo

关于 陸風睿

GNU/Linux 从业者、开源爱好者、技术钻研者,撰写文档既是兴趣也是工作内容之一。Q - "281957576";WeChat - "jiulongxiaotianci",Github - https://github.com/jimcat8
用一杯咖啡支持我们,我们的每一篇[文档]都经过实际操作和精心打磨,而不是简单地从网上复制粘贴。期间投入了大量心血,只为能够真正帮助到您。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇