MySQL8 中文参考(八十六)(3)https://developer.aliyun.com/article/1565924
25.3.2.4 将 NDB Cluster 进程安装为 Windows 服务
一旦您确认 NDB Cluster 运行如您所期望,您可以将管理节点和数据节点安装为 Windows 服务,这样这些进程将在 Windows 启动或停止时自动启动和停止。这也使得可以使用适当的SC START和SC STOP命令,或使用 Windows 图形Services实用程序来控制这些进程。也可以使用NET START和NET 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 --install
,SC START,SC STOP和SC 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]
部分中使用了ndbcluster
和ndb-connectstring
参数启动了一个mysqld进程,您就不能在实际启动集群之前执行任何CREATE TABLE
或ALTER 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 节点:
- 在管理主机上,从系统 shell 发出以下命令以启动管理节点进程:
$> ndb_mgmd --initial -f /var/lib/mysql-cluster/config.ini
- 第一次启动时,必须告诉ndb_mgmd在哪里找到其配置文件,使用
-f
或--config-file
选项。此选项要求还必须指定--initial
或--reload
;有关详细信息,请参阅第 25.5.4 节,“ndb_mgmd — The NDB Cluster Management Server Daemon”。 - 在每个数据节点主机上运行以下命令以启动ndbd进程:
$> ndbd
- 如果您在 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=NDBCLUSTER
或ENGINE=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