在Linux上安装NDB群集
本节介绍Linux和其他类似Unix的操作系统上NDB Cluster的安装方法。尽管接下来的几节将介绍Linux操作系统,但是此处给出的说明和过程应该很容易适应于其他受支持的类似Unix的平台。有关特定于Windows系统的手动安装和设置说明,请参见“在Windows上安装NDB群集”。
每个NDB群集主机必须安装正确的可执行程序。运行SQL节点的主机必须在其上安装MySQL服务器二进制文件(mysqld)。管理节点需要管理服务器守护程序(ndb_mgmd);数据节点需要数据节点守护程序(ndbd或ndbmtd)。无需在管理节点主机和数据节点主机上安装MySQL Server二进制文件。建议您还在管理服务器主机上安装管理客户端(ndb_mgm)。
可以使用Oracle的预编译二进制文件(下载为.tar.gz归档文件),RPM软件包(也可以从Oracle获取)或源代码来在Linux上安装NDB Cluster。所有这三种安装方法将在以下部分中介绍。
无论使用哪种方法,在安装NDB群集二进制文件之后,仍然有必要在启动群集之前为所有群集节点创建配置文件。请参见“ NDB群集的初始配置”。
在Linux上安装NDB群集二进制版本
本节介绍了从Oracle提供的预编译二进制文件为每种类型的Cluster节点安装正确的可执行文件所需的步骤。
为了使用预编译的二进制文件设置群集,每个群集主机的安装过程的第一步是从NDB群集下载页面下载二进制存档。(对于最新的64位NDB 8.0版本,为mysql-cluster-gpl-8.0.20-linux-glibc2.12-x86_64.tar.gz。)我们假定您已将此文件放置在每台计算机的/var/tmp目录中。
如果需要自定义二进制文件,请参见“使用开发源树安装MySQL”。
注意完成安装后,请不要启动任何二进制文件。我们将向您展示如何按照节点的配置进行操作(请参见“ NDB群集的初始配置”)。
SQL节点。在指定用于承载SQL节点的每台计算机上,以系统root用户身份执行以下步骤:
检查您的
/etc/passwd和/etc/group文件(或使用操作系统提供的用于管理用户和组的任何工具),以参见系统上是否已存在mysql组和mysql用户。一些操作系统发行版会在操作系统安装过程中创建这些发行版。如果尚不存在,请创建一个新的mysql用户组,然后将mysql用户添加到该组:shell>
groupadd mysql shell>useradd -g mysql -s /bin/false mysql在不同版本的Unix上,useradd和groupadd的语法可能略有不同,或者它们的名称也可能不同,例如adduser和addgroup。
将位置更改为包含下载文件的目录,解压缩归档文件,并创建一个名为
mysql该mysql目录的符号链接。注意
实际的文件和目录名称根据NDB群集版本号而异。
shell>
cd /var/tmp shell>tar -C /usr/local -xzvf mysql-cluster-gpl-8.0.20-linux-glibc2.12-x86_64.tar.gz shell>ln -s /usr/local/mysql-cluster-gpl-8.0.20-linux-glibc2.12-x86_64 /usr/local/mysql将位置更改为
mysql目录,并使用mysqld设置系统数据库--initialize,如下所示:shell>
cd mysql shell>mysqld --initialize这将为MySQL
root帐户生成一个随机密码。如果您不希望生成随机密码,则可以用--initialize-insecure选项代替--initialize。无论哪种情况,在执行此步骤之前,都应参见“初始化数据目录”以获取更多信息。另请参见“mysql_secure_installation-提高MySQL安装安全性”。为MySQL服务器和数据目录设置必要的权限:
shell>
chown -R root . shell>chown -R mysql data shell>chgrp -R mysql .将MySQL启动脚本复制到适当的目录,使其可执行,并将其设置为在操作系统启动时启动:
shell>
cp support-files/mysql.server /etc/rc.d/init.d/ shell>chmod +x /etc/rc.d/init.d/mysql.server shell>chkconfig --add mysql.server(启动脚本目录可能会因您的操作系统和版本而异,例如,在某些Linux发行版中为
/etc/init.d。)在这里,我们使用Red Hat的chkconfig创建指向启动脚本的链接。在您的平台上使用适合此目的的任何方式,例如 Debian上的update-rc.d。
请记住,必须在要驻留SQL节点的每台计算机上重复上述步骤。
数据节点。数据节点的安装不需要mysqld二进制文件。仅需要NDB群集数据节点可执行文件ndbd(单线程)或ndbmtd(多线程)。这些二进制文件也可以在.tar.gz存档中找到。同样,我们假设您已将此归档文件放在中/var/tmp。
作为系统root(即,在使用sudo,su root或您的系统等效物临时承担系统管理员帐户的特权之后),执行以下步骤以在数据节点主机上安装数据节点二进制文件:
将位置更改为
/var/tmp目录,然后将ndbd和ndbmtd二进制文件从存档中提取到合适的目录中,例如/usr/local/bin:shell>
cd /var/tmp shell>tar -zxvf mysql-cluster-gpl-8.0.20-linux-glibc2.12-x86_64.tar.gz shell>cd mysql-cluster-gpl-8.0.20-linux-glibc2.12-x86_64 shell>cp bin/ndbd /usr/local/bin/ndbd shell>cp bin/ndbmtd /usr/local/bin/ndbmtd(
/var/tmp一旦将ndb_mgm和ndb_mgmd复制到可执行文件目录中,就可以安全地删除通过解压缩下载的归档文件而创建的目录及其包含的文件。)将位置更改为将文件复制到的目录,然后使它们都可执行:
shell>
cd /usr/local/bin shell>chmod +x ndb*
在每个数据节点主机上应重复上述步骤。
尽管只需要一个数据节点可执行文件即可运行NDB Cluster数据节点,但在前面的说明中,我们已经说明了如何安装ndbd和ndbmtd。我们建议您在安装或升级NDB群集时执行此操作,即使您打算仅使用它们中的一个,也可以这样做,因为这样可以节省时间和麻烦,以防您以后决定从一个更改为另一个。
注意托管数据节点的每台计算机上的数据目录为
/usr/local/mysql/data。在配置管理节点时,此信息必不可少。(请参见“ NDB群集的初始配置”。)
管理节点。管理节点的安装不需要mysqld二进制文件。仅需要NDB群集管理服务器(ndb_mgmd);您很可能也希望安装管理客户端(ndb_mgm)。这两个二进制文件也都可以在.tar.gz存档中找到。同样,我们假设您已将此归档文件放在中/var/tmp。
作为system root,执行以下步骤在管理节点主机上安装ndb_mgmd和ndb_mgm:
将位置更改为
/var/tmp目录,然后将ndb_mgm和ndb_mgmd从存档中提取到合适的目录中,例如/usr/local/bin:shell>
cd /var/tmp shell>tar -zxvf mysql-cluster-gpl-8.0.20-linux-glibc2.12-x86_64.tar.gz shell>cd mysql-cluster-gpl-8.0.20-linux-glibc2.12-x86_64 shell>cp bin/ndb_mgm* /usr/local/bin(
/var/tmp一旦将ndb_mgm和ndb_mgmd复制到可执行文件目录中,就可以安全地删除通过解压缩下载的归档文件而创建的目录及其包含的文件。)将位置更改为将文件复制到的目录,然后使它们都可执行:
shell>
cd /usr/local/bin shell>chmod +x ndb_mgm*
在“ NDB群集的初始配置”中,我们为示例NDB群集中的所有节点创建配置文件。
从RPM安装NDB群集
本节介绍了使用Oracle提供的RPM软件包为每种类型的NDB Cluster 8.0节点安装正确的可执行文件的必要步骤。有关NDB Cluster 早期版本的RPM的信息,请参阅使用旧式RPM(NDB 7.5.3和更早版本)进行安装。
作为本节中描述的方法的替代,Oracle提供了NDB Cluster的MySQL存储库,该存储库与许多常见的Linux发行版兼容。此处列出了两个可用于基于RPM的分发的重新发布记录:
- 对于使用yum或dnf的发行版,可以将MySQL Yum存储库用于NDB群集。有关说明和其他信息,请参见使用Yum存储库安装MySQL NDB群集。
- 对于SLES,可以将MySQL SLES存储库用于NDB群集。有关说明和其他信息,请参见使用SLES存储库安装MySQL NDB群集。
RPM可用于32位和64位Linux平台。这些RPM的文件名使用以下模式:
mysql-cluster-community-data-node-8.0.20-1.el7.x86_64.rpm
mysql-cluster-license-component-ver-rev.distro.arch.rpm
license:= {commercial | community}
component: {management-server | data-node | server | client | other—see text}
ver: major.minor.release
rev: major[.minor]
distro: {el6 | el7 | sles12}
arch: {i686 | x86_64}
license指示RPM是NDB Cluster的商业版本还是社区版本的一部分。在本节的其余部分中,我们以示例为例,说明您正在安装社区版本。
component下表中提供了的可能值以及相关说明:
NDB群集RPM分发的组件
| 零件 | 描述 |
|---|---|
| auto-installer | NDB群集自动安装程序;见第22.2.1,“NDB簇自动安装程序”,对使用 |
| client | MySQL和NDB客户端程序;包括mysql客户端,ndb_mgm客户端和其他客户端工具 |
| common | MySQL服务器所需的字符集和错误消息信息 |
| data-node | ndbd和 ndbmtd数据节点二进制文件 |
| devel | MySQL客户端开发所需的头文件和库文件 |
| embedded | 嵌入式MySQL服务器 |
| embedded-compat | 向后兼容的嵌入式MySQL服务器 |
| embedded-devel | 用于开发嵌入式MySQL应用程序的头文件和库文件 |
| java | 支持ClusterJ应用程序所需的JAR文件 |
| libs | MySQL客户端库 |
| libs-compat | 向后兼容的MySQL客户端库 |
| management-server | NDB群集管理服务器(ndb_mgmd) |
| memcached | 支持所需的文件ndbmemcache |
| minimal-debuginfo | 软件包服务器最小调试信息;在开发使用此程序包的应用程序或调试此程序包时非常有用 |
| ndbclient | NDB运行NDB API和MGM API应用程序的客户端库(libndbclient) |
| ndbclient-devel | 开发NDB API和MGM API应用程序所需的标头和其他文件 |
| nodejs | 设置对NDB群集的Node.JS支持所需的文件 |
| server | 包括具有存储引擎支持的MySQL服务器(mysqld)NDB,以及相关的MySQL服务器程序 |
| server-minimal | 最小安装用于NDB的MySQL服务器和相关工具 |
| test | mysqltest,其他MySQL测试程序和支持文件 |
.tar还可以使用给定平台和体系结构的所有NDB群集RPM 的单个捆绑包(文件)。该文件的名称遵循此处显示的模式:
mysql-cluster-license-ver-rev.distro.arch.rpm-bundle.tar
您可以使用tar或首选的用于提取档案的工具从该文件中提取单个RPM文件。
下表列出了安装三种主要类型的NDB群集节点所需的组件:
- 管理节点:
management-server - 数据节点:
data-node - SQL节点:
server和common
此外,client应安装RPM以在至少一个管理节点上提供ndb_mgm管理客户端。您可能还希望将其安装在SQL节点上,以使mysql和其他MySQL客户端程序在这些节点上可用。本节稍后将讨论按类型安装节点。
ver表示NDB8.0中由三部分组成的存储引擎版本号。x格式,如8.0.20示例所示。rev在中提供RPM版本号major。minor格式。在本节所示的示例中,我们使用1.1此值。
的distro(Linux发行)是一个rhel5(甲骨文Linux 5时,红帽企业Linux 4和5),el6(甲骨文Linux 6中,红帽企业Linux 6),el7(甲骨文的Linux 7,红帽企业Linux 7),或sles12(SUSE企业Linux 12)。对于本节中的示例,我们假定主机运行Oracle Linux 7,Red Hat Enterprise Linux 7或等效的(el7)。
arch适用i686于32位RPM和x86_6464位版本。在此处显示的示例中,我们假设使用64位平台。
RPM文件名(此处显示为8.0.20)中的NDB群集版本号可能会根据您实际使用的版本而有所不同。所有要安装的群集RPM具有相同的版本号非常重要。该体系结构还应该适合要安装RPM的机器;特别要注意的是,64位RPM(x86_64)不能用于32位操作系统(i686用于后者)。
数据节点。在承载NDB群集数据节点的计算机上,仅需要安装data-node RPM。为此,请将此RPM复制到数据节点主机,并以系统root用户身份运行以下命令,并根据需要替换为RPM显示的名称,以匹配从MySQL网站下载的RPM的名称:
shell>rpm -Uhv mysql-cluster-community-data-node-8.0.20-1.el7.x86_64.rpm
这会将ndbd和ndbmtd数据节点二进制文件安装在中/usr/sbin。这些中的任何一个都可用于在此主机上运行数据节点进程。
SQL节点。将server和commonRPM 复制到用于托管NDB群集SQL节点的每台计算机(server require common)。server通过以系统超级用户身份执行以下命令来安装 RPM,并根据需要替换为RPM显示的名称,以匹配从MySQL网站下载的RPM的名称:
shell>rpm -Uhv mysql-cluster-community-server-8.0.20-1.el7.x86_64.rpm
这将在目录中安装具有存储引擎支持的MySQL服务器二进制文件(mysqld)。它还会安装所有需要的MySQL Server支持文件和有用的MySQL服务器程序,包括mysql.server和mysqld_safe启动脚本(分别在和中)。RPM安装程序应自动处理常规配置问题(例如,如果需要,请创建用户和组)。NDB/usr/sbin/usr/share/mysql/usr/binmysql
重要您必须使用为NDB Cluster发布的这些RPM的版本。为标准MySQL服务器发布的版本不提供对
NDB存储引擎的支持。
要管理SQL节点(MySQL服务器),还应该安装clientRPM,如下所示:
shell>rpm -Uhv mysql-cluster-community-client-8.0.20-1.el7.x86_64.rpm
这会将mysql客户端和其他MySQL客户端程序(例如mysqladmin和mysqldump)安装到/usr/bin。
管理节点。要安装NDB群集管理服务器,仅需要使用management-serverRPM。将此RPM复制到用于承载管理节点的计算机,然后通过以系统root用户身份运行以下命令进行安装(必要时替换为RPM显示的名称,以匹配management-server从MySQL网站下载的RPM的名称):
shell>rpm -Uhv mysql-cluster-commercial-management-server-8.0.20-1.el7.x86_64.rpm
该RPM 在目录中安装管理服务器二进制文件ndb_mgmd/usr/sbin。尽管这是运行管理节点实际所需的唯一程序,但最好同时提供ndb_mgm NDB群集管理客户端。您可以通过安装 RPM 来获得此程序以及其他NDB客户端程序,例如ndb_desc和ndb_configclient。
有关使用Oracle提供的RPM安装MySQL的一般信息,请参见“使用Oracle的RPM软件包在Linux上安装MySQL”。
从RPM安装后,您仍然需要配置集群。有关相关信息,请参见“ NDB群集的初始配置”。
所有要安装的群集RPM具有相同的版本号非常重要。该architecture名称还应该适合要安装RPM的机器;特别要注意的是,64位RPM不能与32位操作系统一起使用。
数据节点。在要承载群集数据节点的计算机上,仅需要安装serverRPM。为此,请将此RPM复制到数据节点主机,并以系统root用户身份运行以下命令,并根据需要替换为RPM显示的名称,以匹配从MySQL网站下载的RPM的名称:
shell>rpm -Uhv MySQL-Cluster-server-gpl-8.0.20-1.sles11.i386.rpm
尽管这将安装所有NDB Cluster二进制文件,但实际上仅需要程序ndbd或ndbmtd(都在中/usr/sbin)来运行NDB Cluster数据节点。
SQL节点。在每台用于承载群集SQL节点的计算机上,server通过以系统root用户身份执行以下命令来安装RPM,并根据需要替换为RPM显示的名称,以匹配从MySQL网站下载的RPM的名称:
shell>rpm -Uhv MySQL-Cluster-server-gpl-8.0.20-1.sles11.i386.rpm
这将在目录中安装具有存储引擎支持的MySQL服务器二进制文件(mysqld),以及所有需要的MySQL Server支持文件。它还安装了mysql.server和mysqld_safe启动脚本(分别在和中)。RPM安装程序应自动处理常规配置问题(例如,如果需要,请创建用户和组)。NDB/usr/sbin/usr/share/mysql/usr/binmysql
要管理SQL节点(MySQL服务器),还应该安装clientRPM,如下所示:
shell>rpm -Uhv MySQL-Cluster-client-gpl-8.0.20-1.sles11.i386.rpm
这将安装mysql客户端程序。
管理节点。要安装NDB群集管理服务器,仅需要使用serverRPM。将此RPM复制到用于承载管理节点的计算机,然后通过以系统root用户身份运行以下命令进行安装(必要时替换为RPM显示的名称,以匹配server从MySQL网站下载的RPM的名称):
shell>rpm -Uhv MySQL-Cluster-server-gpl-8.0.20-1.sles11.i386.rpm
尽管此RPM安装了许多其他文件,但实际上只需要管理服务器二进制文件ndb_mgmd(在/usr/sbin目录中)即可运行管理节点。该serverRPM还安装ndb_mgm,在NDB管理客户端。
有关使用Oracle提供的RPM安装MySQL的一般信息,请参见“使用Oracle的RPM软件包在Linux上安装MySQL”。有关所需的安装后配置的信息,请参见“ NDB群集的初始配置”。
使用.deb文件安装NDB群集
本节提供有关使用.debOracle为此目的提供的文件在Debian和相关Linux发行版(例如Ubuntu)上安装NDB Cluster的信息。
Oracle还为Debian和其他发行版提供了NDB Cluster APT存储库。有关说明和其他信息,请参见使用APT存储库安装MySQL NDB群集。
Oracle .deb为32位和64位平台的NDB Cluster 提供了安装程序文件。对于基于Debian的系统,仅需要一个安装程序文件。根据适用的NDB群集版本,Debian版本和体系结构,使用此处显示的模式来命名该文件:
mysql-cluster-gpl-ndbver-debiandebianver-arch.deb
在这里,ndbver是3部分NDB引擎版本号,debianver是Debian的主要版本(8或9),arch是i686或之一x86_64。在下面的示例中,我们假设您希望在64位Debian 9系统上安装NDB 8.0.20。在这种情况下,安装程序文件名为mysql-cluster-gpl-8.0.20-debian9-x86_64.deb-bundle.tar。
下载了适当的.deb文件后,您可以将其解压缩,然后使用dpkg,从命令行进行安装,如下所示:
shell>dpkg -i mysql-cluster-gpl-8.0.20-debian9-i686.deb
您也可以使用dpkg如下所示删除它:
shell>dpkg -r mysql
安装程序文件还应该与大多数处理.deb文件的图形软件包管理器兼容,例如GDebiGnome桌面。
该.deb文件将在下的NDB Cluster安装,其中是包含的MySQL服务器的两部分发行系列版本。对于NDB 8.0,始终为。目录布局与通用Linux二进制分发版的目录布局相同(请参见,“通用Unix / Linux二进制软件包的MySQL安装布局”),但在其中找到了启动脚本和配置文件,而不是。所有NDB Cluster可执行文件(例如ndb_mgm,ndbd和ndb_mgmd)都放置在目录中。/opt/mysql/server-version/version5.7support-filessharebin
在Linux上从源代码构建NDB群集
本节提供有关在Linux和其他类似Unix的平台上编译NDB Cluster的信息。从源代码构建NDB群集类似于构建标准的MySQL Server,尽管它在此处讨论的几个关键方面有所不同。有关从源代码构建MySQL的一般信息,请参见“从源代码安装MySQL”。有关在Windows平台上编译NDB群集的信息,请参见“在Windows上从源代码编译和安装NDB群集”。
构建MySQL NDB Cluster 8.0需要使用MySQL Server 8.0源。这些可从MySQL下载页面https://dev.mysql.com/downloads/获得。存档的源文件的名称应类似于mysql-8.0.20.tar.gz。您也可以从GitHub上获取源代码,网址为 https://github.com/mysql/mysql-server。
注意在以前的版本中,不支持从标准MySQL Server来源构建NDB Cluster。在MySQL 8.0和NDB Cluster 8.0中,情况已不再如此-两种产品现在都是从相同的来源构建的。
CMake的WITH_NDBCLUSTER选项使管理节点,数据节点和其他NDB群集程序的二进制文件得以构建;它还会导致mysqld在存储引擎支持下进行编译。构建NDB群集时,需要此选项(或其别名和之一)。NDBWITH_NDBCLUSTER_STORAGE_ENGINEWITH_PLUGIN_NDBCLUSTER
重要
WITH_NDB_JAVA默认情况下启用该选项。这意味着,默认情况下,如果CMake在系统上找不到Java的位置,则配置过程将失败;如果您不希望启用Java和ClusterJ支持,则必须使用来配置构建以明确指出这一点-DWITH_NDB_JAVA=OFF。使用WITH_CLASSPATH在需要时提供的Java类路径。
有关特定于构建NDB群集的CMake选项的详细信息,请参阅《编译NDB群集的选项》。
运行make && make install(或系统的等效文件)后,结果类似于将预编译的二进制文件解压缩到相同位置所获得的结果。
管理节点。从源代码构建并运行默认的make install时,可以在中找到管理服务器和管理客户端二进制文件(ndb_mgmd和ndb_mgm)/usr/local/mysql/bin。管理节点主机上只需要存在ndb_mgmd;但是,在同一主机上存在ndb_mgm也是一个好主意。这些可执行文件均不需要在主机文件系统上的特定位置。
数据节点。数据节点主机上唯一需要的可执行文件是数据节点二进制文件ndbd或ndbmtd。(例如,主机上不必存在mysqld。)默认情况下,从源构建时,此文件放置在目录中/usr/local/mysql/bin。要在多个数据节点主机上安装,请仅使用ndbd或ndbmtd需要复制到其他主机上。(这假定所有数据节点主机都使用相同的体系结构和操作系统;否则,您可能需要针对每个不同的平台分别进行编译。)数据节点二进制文件不必位于主机文件系统上的任何特定位置,只要位置是已知的。
从源代码编译NDB群集时,不需要特殊选项即可构建多线程数据节点二进制文件。配置具有NDB存储引擎支持的构建会自动构建ndbmtd。make install将ndbmtd二进制bin文件以及mysqld,ndbd和ndb_mgm放在安装目录中。
SQL节点。如果编译具有集群支持的MySQL,并执行默认安装(使用make install作为系统root用户),则mysqld将放置在中/usr/local/mysql/bin。按照“从源代码安装MySQL”中给出的步骤进行操作,以使mysqld可以使用。如果要运行多个SQL节点,则可以在多个计算机上使用同一mysqld可执行文件及其相关支持文件的副本。最简单的方法是复制整个/usr/local/mysql目录和其中包含的所有目录和文件到另一个SQL节点主机,然后在每台计算机上重复“从源代码安装MySQL”中的步骤。如果使用非默认PREFIX选项配置构建,则必须相应地调整目录。
在“ NDB群集的初始配置”中,我们为示例NDB群集中的所有节点创建配置文件。
