Home  >  Article  >  Database  >  MySQL Cluster 开发环境简明部署(中文)

MySQL Cluster 开发环境简明部署(中文)

WBOY
WBOYOriginal
2016-06-07 17:11:50800browse

MySQL Cluster 开发环境简明部署(中文),作为在开发环境上第一次部署,还是以测试为主要目的。一个完整的 MySQL Cluster 由 MySQ

主要内容

1. 获取; 2. 安装; 3. 配置; 4. 运行; 5. 测试; 6. 停止; 7. 总结

1. 获取

这个不必多言吧,到 MySQL 网站上面下载就是了。MySQL Cluster 的英文部署测试手册很简明,这里和其内容基本一样。喜欢读英文版的朋友可以直接下载,略过本文。

MySQL Cluster 的英文部署测试手册下载地址:

免费下载地址在

用户名与密码都是

具体下载目录在 /2012年资料/2月/29日/MySQL Cluster 开发环境简明部署(中文)/

2. 安装

先解压,然后创建一个 symbolic link:

michael@linux:~$ tar xvf mysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar michael@linux:~$ ln -s mysql-cluster-gpl-7.2.4-linux2.6-x86_64 mysqlc

如果你愿意,可以将~/mysqlc/bin加入到你的 path 里,方便使用。

3. 配置

作为在开发环境上第一次部署,还是以测试为主要目的。一个完整的 MySQL Cluster 由 MySQL Server,Data Nodes,Management Node 三部分组成。首先我们为它们创建一些必须的目录:

michael@linux:~$ mkdir mysql-cluster michael@linux:~$ cd mysql-cluster michael@linux:~$ mkdir conf ndb_data mysqld_data

然后在conf目录下创建如下两个文件,分别是config.ini和my.cnf,,内容如下:

config.ini

用于 MySQL Server 的配置,端口号port根据你自己的情况设定。

[mysqld] ndbcluster datadir=/home/user1/my_cluster/mysqld_data basedir=/home/user1/mysqlc port=5050 my.cnf

该文件用于配置各结点的 NodeId 和 Data Nodes 与 Management Node 的数据目录。

[ndb_mgmd] hostname=localhost datadir=/home/user1/my_cluster/ndb_data NodeId=1 [ndbd default] noofreplicas=2 datadir=/home/user1/my_cluster/ndb_data [ndbd] hostname=localhost NodeId=3 [ndbd] hostname=localhost NodeId=4 [mysqld] NodeId=50

这时你的目录结构应该如下:

~ +-- /mysql-cluster-gpl-7.2.4-linux2.6-x86_64 +-- /mysqlc -> mysql-cluster-gpl-7.2.4-linux2.6-x86_64 +-- /mysql-cluster +-- /conf +-- /ndb_data +-- /mysqld_data 4. 运行

