在window 单机环境下将mysql cluster创建为自启动服务

本文详细介绍如何部署MySQL Cluster,包括配置my.ini文件、设置各节点参数、启动各组件和服务等步骤,并提供创建数据库表及测试的方法。

 

假设我的mysql cluster根目录是:D:\devlop_apps\mysql-cluster-gpl-7.3.2-winx64

1、在根目录下创建my.ini文件,nbd_mgmd在启动时默认会搜索根目录下的my.ini文件,文件内容如下:

[mysqld]
# innodb_buffer_pool_size = 128M
log_bin
basedir =D:/devlop_apps/mysql-cluster-gpl-7.3.2-winx64
datadir =D:/devlop_apps/mysql-cluster-gpl-7.3.2-winx64/data
port =3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

 2、在根目录下分别创建ndb_data/49/、ndb_data/1/、ndb_data/2/目录和ndb_data/49/config.ini文件。

#
# Configuration file for MyCluster
#

[NDB_MGMD DEFAULT]
Portnumber=1186

[NDB_MGMD]
NodeId=49
HostName=127.0.0.1
DataDir=D:/devlop_apps/mysql-cluster-gpl-7.3.2-winx64/ndb_data/49/
Portnumber=1186

[TCP DEFAULT]
SendBufferMemory=4M
ReceiveBufferMemory=4M

[NDBD DEFAULT]
BackupMaxWriteSize=1M
BackupDataBufferSize=16M
BackupLogBufferSize=4M
BackupMemory=20M
BackupReportFrequency=10
MemReportFrequency=30
LogLevelStartup=15
LogLevelShutdown=15
LogLevelCheckpoint=8
LogLevelNodeRestart=15
DataMemory=1M
IndexMemory=1M
MaxNoOfTables=4096
MaxNoOfTriggers=3500
NoOfReplicas=2
StringMemory=25
DiskPageBufferMemory=64M
SharedGlobalMemory=20M
LongMessageBuffer=32M
MaxNoOfConcurrentTransactions=16384
BatchSizePerLocalScan=512
FragmentLogFileSize=64M
NoOfFragmentLogFiles=16
RedoBuffer=32M
MaxNoOfExecutionThreads=2
StopOnError=false
LockPagesInMainMemory=1
TimeBetweenEpochsTimeout=32000
TimeBetweenWatchdogCheckInitial=60000
TransactionInactiveTimeout=60000
HeartbeatIntervalDbDb=15000
HeartbeatIntervalDbApi=15000

[NDBD]
NodeId=1
HostName=127.0.0.1
DataDir=D:/devlop_apps/mysql-cluster-gpl-7.3.2-winx64/ndb_data/1/

[NDBD]
NodeId=2
HostName=127.0.0.1
DataDir=D:/devlop_apps/mysql-cluster-gpl-7.3.2-winx64/ndb_data/2/

[MYSQLD DEFAULT]

[MYSQLD]
NodeId=53
HostName=127.0.0.1

[API]
NodeId=50
HostName=127.0.0.1

 

4、启动ndb_mgmd.exe

D:/devlop_apps/mysql-cluster-gpl-7.3.2-winx64/bin/ndb_mgmd.exe --ndb-nodeid=49 --config-dir=D:/devlop_apps/mysql-cluster-gpl-7.3.2-winx64/ndb_data/49/ --config-file=D:/devlop_apps/mysql-cluster-gpl-7.3.2-winx64/ndb_data/49/config.ini 

 5、启动两个ndbd.exe

      --initial参数是当此数据节点第一次启动时使用,在以后启动时,此参数不需要(如果使用,会清空此节点的数据,慎之)。

D:/devlop_apps/mysql-cluster-gpl-7.3.2-winx64/bin/ndbd.exe  --ndb-nodeid=1 --ndb-connectstring=127.0.0.1:1186
D:/devlop_apps/mysql-cluster-gpl-7.3.2-winx64/bin/ndbmtd.exe  --ndb-nodeid=2 --ndb-connectstring=127.0.0.1:1186

 6、启动mysqld.exe

