当前位置: 首页 > 文档资料 > MySQL 中文手册 >

17.3. 多计算机的简单基础知识

优质
小牛编辑
128浏览
2023-12-01
17.3.1. 硬件、软件和联网
17.3.2. 安装
17.3.3. 配置
17.3.4. 首次启动
17.3.5. 加载示例数据并执行查询
17.3.6. 安全关闭和重启

本节介绍了如何规划、安装、配置和运行MySQL簇的基本知识。与17.4节,“MySQL簇的配置”中给出的示例不同,按照下面介绍的步骤和指南,所得的结果应是有用的MySQL簇,它满足对数据可用性和安全防护的最低要求。

在本节中,我们介绍了下述内容:硬件和软件要求,联网事宜,MySQL簇的安装,配置事宜,簇的启动、停止和重启,加载样本数据库,以及执行查询的方法。

基本假定

本节作了如下假定:

1. 我们将建立具有4个节点的簇,每个节点位于不同的主机上,而且在典型的以太网中具有固定的网络地址,如下所述:

节点

IP地址

管理(MGM)节点

192.168.0.10

MySQL服务器(SQL)节点

192.168.0.20

数据(NDBD)节点"A"

192.168.0.30

数据(NDBD)节点"B"

192.168.0.40

2. 通过下图可更清楚的表明这点:

  1. MySQL Cluster Multi-Computer    Setup

4. 注释:出于简单性(以及可靠性)方面的考虑,在本基本知识介绍中我们仅使用数值IP地址。但是,如果在你的网络中具备DNS解析功能,在配置簇的过程中,可使用主机名代替IP地址。作为可选方式,也能使用/etc/hosts文件,或能提供主机查询的操作系统的等效物(如果可用的话)。

5. 在我们的场景中,每台主机均是基于Intel的桌面PC,PC上运行的是常见的一般性Linux版本,操作系统以标准配置安装在磁盘上,未运行任何不必要的服务。具备标准TCP/IP联网客户端的核心操作系统应足以符合我们的要求。此外,为了简单性,我们还假定所有主机上的文件系统是等同的。如果这些主机上的文件系统不同,就需对这些说明作相应的调整。

6. 在每台机器上安装了标准的100 Mbps或1吉比特以太网卡,为每块网卡安装了恰当的驱动程序,并用标准的以太网联网装置(如交换器等)将4台主机连接起来(所有机器应使用具有相同容量的网卡,也就是说,簇中的所有4台机器应全部使用100M网卡,或全部使用1G网卡)。MySQL簇将工作在100 Mbps网络中,但吉比特以太网能提供更好的性能。

注意,MySQL簇不适合于连通性低于100 Mbps的网络。出于该原因(尤其是),在公共网络如Internet上运行MySQL簇很难成功,也不推荐这样做。

7. 对于样本数据,我们将使用世界数据库,该数据库可从MySQL AB公司的网站上下载。由于该数据库占用的空间相对较小,我们假定每台机器有256 MB RAM,这足以运行操作系统、主机NDB进程、以及存储数据库(对于数据节点)。

尽管在本基本介绍中采用的是Linux操作系统,但对这里给出的说明和步骤来说,仅过简单的修改,也能适用于Solaris或Mac OS X。此外,我们还假定你已掌握了安装和配置具备联网功能的操作系统的基本知识,或能够在需要的时候获得帮助。

下一节,我们更详细地讨论了MySQL簇的硬件、软件和联网要求。(请参见17.3.1节,“硬件、软件和联网”)。

17.3.1. 硬件、软件和联网

MySQL簇的一个强大优点在于,它能运行在普通硬件上,除了需要较大的RAM外在这点上没有特殊要求,这是因为实际的数据存储均是在内存中进行的。(注意,未来这点会改变,我们打算在未来的MySQL簇版本中实现基于磁盘的存储)。显然,多个CPU和更快的CPU能增强性能。对于簇进程来说,对内存的要求相对较少。

簇的软件要求程度适中。主机操作系统不需要任何特殊模块、服务、应用程序、或配置就能支持MySQL簇。对于Mac OS X或Solaris,标准安装就已足够。对于Linux,标准的“即开即用”安装应是所需的全部。MySQL软件要求很简单:MySQL-max 5.1的生产版就是所需的全部,要想获得簇支持,必须使用MySQL的-max版本。无需自己编译MySQL就能使用簇。在本节中,我们假定你使用了与Linux相适应的-max二进制版本。对于Solaris或Mac OS X操作系统,相应的部分可通过MySQL软件下载页面获得,http://dev.mysql.com/downloads/。