MySQL Cluster 的启动顺序是有要求的,如下:

  • Management Node
  • Data Nodes
  • MySQL Server
  • 命令如下:

    michael@linux:~$ cd ../mysql-cluster michael@linux:~/mysql-cluster$ $HOME/mysqlc/bin/ndb_mgmd -f conf/config.ini --initial --configdir=$HOME/mysql-cluster/conf/ michael@linux:~/mysql-cluster$ $HOME/mysqlc/bin/ndbd -c localhost:1186 michael@linux:~/mysql-cluster$ $HOME/mysqlc/bin/ndbd -c localhost:1186

    检查已经启动的结点的状态,命令为:

    poecahnt@linux:~$ $HOME/mysqlc/bin/ndb_mgm -e show

    输出如下:

    Connected to Management Server at: localhost:1186 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=3 @127.0.0.1 (mysql-5.5.19 ndb-7.2.4, Nodegroup: 0, Master) id=4 @127.0.0.1 (mysql-5.5.19 ndb-7.2.4, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s) id=1 @127.0.0.1 (mysql-5.5.19 ndb-7.2.4) [mysqld(API)] 1 node(s) id=50 @127.0.0.1 (mysql-5.5.19 ndb-7.2.4)

    表示已经可以启动 MySQL Server 了。最后启动 MySQL Server,命令为:

    michael@linux:~/mysql-cluseter$ $HOME/mysqlc/bin/mysqld --defaults-file=conf/my.cnf &

    输出信息如下:

    120223 15:29:02 InnoDB: The InnoDB memory heap is disabled 120223 15:29:02 InnoDB: Mutexes and rw_locks use GCC atomic builtins 120223 15:29:02 InnoDB: Compressed tables use zlib 1.2.3 120223 15:29:02 InnoDB: Using Linux native AIO 120223 15:29:02 InnoDB: Initializing buffer pool, size = 128.0M 120223 15:29:02 InnoDB: Completed initialization of buffer pool 120223 15:29:02 InnoDB: highest supported file format is Barracuda. 120223 15:29:02 InnoDB: Waiting for the background threads to start 120223 15:29:03 InnoDB: 1.1.8 started; log sequence number 1595675 120223 15:29:04 [Note] NDB: NodeID is 50, management server 'localhost:1186' 120223 15:29:04 [Note] NDB[0]: NodeID: 50, all storage nodes connected 120223 15:29:04 [Warning] NDB: server id set to zero - changes logged to bin log with server id zero will be logged with another server id by slave mysqlds 120223 15:29:04 [Note] Starting Cluster Binlog Thread 120223 15:29:04 [Note] Event Scheduler: Loaded 0 events 120223 15:29:04 [Note] $HOME/mysqlc/bin/mysqld: ready for connections. Version: '5.5.19-ndb-7.2.4-gpl' socket: '/tmp/mysql.sock' port: 5050 MySQL Cluster Community Server (GPL) 120223 15:29:05 [Note] NDB: Creating mysql.ndb_schema 120223 15:29:08 [Note] NDB Binlog: CREATE TABLE Event: REPL$mysql/ndb_schema 120223 15:29:09 [Note] NDB Binlog: logging ./mysql/ndb_schema (UPDATED,USE_WRITE) 120223 15:29:09 [Note] NDB: Creating mysql.ndb_apply_status 120223 15:29:09 [Note] NDB Binlog: CREATE TABLE Event: REPL$mysql/ndb_apply_status 120223 15:29:09 [Note] NDB Binlog: logging ./mysql/ndb_apply_status (UPDATED,USE_WRITE) 120223 15:29:09 [Note] NDB: missing frm for mysql.ndb_index_stat_sample, discovering... 120223 15:29:09 [Note] NDB: missing frm for mysql.ndb_index_stat_head, discovering... 2012-02-23 15:29:10 [NdbApi] INFO -- Flushing incomplete GCI:s 连接 MySQL Server 进行测试,确认可以用ndb存储引擎来创建数据库中的表,如下:michael@linux:~$ $HOME/mysqlc/bin/mysql -h 127.0.0.1 -P 5050 mysql> create database clusterdb; mysql> use clusterdb; mysql> insert into simples values (1),(2),(3),(4); mysql> select * from simples; +----+ | id | +----+ | 3 | | 1 | | 2 | | 4 | +----+ 6. 停止

    MySQL Cluster 必须手动停止,Data Nodes 可以用 ndb_mgm 来停止:

    michael@linux:~$ $HOME/mysqlc/bin/mysqladmin -h 127.0.0.1 -P 5050 shutdown

    如果提示:

    /home/michael/mysqlc/bin/mysqladmin: shutdown failed; error: 'Access denied; you need (at least one of) the SHUTDOWN privilege(s) for this operation'

    则在shutdown命令前加上sudo。

    michael@linux:~$ $HOME/mysqlc/bin/ndb_mgm -e shutdown

    正常停止的信息类似如下:

    120223 16:44:11 [Note] /home/michael/mysqlc/bin/mysqld: Normal shutdown michael@linux:~/mysql-cluster$ 120223 16:44:11 [Note] Event Scheduler: Purging the queue. 0 events 120223 16:44:13 [Warning] /home/michael/mysqlc/bin/mysqld: Forcing close of thread 2 user: 'michael' 120223 16:44:13 [Note] Stopping Cluster Utility thread 120223 16:44:13 [Note] Stopping Cluster Index Stats thread 120223 16:44:13 [Note] Stopping Cluster Binlog 120223 16:44:13 [Note] Stopping Cluster Index Statistics thread 120223 16:44:14 InnoDB: Starting shutdown... 120223 16:44:15 InnoDB: Shutdown completed; log sequence number 1595675 120223 16:44:15 [Note] /home/michael/mysqlc/bin/mysqld: Shutdown complete 7. 总结
  • 有序启动:Management Node,Data Nodes,MySQL Server
  • 配置项与各节点的对应
  • 每个结点都单独启动
  • Management Node 提供状态查看等多种功能
  • linux

    Statement:
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
    Previous article:MongoDB 最佳实践Next article:PostgreSQL 维护更新