假设我的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 shutdown2、要想关闭 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:1186mysqld.exe安装成服务可以成功,但是启动动时却没有成功。还需要找找原因。