对于节点之间的通信,簇支持采用标准拓扑方案的TCP/IP联网,对于每台主机的预期最低要求是1块标准的100 Mbps以太网卡,对于作为整体的簇,还需加上交换器、网络集线器或路由器以提供网络连通性。我们强烈建议,应在其自己的子网内运行MySQL簇,不与非簇机器共享该子网,原因如下:

·安全性:簇节点之间的通信未采用任何特殊加密或防护。对MySQL簇内传输的唯一保护方法是,在受保护的网络上运行簇。如果打算将MySQL簇用于Web应用,簇应明确地位于防火墙后面,而且不应位于网络的非军事区(DMZ)或其他地方。

·效率:在专有的或受保护的网络上设置MySQL簇,这样,簇就能独享簇主机之间的带宽。为MySQL簇使用单独的交换器不仅能防止对簇数据的非法访问,而且还能确保簇节点不受网络上其他计算机之间信息传输的干扰。为了增强可靠性,可以使用双交换器和双卡,以防止网络出现单点故障,对于这类通信链路,很多设备驱动均支持故障切换功能。

也能与MySQL簇一起使用高速SCI(规模可扩展的计算机接口),但这不是要求的。关于该协议的更多信息,以及它与MySQL簇的用法,请参见17.7节,“使用与MySQL簇的高速互连”

17.3.2. 安装

对于每台运行存储或SQL节点的MySQL簇主机计算机,必须在其上安装MySQL-max二进制版本。对于管理节点,没有必要安装MySQL服务器二进制版本,但应安装MGM服务器端口监督程序和客户端二进制版本(分别是ndb_mgmdndb_mgm)。在本节中,我们介绍了为每种簇节点安装正确的二进制版本所需的步骤。

MySQL AB提供了预编译的二进制文件,它们支持簇,你不需要自己编译这些文件(如果你确实需要定制的二进制文件,请参见2.8.3节,“从开发源码树安装”)。因此,对于每台簇主机,安装进程的第一步是从MySQL下载区下载文件mysql-max-5.1.2-alpha-pc-linux-gnu-i686.tar.gz。我们假定你将该文件放在各机器的/var/tmp目录下。

对于32位和64位Linux平台,均有相应的RPM,RPM安装的-max二进制文件支持NDB簇存储引擎。如果你选择使用它们而不是二进制文件,务必在运行簇节点的所有机器上安装-server和-max软件包(关于使用RPM安装MySQL的更多信息,请参见2.4节,“在Linux下安装MySQL”)。使用RPM完成安装后,仍需对簇进行配置,请参见17.3.3节,“配置”。

注释:完成安装后,不启动任何二进制文件。配置完所有节点后,我们将向你介绍执行这类操作的方法。

存储节点和SQL节点安装

在设计为运行存储节点或SQL节点的三台机器的每一台上,以系统根用户身份执行下述步骤:

1. 检查你的/etc/passwd和/etc/group文件(或使用操作系统提供的用于管理用户和组的工具),查看在系统上是否已存在mysql组和mysql用户,这是因为某些操作系统会将其作为安装进程的一部分予以创建。如果它们不存在,创建新的mysql用户组,然后为该组添加1个mysql用户。

2.   groupadd mysql
3.   useradd -g mysql mysql

4. 进入包含下载文件的目录,解包档案文件,并创建与mysql-max可执行文件的symlink。注意,根据MySQL的版本号,实际的文件名和目录名会有所不同。

5.   cd /var/tmp
6.   tar -xzvf -C /usr/local/bin mysql-max-5.1.2-alpha-pc-linux-gnu-i686.tar.gz
7.   ln -s /usr/local/bin/mysql-max-5.1.2-alpha-pc-linux-gnu-i686 mysql

8. 进入mysql目录,运行所提供的用于创建系统数据库的脚本:

9.   cd mysql
10.       scripts/mysql_install_db --user=mysql

11.为MySQL服务器和数据目录设置必要的权限:

12.       chown -R root .
13.       chown -R mysql data
14.       chgrp -R mysql .

