MySQL8 中文参考(八十六)(4)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: MySQL8 中文参考(八十六)

MySQL8 中文参考(八十六)(3)https://developer.aliyun.com/article/1565924


25.3.2.4 将 NDB Cluster 进程安装为 Windows 服务

一旦您确认 NDB Cluster 运行如您所期望,您可以将管理节点和数据节点安装为 Windows 服务,这样这些进程将在 Windows 启动或停止时自动启动和停止。这也使得可以使用适当的SC STARTSC STOP命令,或使用 Windows 图形Services实用程序来控制这些进程。也可以使用NET STARTNET STOP命令。

通常必须使用具有系统管理员权限的帐户来将程序安装为 Windows 服务。

要在 Windows 上将管理节点安装为服务,请在托管管理节点的计算机上使用命令行调用ndb_mgmd.exe,使用--install选项,如下所示:

C:\> C:\mysql\bin\ndb_mgmd.exe --install
Installing service 'NDB Cluster Management Server'
  as '"C:\mysql\bin\ndbd.exe" "--service=ndb_mgmd"'
Service successfully installed.

重要

在将 NDB Cluster 程序安装为 Windows 服务时,应始终指定完整路径;否则服务安装可能会因为错误“系统找不到指定的文件”而失败。

必须首先使用--install选项,然后再指定可能用于ndb_mgmd.exe的任何其他选项。然而,最好是在选项文件中指定这些选项。如果您的选项文件不在ndb_mgmd.exe --help输出中显示的默认位置之一,您可以使用--config-file选项指定位置。

现在您应该能够像这样启动和停止管理服务器:

C:\> SC START ndb_mgmd
C:\> SC STOP ndb_mgmd

注意

如果使用NET命令,您也可以使用描述性名称启动或停止管理服务器作为 Windows 服务,如下所示:

C:\> NET START 'NDB Cluster Management Server'
The NDB Cluster Management Server service is starting.
The NDB Cluster Management Server service was started successfully.
C:\> NET STOP  'NDB Cluster Management Server'
The NDB Cluster Management Server service is stopping..
The NDB Cluster Management Server service was stopped successfully.

通常在安装服务时指定一个简短的服务名称或允许使用默认服务名称,然后在启动或停止服务时引用该名称会更简单。要指定一个不同于ndb_mgmd的服务名称,请将其附加到--install选项中,如下例所示:

C:\> C:\mysql\bin\ndb_mgmd.exe --install=mgmd1
Installing service 'NDB Cluster Management Server'
  as '"C:\mysql\bin\ndb_mgmd.exe" "--service=mgmd1"'
Service successfully installed.

现在您应该能够使用您指定的名称启动或停止服务,就像这样:

C:\> SC START mgmd1
C:\> SC STOP mgmd1

要删除管理节点服务,请使用SC DELETE service_name

C:\> SC DELETE mgmd1

或者,使用ndb_mgmd.exe并带上--remove选项,如下所示:

C:\> C:\mysql\bin\ndb_mgmd.exe --remove
Removing service 'NDB Cluster Management Server'
Service successfully removed.

如果使用非默认服务名称安装服务,请将服务名称作为ndb_mgmd.exe --remove选项的值传递,如下所示:

C:\> C:\mysql\bin\ndb_mgmd.exe --remove=mgmd1
Removing service 'mgmd1'
Service successfully removed.