D:/devlop_apps/mysql-cluster-gpl-7.3.2-winx64/bin/mysqld.exe --no-defaults --datadir=D:/devlop_apps/mysql-cluster-gpl-7.3.2-winx64/data/ --tmpdir=D:/devlop_apps/mysql-cluster-gpl-7.3.2-winx64/ndb_data/53/tmp --basedir=D:/devlop_apps/mysql-cluster-gpl-7.3.2-winx64/ --socket=D:/devlop_apps/mysql-cluster-gpl-7.3.2-winx64/ndb_data/53/mysql.socket --port=3306 --ndbcluster --ndb-nodeid=53  --ndb-connectstring=127.0.0.1:1186
二、创建数据库表、测试
与没有使用 Cluster的MySQL相比,在MySQL Cluster内操作数据的方式没有太大的区别。执行这类操作时应记住两点:
  • 表必须用ENGINE=NDB或ENGINE=NDBCLUSTER选项创建,或用ALTER TABLE选项更改,以使用NDB Cluster存储引擎在 Cluster内复制它们。如果使用mysqldump的输出从已有数据库导入表,可在文本编辑器中打开SQL脚本,并将该选项添加到任何表创建语句,或用这类选项之一替换任何已有的ENGINE(或TYPE)选项。
  • 另外还请记住,每个NDB表必须有一个主键。如果在创建表时用户未定义主键,NDB Cluster存储引擎将自动生成隐含的主键。(注释:该隐含 键也将占用空间,就像任何其他的表索引一样。由于没有足够的内存来容纳这些自动创建的键,出现问题并不罕见)。

 

create database if not exists clusterdb ;
use clusterdb;
create table if not exists cluster_test
(id INT) ENGINE=NDB;

insert into cluster_test(id) values(1),(2),(3),(4);

use clusterdb;
create table if not exists city(
id MEDIUMINT UNSIGNED not null auto_increment PRIMARY KEY,
name VARCHAR(20) not null default ''
)engine=ndbcluster default charset utf8;

insert into city values(1,'city1');
insert into city values(2,'city2');
 

 

 

 关闭Mysql Cluster相关进程:

1、运行以下命令关闭SQL节点的mysqld服务:

 

D:/devlop_apps/mysql-cluster-gpl-7.3.2-winx64/bin/mysqladmin.exe -uroot shutdown
 2、要想关闭 Cluster,可在MGM节点所在的机器上,在Shell中简单地输入下述命令:

 

 

D:/devlop_apps/mysql-cluster-gpl-7.3.2-winx64/binndb_mgm.exe -e shutdown
 

 

将MySQL Cluster安装为 window 服务:

说白了,就是在启动每个命令时增加 --install=xx参数

 

D:/devlop_apps/mysql-cluster-gpl-7.3.2-winx64/bin/ndb_mgmd.exe --install=ndb_mgmd  --ndb-nodeid=49 --config-dir=D:/devlop_apps/mysql-cluster-gpl-7.3.2-winx64/ndb_data/49/ --config-file=D:/devlop_apps/mysql-cluster-gpl-7.3.2-winx64/ndb_data/49/config.ini 
 
D:/devlop_apps/mysql-cluster-gpl-7.3.2-winx64/bin/ndbd.exe --install=ndb_node_1  --ndb-nodeid=1 --ndb-connectstring=127.0.0.1:1186
 
D:/devlop_apps/mysql-cluster-gpl-7.3.2-winx64/bin/ndbdmtd.exe --install=ndb_node_2 --ndb-nodeid=2 --ndb-connectstring=127.0.0.1:1186