注意,在每台运行数据节点的机器上,数据目录是/usr/local/mysql/data。配置管理节点时将用到这类信息(请参见17.3.3节,“配置”)。

15.将MySQL启动脚本拷贝到恰当的目录下,使之成为可执行的脚本,并设置它以便在启动操作系统时启动:

16.       cp support-files/mysql.server /etc/rc.d/init.d/
17.       chmod +x /etc/rc.d/init.d/mysql.server
18.       chkconfig --add mysql.server

在此,我们使用Red Hat的chkconfig来创建与启动脚本的链接,请在你的操作系统上使用恰当的用于该目的的方式,如Debian上的update-rc.d。

请记住,对于存储节点或SQL节点所在的每台机器,必须分别指向上述步骤。

管理节点安装

对于MGM(管理)节点,不需要安装mysqld可执行文件,仅需安装用于MGM服务器和客户端的二进制文件,这类文件可在下载的-max档案中找到。再次假定你将该文件放在了/var/tmp目录下,引导系统时(也就是说使用sudo,su root或系统的等效命令后,假定具有系统管理员账户的权限),执行下述步骤,在簇管理节点主机上安装ndb_mgmdndb_mgm

1. 即如/var/tmp目录,从档案文件中将ndb_mgmndb_mgmd提取到恰当的目录下,如/usr/local/bin:

2.   cd /var/tmp
3.   tar -zxvf mysql-max-5.1.2-alpha-pc-linux-gnu-i686.tar.gz /usr/local/bin '*/bin/ndb_mgm*'

4. 进入解包文件所在的目录,然后使这两个文件成为可执行的:

5.   cd /usr/local/bin
6.   chmod +x ndb_mgm*

在17.3.3节,“配置”中,我们将为示例簇中的所有节点创建和编写配置文件。

17.3.3. 配置

对于我们的4节点、4主机MySQL簇,需要编写4个配置文件,每个节点/主机1个。

·每个数据节点或SQl节点需要1个my.cnf文件,该文件提供了两类信息:connectstring(连接字符串),用于通知节点到哪里找到MGM节点;以及一行,用于通知该主机(容纳数据节点的机器)上的MySQL服务器运行在NDB模式下。

关于连接字符串的更多信息,请参见17.4.4.2节,“MySQL簇连接字符串”。

·管理节点需要config.ini文件,该文件通知节点有多少需要维护的副本,需要在每个数据节点上为数据和索引分配多少内存,数据节点的位置,在每个数据节点上保存数据的磁盘位置,以及SQL节点的位置。

配置存储节点和SQL节点

数据节点所需的my.cnf文件相当简单。配置文件应位于/etc目录下,并能用任何文本编辑器进行编辑(如有必要,创建该文件),例如:

vi /etc/my.cnf

对于本示例中的每个数据节点和SQL节点,my.cnf文件类似于:

# Options for mysqld process:
[MYSQLD]
ndbcluster      # run NDB engine
ndb-connectstring=192.168.0.10  # location of MGM node
 
# Options for ndbd process:
[MYSQL_CLUSTER] 
ndb-connectstring=192.168.0.10  # location of MGM node

输入上述内容后,保存文件并退出文本编辑器。在容纳数据节点“A”、数据节点“B”和SQL节点的机器上分别执行上述操作。

配置管理节点

配置MGM节点的第一步是创建目录,该目录用于存放配置文件,然后创建配置文件本身。例如(以根用户身份运行):

mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
vi config.ini

在此使用了vi来创建文件,不过,任何文本编辑器均应能胜任。

对于我们的典型设置,config.ini文件应类似于:

# Options affecting ndbd processes on all data nodes:
[NDBD DEFAULT]    
NoOfReplicas=2    # Number of replicas
DataMemory=80M    # How much memory to allocate for data storage
IndexMemory=18M   # How much memory to allocate for index storage
  # For DataMemory and IndexMemory, we have used the
  # default values. Since the "world" database takes up
  # only about 500KB, this should be more than enough for
  # this example Cluster setup.
 
# TCP/IP options:
[TCP DEFAULT]     
portnumber=2202   # This the default; however, you can use any
  # port that is free for all the hosts in cluster
  # Note: It is recommended beginning with MySQL 5.0 that
  # you do not specify the portnumber at all and simply allow
  # the default value to be used instead
 