将 NDB Cluster 数据节点进程安装为 Windows 服务的操作方式类似,使用ndbd.exe--install选项(或ndbmtd.exe")),如下所示:

C:\> C:\mysql\bin\ndbd.exe --install
Installing service 'NDB Cluster Data Node Daemon' as '"C:\mysql\bin\ndbd.exe" "--service=ndbd"'
Service successfully installed.

现在您可以按照以下示例启动或停止数据节点:

C:\> SC START ndbd
C:\> SC STOP ndbd

要删除数据节点服务,请使用SC DELETE service_name

C:\> SC DELETE ndbd

或者,使用ndbd.exe并带上--remove选项,如下所示:

C:\> C:\mysql\bin\ndbd.exe --remove
Removing service 'NDB Cluster Data Node Daemon'
Service successfully removed.

ndb_mgmd.exe(和mysqld.exe)一样,当将ndbd.exe安装为 Windows 服务时,也可以指定服务名称作为--install的值,然后在启动或停止服务时使用它,如下所示:

C:\> C:\mysql\bin\ndbd.exe --install=dnode1
Installing service 'dnode1' as '"C:\mysql\bin\ndbd.exe" "--service=dnode1"'
Service successfully installed.
C:\> SC START dnode1
C:\> SC STOP dnode1

如果在安装数据节点服务时指定了服务名称,那么在删除时也可以使用该名称,如下所示:

C:\> SC DELETE dnode1

或者,可以将服务名称作为ndbd.exe --remove选项的值传递,如下所示:

C:\> C:\mysql\bin\ndbd.exe --remove=dnode1
Removing service 'dnode1'
Service successfully removed.

将 SQL 节点安装为 Windows 服务,启动服务,停止服务和删除服务的操作方式类似,使用mysqld --installSC STARTSC STOPSC DELETE(或mysqld --remove)。也可以使用NET命令来启动或停止服务。有关更多信息,请参见 Section 2.3.4.8, “Starting MySQL as a Windows Service”。

25.3.3 NDB 集群的初始配置

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-install-configuration.html

在本节中,我们讨论通过创建和编辑配置文件手动配置已安装的 NDB 集群。

对于我们的四节点、四主机 NDB 集群(请参见 Cluster nodes and host computers),需要编写四个配置文件,每个节点主机一个。

  • 每个数据节点或 SQL 节点都需要一个提供两个信息的my.cnf文件:一个连接字符串,告诉节点在哪里找到管理节点,以及一行告诉此主机上的 MySQL 服务器(承载数据节点的机器)启用NDBCLUSTER存储引擎��
    有关连接字符串的更多信息,请参见 Section 25.4.3.3, “NDB Cluster Connection Strings”。
  • 管理节点需要一个config.ini文件,告诉它要维护多少片段副本,为每个数据节点分配多少内存用于数据和索引,数据节点在哪里,每个数据节点在磁盘上保存数据的位置,以及如何找到任何 SQL 节点。

配置数据节点和 SQL 节点。 用于数据节点的my.cnf文件相当简单。配置文件应位于/etc目录中,并且可以使用任何文本编辑器进行编辑(如果文件不存在,则创建文件)。例如:

$> vi /etc/my.cnf

注意

我们在这里展示使用vi创建文件,但任何文本编辑器都可以正常工作。

对于我们示例设置中的每个数据节点和 SQL 节点,my.cnf应该如下所示:

[mysqld]
# Options for mysqld process:
ndbcluster                      # run NDB storage engine
[mysql_cluster]
# Options for NDB Cluster processes:
ndb-connectstring=198.51.100.10 # location of management server

输入上述信息后,保存此文件并退出文本编辑器。对承载数据节点“A”、数据节点“B”和 SQL 节点的机器执行此操作。

重要

一旦您在my.cnf文件的[mysqld][mysql_cluster]部分中使用了ndbclusterndb-connectstring参数启动了一个mysqld进程,您就不能在实际启动集群之前执行任何CREATE TABLEALTER TABLE语句。否则,这些语句将失败并显示错误。这是设计上的限制。

配置管理节点。 配置管理节点的第一步是创建包含配置文件的目录,然后创建文件本身。例如(以root身份运行):

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

对于我们的代表性设置,config.ini文件应该如下所示:

[ndbd default]
# Options affecting ndbd processes on all data nodes:
NoOfReplicas=2 # Number of fragment replicas
DataMemory=98M # How much memory to allocate for data storage
[ndb_mgmd]
# Management process options:
HostName=198.51.100.10 # Hostname or IP address of management node
DataDir=/var/lib/mysql-cluster # Directory for management node log files
[ndbd]
# Options for data node "A":
 # (one [ndbd] section per data node)
HostName=198.51.100.30 # Hostname or IP address
NodeId=2 # Node ID for this data node
DataDir=/usr/local/mysql/data # Directory for this data node's data files
[ndbd]
# Options for data node "B":
HostName=198.51.100.40 # Hostname or IP address
NodeId=3 # Node ID for this data node
DataDir=/usr/local/mysql/data # Directory for this data node's data files
[mysqld]
# SQL node options:
HostName=198.51.100.20 # Hostname or IP address
 # (additional mysqld connections can be
 # specified for this node for various
 # purposes such as running ndb_restore)

注意

world数据库可从dev.mysql.com/doc/index-other.html下载。

当所有配置文件都已创建并指定了这些最小选项后,您可以开始启动集群并验证所有进程是否正在运行。我们将在第 25.3.4 节,“NDB 集群的初始启动”中讨论如何执行此操作。

关于可用的 NDB 集群配置参数及其用途的更详细信息,请参见第 25.4.3 节,“NDB 集群配置文件”,以及第 25.4 节,“NDB 集群配置”。关于 NDB 集群配置与备份相关的内容,请参见第 25.6.8.3 节,“NDB 集群备份配置”。

注意

集群管理节点的默认端口是 1186;数据节点的默认端口是 2202。然而,集群可以自动为数据节点分配已经空闲的端口。

25.3.4 NDB Cluster 的初始启动

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-install-first-start.html

在配置完成后,启动集群并不是很困难。每个集群节点进程必须分别在其所在的主机上启动。应首先启动管理节点,然后是数据节点,最后是任何 SQL 节点:

  1. 在管理主机上,从系统 shell 发出以下命令以启动管理节点进程:
$> ndb_mgmd --initial -f /var/lib/mysql-cluster/config.ini
  1. 第一次启动时,必须告诉ndb_mgmd在哪里找到其配置文件,使用-f--config-file选项。此选项要求还必须指定--initial--reload;有关详细信息,请参阅第 25.5.4 节,“ndb_mgmd — The NDB Cluster Management Server Daemon”。
  2. 在每个数据节点主机上运行以下命令以启动ndbd进程:
$> ndbd
  1. 如果您在 SQL 节点所在的集群主机上使用 RPM 文件安装 MySQL,则可以(也应该)使用提供的启动脚本来启动 SQL 节点上的 MySQL 服务器进程。

如果一切顺利,且集群已正确设置,那么集群现在应该是可操作的。您可以通过调用ndb_mgm管理节点客户端来测试。输出应该看起来像这里显示的那样,尽管根据您使用的 MySQL 确切版本的不同,输出可能会有一些细微差异:

$> 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    @198.51.100.30  (Version: 8.0.35-ndb-8.0.35, Nodegroup: 0, *)
id=3    @198.51.100.40  (Version: 8.0.35-ndb-8.0.35, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1    @198.51.100.10  (Version: 8.0.35-ndb-8.0.35)
[mysqld(API)]   1 node(s)
id=4    @198.51.100.20  (Version: 8.0.35-ndb-8.0.35)

此处将 SQL 节点称为[mysqld(API)],这反映了mysqld进程充当 NDB Cluster API 节点的事实。

注意

SHOW的输出中,给定 NDB Cluster SQL 或其他 API 节点的 IP 地址是 SQL 或 API 节点用于连接到集群数据节点的地址,而不是任何管理节点。

现在,您应该已经准备好在 NDB Cluster 中使用数据库、表格和数据了。请参阅第 25.3.5 节,“带有表格和数据的 NDB Cluster 示例”进行简要讨论。

25.3.5 带有表和数据的 NDB Cluster 示例

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-install-example-data.html

注意

本节内容适用于在 Unix 和 Windows 平台上运行的 NDB Cluster。

与在标准 MySQL 中操作数据库表和数据并没有太大区别。有两个关键点需要记住:

  • 要在集群中复制表,必须使用NDBCLUSTER存储引擎。在创建表时,使用ENGINE=NDBCLUSTERENGINE=NDB选项来指定:
CREATE TABLE *tbl_name* (*col_name* *column_definitions*) ENGINE=NDBCLUSTER;
  • 或者,对于使用不同存储引擎的现有表,可以使用ALTER TABLE将表更改为使用NDBCLUSTER
ALTER TABLE *tbl_name* ENGINE=NDBCLUSTER;
  • 每个NDBCLUSTER表都有一个主键。如果用户在创建表时没有定义主键,NDBCLUSTER存储引擎会自动生成一个隐藏的主键。这样的主键占用空间,就像任何其他表索引一样。(由于内存不足以容纳这些自动生成的索引,遇到问题并不罕见。)

如果您正在使用mysqldump的输出从现有数据库导入表,您可以在文本编辑器中打开 SQL 脚本,并为任何表创建语句添加ENGINE选项,或替换任何现有的ENGINE选项。假设您在另一个不支持 NDB Cluster 的 MySQL 服务器上有world示例数据库,并且想要导出City表:

$> 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 (1,'Kabul','AFG','Kabol',1780000);
INSERT INTO `City` VALUES (2,'Qandahar','AFG','Qandahar',237500);
INSERT INTO `City` VALUES (3,'Herat','AFG','Herat',186800);
*(remaining INSERT statements omitted)*

你需要确保 MySQL 为这个表使用NDBCLUSTER存储引擎。有两种方法可以实现这一点。其中一种是在将表导入到集群数据库之前修改表定义。以City表为例,修改定义的ENGINE选项如下:

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 (1,'Kabul','AFG','Kabol',1780000);
INSERT INTO `City` VALUES (2,'Qandahar','AFG','Qandahar',237500);
INSERT INTO `City` VALUES (3,'Herat','AFG','Herat',186800);
*(remaining INSERT statements omitted)*

必须为要成为集群数据库一部分的每个表的定义执行此操作。实现这一点的最简单方法是在包含定义的文件上执行搜索和替换,并将所有TYPE=*engine_name*ENGINE=*engine_name*的实例替换为ENGINE=NDBCLUSTER。如果您不想修改文件,可以使用未修改的文件创建表,然后使用ALTER TABLE来更改它们的存储引擎。具体细节稍后在本节中给出。

假设您已经在集群的 SQL 节点上创建了名为world的数据库,然后您可以使用mysql命令行客户端读取city_table.sql,并按照通常的方式创建和填充相应的表:

$> mysql world < city_table.sql

非常重要的一点是要记住,前述命令必须在运行 SQL 节点的主机上执行(在本例中,在具有 IP 地址198.51.100.20的机器上)。

要在 SQL 节点上创建整个world数据库的副本,请在非集群服务器上使用mysqldump将数据库导出到名为world.sql的文件中(例如,在/tmp目录中)。然后按照刚才描述的方式修改表定义,并将文件导入到集群的 SQL 节点中:

$> mysql world < /tmp/world.sql

如果您将文件保存到不同位置,请相应调整前述说明。

在 SQL 节点上运行SELECT查询与在任何其他 MySQL 服务器实例上运行它们没有任何区别。要从命令行运行查询,您首先需要以通常的方式登录到 MySQL Monitor(在Enter password:提示处指定root密码):

$> 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: 8.0.35-ndb-8.0.35
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>


MySQL8 中文参考(八十六)(5)https://developer.aliyun.com/article/1565927

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
关系型数据库 MySQL Unix
MySQL8 中文参考(二十三)(3)
MySQL8 中文参考(二十三)
42 4
|
3月前
|
存储 缓存 关系型数据库
MySQL8 中文参考(二十一)(5)
MySQL8 中文参考(二十一)
68 3
|
3月前
|
存储 监控 Java
MySQL8 中文参考(二十一)(4)
MySQL8 中文参考(二十一)
86 3
|
3月前
|
存储 安全 关系型数据库
MySQL8 中文参考(二十一)(1)
MySQL8 中文参考(二十一)
40 3
|
3月前
|
存储 关系型数据库 MySQL
MySQL8 中文参考(二十一)(3)
MySQL8 中文参考(二十一)
56 2
|
3月前
|
关系型数据库 MySQL Unix
MySQL8 中文参考(二十一)(2)
MySQL8 中文参考(二十一)
42 2
|
3月前
|
关系型数据库 MySQL 数据安全/隐私保护
MySQL8 中文参考(二十五)(5)
MySQL8 中文参考(二十五)
34 2
|
3月前
|
存储 关系型数据库 MySQL
MySQL8 中文参考(二十四)(1)
MySQL8 中文参考(二十四)
35 2
|
3月前
|
NoSQL 关系型数据库 MySQL
MySQL8 中文参考(二十三)(2)
MySQL8 中文参考(二十三)
43 2
|
3月前
|
存储 关系型数据库 MySQL
MySQL8 中文参考(二十三)(1)
MySQL8 中文参考(二十三)
28 2