D:/devlop_apps/mysql-cluster-gpl-7.3.2-winx64/bin/mysqld.exe  --install=ndb_mysqld  --no-defaults --datadir=D:/devlop_apps/mysql-cluster-gpl-7.3.2-winx64/data/ --tmpdir=D:/devlop_apps/mysql-cluster-gpl-7.3.2-winx64/ndb_data/53/tmp --basedir=D:/devlop_apps/mysql-cluster-gpl-7.3.2-winx64/ --socket=D:/devlop_apps/mysql-cluster-gpl-7.3.2-winx64/ndb_data/53/mysql.socket --port=3306 --ndbcluster --ndb-nodeid=53  --ndb-connectstring=127.0.0.1:1186 
  mysqld.exe安装成服务可以成功,但是启动动时却没有成功。还需要找找原因。

 

### Windows 下配置 MySQL 开机自启动的方法 在 Windows 平台上,可以通过多种方式实现 MySQL 的开机自启动功能。以下是几种常见方法及其具体操作说明: #### 方法一:通过命令行安装 MySQL 服务 如果 MySQL 服务尚未创建,则可以使用 `mysqld.exe` 命令手动安装 MySQL 服务。 1. 打开命令提示符(以管理员身份运行)。 2. 切换到 MySQL 安装路径下的 `bin` 目录,例如: ```cmd cd C:\Program Files\MySQL\MySQL Server 8.0\bin\ ``` 3. 使用以下命令安装 MySQL 服务: ```cmd mysqld.exe --install ``` 此命令会将 MySQL 注册为系统服务[^3]。 4. 如果希望指定服务名称(默认名为 `MySQL`),可使用如下命令: ```cmd mysqld.exe --install MySQLServiceName ``` 5. 启动 MySQL 服务: ```cmd net start MySQL ``` 完成上述步骤后,MySQL 将随操作系统一起启动。 --- #### 方法二:修改现有 MySQL 服务属性 当 MySQL 服务已经存在时,只需调整其启动类型即可。 1. 打开命令提示符(以管理员身份运行)。 2. 输入以下命令查看当前 MySQL 服务状态: ```cmd sc queryex MySQL ``` 3. 修改 MySQL 服务的启动类型为自动: ```cmd sc config MySQL start= auto ``` 上述命令中的 `start= auto` 表示将服务设置为开机自动启动[^1]。 4. 确认更改生效后重启计算机测试效果。 --- #### 方法三:编写批处理文件 (.bat) 实现手动启动 对于某些特殊场景(如权限不足无法直接注册服务的情况),可通过 `.bat` 脚本间接启动 MySQL。 1. 创建一个新的文本文件,并将其扩展名更改为 `.bat`,例如 `StartMySQL.bat`。 2. 编辑该脚本内容如下: ```batch @echo off REM 设置 MySQL bin 目录路径 set PATH=C:\Program Files\MySQL\MySQL Server 8.0\bin;%PATH% REM 启动 MySQL 服务 net start MySQL echo MySQL 已成功启动! pause ``` 3. 双击运行此 `.bat` 文件或将它放置于系统的启动项中以便每次登录时自动执行[^2]。 注意:这种方法虽然简单易用,但不如前两种方案稳定可靠。 --- #### 方法四:利用第三方工具 Winsw 构建独立服务 Winsw 是一款轻量级开源工具,能够帮助开发者轻松构建 Windows 自定义服务。 1. 下载最新版本的 [WinSW](https://github.com/kohsuke/winsw/releases),并将解压后的文件重命名为 `MySQLService.xml` 和 `MySQLService.exe`。 2. 准备 XML 配置文件,内容如下所示: ```xml <service> <id>mysql</id> <name>MySQL Service</name> <description>This service runs the MySQL server.</description> <executable>C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe</executable> <logmode>rotate</logmode> </service> ``` 3. 在同一目录下双击运行 `MySQLService.exe install` 来安装新服务。 4. 测试服务是否正常工作: ```cmd net start mysql ``` 至此,借助 Winsw 成功实现了 MySQL 的开机自启支持[^4]。 --- ### 总结 以上介绍了四种不同的技术手段用于达成 Windows 系统环境MySQL 数据库管理软件的自动化加载需求。每种策略各有优劣,请依据实际环境选取最合适的解决方案实施部署。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值