# Management process options:
[NDB_MGMD]      
hostname=192.168.0.10   # Hostname or IP address of MGM node
datadir=/var/lib/mysql-cluster  # Directory for MGM node logfiles
 
# Options for data node "A":
[NDBD]  
# (one [NDBD] section per data node)
hostname=192.168.0.30   # Hostname or IP address
datadir=/usr/local/mysql/data   # Directory for this data node's datafiles
 
# Options for data node "B":
[NDBD]  
hostname=192.168.0.40   # Hostname or IP address
datadir=/usr/local/mysql/data   # Directory for this data node's datafiles
 
# SQL node options:
[MYSQLD]
hostname=192.168.0.20   # Hostname or IP address
# (additional mysqld connections can be
# specified for this node for various
# purposes such as running ndb_restore)

注释:"world"数据库可从站点http://dev.mysql.com/doc/下载,它列在“示例”栏目下)。

一旦创建了所有的配置文件并指定了这些最低选项,可启动簇,并验证所有进程均能正常运行。关于这方面的讨论,请参见17.3.4节,“首次启动”。

关于可用MySQL簇配置参数以及其用法的更多信息,请参见17.4.4节,“配置文件”和17.4节,“MySQL簇的配置”。关于与进行备份有关的MySQL簇配置,请参见17.6.5.4节,“簇备份的配置”。

注释:簇管理节点的默认端口是1186,数据节点的默认端口2202。从MySQL 5.0.3开始,该限制已被放宽,簇能够根据空闲的端口自动地为数据节点分配端口。

17.3.4. 首次启动

完成配置后,启动簇并不很困难。必须在数据节点所在的主机上分别启动每个簇节点进程。尽管能够按任何顺序启动节点,但我们建议,应首先启动管理节点,然后启动存储节点,最后启动SQL节点:

1. 在管理主机上,从系统shell发出下述命令以启动MGM节点进程:

2.   shell> ndb_mgmd -f /var/lib/mysql-cluster/config.ini

注意,必须用“-f”或“--config-file”选项,告诉ndb_mgmd到哪里找到配置文件(详情请参见17.5.3节,“ndb_mgmd,“管理服务器”进程”)。

3. 在每台数据节点主机上,对于首次启动,运行下述命令启动NDBD进程:

4.   shell> ndbd --initial

注意,仅应在首次启动ndbd时,或在备份/恢复或配置变化后重启ndbd时使用“--initial”参数,这很重要。原因在于,该参数会使节点删除由早期ndbd实例创建的、用于恢复的任何文件,包括恢复用日志文件。

5. 如果使用RPM在SQL节点所在的簇主机上安装了MySQL,能够(也应当)使用安装在/etc/init.d下的启动脚本在SQL节点上启动MySQL服务器进程。注意,要想运行“-max”服务器二进制文件,除了标准的RPM外,还需要安装-max服务器RPM。

如果一切顺利,并已正确设置了簇,那么簇现在应能运行。通过调用ndb_mgm管理节点客户端,可对其进行测试。其输出应类似于:

shell> ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> SHOW
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2    @192.168.0.30  (Version: 5.1.2-alpha, Nodegroup: 0, Master)
id=3    @192.168.0.40  (Version: 5.1.2-alpha, Nodegroup: 0)
 
[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.0.10  (Version: 5.1.2-alpha)
 
[mysqld(SQL)]   1 node(s)
id=4   (Version: 5.1.2-alpha)

具体的输出内容可能会略有不同,这取决于你所使用的MySQL版本。

注释:如果你正在使用较早的MySQL版本,你或许会看到引用为‘[mysqld(API)]’的SQL节点。这是一种早期的用法,现已放弃。

现在,应能在MySQL簇中处理数据库,表和数据。关于这方面的简要讨论,请参见17.3.5节,“加载示例数据并执行查询”。

17.3.5. 加载示例数据并执行查询

与没有使用簇的MySQL相比,在MySQL簇内操作数据的方式没有太大的区别。执行这类操作时应记住两点:

·表必须用ENGINE=NDB或ENGINE=NDBCLUSTER选项创建,或用ALTER TABLE选项更改,以使用NDB簇存储引擎在簇内复制它们。如果使用mysqldump的输出从已有数据库导入表,可在文本编辑器中打开SQL脚本,并将该选项添加到任何表创建语句,或用这类选项之一替换任何已有的ENGINE(或TYPE)选项。例如,假定在另一个MySQL服务器(不支持MySQL簇)上有样本世界数据库,而且你打算导出城市表的定义:

·shell> mysqldump --add-drop-table world City > city_table.sql

在所得的city_table.sql文件中,将包含这条表创建语句(以及导入表数据所需的INSERT语句):

DROP TABLE IF EXISTS City;
CREATE TABLE City (
ID int(11) NOT NULL auto_increment,
Name char(35) NOT NULL default '',
CountryCode char(3) NOT NULL default '',
District char(20) NOT NULL default '',
Population int(11) NOT NULL default '0',
PRIMARY KEY  (ID)
) ENGINE=MyISAM;
 
INSERT INTO City VALUES (NULL,'Kabul','AFG','Kabol',1780000);
INSERT INTO City VALUES (NULL,'Qandahar','AFG','Qandahar',237500);
INSERT INTO City VALUES (NULL,'Herat','AFG','Herat',186800);
# (remaining INSERT statements omitted)

需要确认MySQL为该表使用了NDB存储引擎。有两种完成该任务的方法。其中一种方法是,在将表导入簇数据库之前更改其定义,使其类似于(仍使用“城市”作为示例):

DROP TABLE IF EXISTS City;
CREATE TABLE City (
ID int(11) NOT NULL auto_increment,
Name char(35) NOT NULL default '',
CountryCode char(3) NOT NULL default '',
District char(20) NOT NULL default '',
Population int(11) NOT NULL default '0',
PRIMARY KEY  (ID)
) ENGINE=NDBCLUSTER;
 
INSERT INTO City VALUES (NULL,'Kabul','AFG','Kabol',1780000);
INSERT INTO City VALUES (NULL,'Qandahar','AFG','Qandahar',237500);
INSERT INTO City VALUES (NULL,'Herat','AFG','Herat',186800);
# (etc.)

对于将成为簇数据库组成部份的每个表,均需要为其定义执行上述操作。完成该任务的最简单方法是,简单地在world.sql文件上执行“查找-替换”,并用ENGINE=NDBCLUSTER替换所有的TYPE=MyISAM实例。如果你不打算更改该文件,也可使用ALTER TABLE。详情请参见下面的介绍。

假定你已在簇的SQL节点上创建了名为“world”的数据库,随后可使用mysql命令行客户端读取city_table.sql,并按通常方式创建和填充对应的表:

shell> mysql world < city_table.sql

请记住,上述命令必须在运行SQL节点的主机上执行,这点十分重要。对于本例,应在IP地址为192.168.0.20的机器上执行。

要想在SQL节点上创建世界数据库的副本,请将文件保存到/usr/local/mysql/data,然后运行:

shell> cd /usr/local/mysql/data
shell> mysql world < world.sql

当然,SQL脚本必须能被mysql系统用户读取。如果将文件保存到了不同的目录下,请作相应的调整。

注意,在MySQL 5.1中,NDB簇不支持自动发现数据库的功能,这点很重要(请参见17.8节,“MySQL簇的已知限制”)。这意味着,一旦在一个数据节点上创建了世界(world)数据库和它的表,在簇中的每个SQL节点上还需要发出命令CREATE DATABASE world(从MySQL 5.0.2开始,可以使用CREATE SCHEMA world取而代之),后跟FLUSH TABLES。这样,节点就能识别数据库并读取其表定义。

在SQL节点上运行SELECT查询与在MySQL服务器的任何其他实例上运行查询没有区别。要想从命令行运行查询,首先应按照通常方式登录到MySQL监视器:

shell> mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 5.1.2-alpha
 
键入’help;’或’\h’获取帮助。键入’\c’清空缓冲区。
 
mysql>

如果在导入MySQL脚本之前未更改表定义中的ENGINE=子句,应在此时运行下述命令:

mysql> USE world;
mysql> ALTER TABLE City ENGINE=NDBCLUSTER;
mysql> ALTER TABLE Country ENGINE=NDBCLUSTER;
mysql> ALTER TABLE CountryLanguage ENGINE=NDBCLUSTER;

注意,在这里我们简单地使用了MySQL服务器密码为空的默认根用户账户。当然,在生产设置下,安装MySQL服务器时,总应遵守标准的安全方法措施,包括设置牢靠的根用户密码,并为用户创建具有完成任务所需的权限的用户账户。关于这方面的更多信息,请参见5.7节,“MySQL访问权限系统”。

需要关注的是,当簇节点彼此访问时不使用MySQL的权限系统,设置或更改MySQL用户账户(包括根用户账户)不影响节点之间的交互,它们仅对访问SQL节点的应用程序有效。

能够以通常的方式选择数据库,并对表执行SELECT查询,就像退出MySQL监视器一样:

mysql> USE world;
mysql> SELECT Name, Population FROM City ORDER BY Population DESC LIMIT 5;
+-----------+------------+
| 名称      | 人口 |
+-----------+------------+
| 孟买      |   10500000 |
| 汉城      |    9981619 |
| 圣保罗    |    9968485 |
| 上海      |    9696300 |
| 雅加达    |    9604900 |
+-----------+------------+
5 rows in set (0.34 sec)
 
mysql> \q
Bye
 
shell>

使用MySQL的应用程序能够使用标准的API。重要的是应记住,你的应用程序必须访问SQL节点,而不是MGM或存储节点。在下面的简单示例中,介绍了使用PHP 5的mysqli扩展(运行在位于网络中其他位置的Web服务器上)执行相同查询的方法:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
  <title>SIMPLE mysqli SELECT</title>
</head>
<body>
<?php
  # connect to SQL node:
  $link = new mysqli('192.168.0.20', 'root', '', 'world');
  # parameters for mysqli constructor are:
  #   host, user, password, database
 
  if( mysqli_connect_errno() )
    die("Connect failed: " . mysqli_connect_error());
 
  $query = "SELECT Name, Population
    FROM City
    ORDER BY Population DESC
    LIMIT 5";
 
  # if no errors...
  if( $result = $link->query($query) )
  {
?>
<table border="1" width="40%" cellpadding="4" cellspacing ="1">
  <tbody>
  <tr>
    <th width="10%">City</th>
    <th>Population</th>
  </tr>
<?
    # then display the results...
    while($row = $result->fetch_object())
      printf(<tr>\n  <td align=\"center\">%s</td><td>%d</td>\n</tr>\n",
      $row->Name, $row->Population);
?>
  </tbody
</table>
<?
  # ...and verify the number of rows that were retrieved
    printf("<p>Affected rows: %d</p>\n", $link->affected_rows);
  }
  else
    # otherwise, tell us what went wrong
    echo mysqli_error();
 
  # free the result set and the mysqli connection object
  $result->close();
  $link->close();
?>
</body>
</html>

我们假定运行在Web服务器上的进程能够访问SQL节点的IP地址。

采用类似的风格,可以使用MySQL C API、Perl-DBI、Python-mysql、或MySQL AB自己的连接器来执行数据定义和操控任务,就像正常使用MySQL那样。

·另外还请记住,每个NDB表必须有一个主键。如果在创建表时用户未定义主键,NDB簇存储引擎将自动生成隐含的主键。(注释:该隐含键也将占用空间,就像任何其他的表索引一样。由于没有足够的内存来容纳这些自动创建的键,出现问题并不罕见)。

17.3.6. 安全关闭和重启

要想关闭簇,可在MGM节点所在的机器上,在Shell中简单地输入下述命令:

shell> ndb_mgm -e shutdown

该命令将恰当地中止ndb_mgmndb_mgmd以及任何ndbd进程。使用mysqladmin shutdown或其他方法,可中止SQL节点。注意,这里的“-e”选项用于将命令从shell传递到ndb_mgm客户端。请参见4.3.1节,“在命令行上使用选项”。

要想重启簇,可简单地运行下述命令:

·在管理主机上(本设置中为192.168.0.10):

·shell> ndb_mgmd -f /var/lib/mysql-cluster/config.ini

·在每台数据节点主机上(192.168.0.30和192.168.0.40):

·shell> ndbd

请记住,正常重启NDBD节点时,不要用“--initial”选项调用该命令。

·在SQL主机上(192.168.0.20):

·shell> mysqld &

关于创建簇备份的更多信息,请参见17.6.5.2节,“使用管理服务器创建备份”。

要想从备份中恢复簇,需要使用ndb_restore命令。请参见17.6.5.3节,“如何恢复簇备份”。

关于配置MySQL簇的更多信息,请参见17.4节,“MySQL簇的配置”。