简单mysql-cluster 安装笔记 for rhel5.x86_64
时间:2010-07-31 来源:huaihe0410
http://imysql.cn/onlinedoc --- mysql 在线参考手册
******************************************************************
一:下载安装包
Mysqlcluster的rpm下载地址http://dev.mysql.com/downloads/cluster
包列表:
MySQL-Cluster-gpl-management-7.1.4b-1.rhel5.x86_64.rpm
MySQL-Cluster-gpl-tools-7.1.4b-1.rhel5.x86_64.rpm
MySQL-Cluster-gpl-storage-7.1.4b-1.rhel5.x86_64.rpm
MySQL-Cluster-gpl-client-7.1.4b-1.rhel5.x86_64.rpm
MySQL-Cluster-gpl-server-7.1.4b-1.rhel5.x86_64.rpm
MySQL-Cluster-gpl-clusterj-7.1.4b-1.rhel5.x86_64.rpm
MySQL-Cluster-gpl-debuginfo-7.1.4b-1.rhel5.x86_64.rpm
MySQL-Cluster-gpl-devel-7.1.4b-1.rhel5.x86_64.rpm
MySQL-Cluster-gpl-embedded-7.1.4b-1.rhel5.x86_64.rpm
MySQL-Cluster-gpl-extra-7.1.4b-1.rhel5.x86_64.rpm
MySQL-Cluster-gpl-shared-7.1.4b-1.rhel5.x86_64.rpm
MySQL-Cluster-gpl-test-7.1.4b-1.rhel5.x86_64.rpm
实际安装时要用到其中的5个包即可,(其他包还不干什么用的?)
管理节点:
MySQL-Cluster-gpl-management-7.1.4b-1.rhel5.x86_64.rpm (ndb_mgmd管理服务)
MySQL-Cluster-gpl-tools-7.1.4b-1.rhel5.x86_64.rpm (ndb_mgm 管理服务客户端)
存储节点:
MySQL-Cluster-gpl-storage-7.1.4b-1.rhel5.x86_64.rpm (ndbd)
SQL节点:(服务节点)
MySQL-Cluster-gpl-server-7.1.4b-1.rhel5.x86_64.rpm (服务端)
MySQL-Cluster-gpl-client-7.1.4b-1.rhel5.x86_64.rpm (客户端)
二:安装 & 简单配置
计划建立有5个节点的MySQL CLuster体系,因此需要用到5台机器,分别做如下用途:
节点(用途) IP地址(主机名)
-----------------------------------------------
管理节点(MGM) 192.168.0.1(db1) 数据节点1(NDBD1) 192.168.0.2(db2)
数据节点2(NDBD2) 192.168.0.3(db3)
SQL节点1(SQL1) 192.168.0.4(db4)
SQL节点2(SQL2) 192.168.0.5(db5)
1.安装准备 a.新建用户mysql ,组mysql ,使用此mysql账号进行安装; b.若安装过程中提示权限不足,可使用root将权限放开 (注意:权限放开可能会导致系统用户无法登录系统); c.若安装时提示“MySQL conflicts with mysql-xx ”,可能是系统已安装旧版本。 rpm -qa mysql or rpm -qa | grep mysql -- 查询旧版本安装包 rpm -e mysql-4.1.20-2.RHEL4.1.i386 -- 卸载旧版本 rpm -e mysql-4.1.20-2.RHEL4.1.i386 --nodeps -- 卸载时报错,强制卸载 rpm -e --allmatches mysqlclient10-3.23.58-4.RHEL4.1 -- 卸载时报错(specifies multiple packages) d.查询包装到哪了 rpm -ql MySQL-Cluster-gpl-server-7.1.4b-1.rhel5.x86_64.rpm e.不想rpm安装,直接解压后是否可用?? rpm2cpio kchmviewer-3.1-1.el5.5.x86_64.rpm | cpio -div 2.安装管理节点 a.安装 rpm -ivh MySQL-Cluster-gpl-management-7.1.4b-1.rhel5.x86_64.rpm # 安装后文件 rpm -ql MySQL-Cluster-gpl-management-7.1.4b-1.rhel5.x86_64 /usr/sbin/ndb_mgmd
/usr/share/man/man8/ndb_mgmd.8.gz rpm -ivh MySQL-Cluster-gpl-tools-7.1.4b-1.rhel5.x86_64.rpm # 安装后文件 rpm -ql MySQL-Cluster-gpl-management-7.1.4b-1.rhel5.x86_64
/usr/sbin/ndb_mgmd
/usr/share/man/man8/ndb_mgmd.8.gz
[root@aiwm152 manager_source]# rpm -ql MySQL-Cluster-gpl-tools-7.1.4b-1.rhel5.x86_64.rpm
package MySQL-Cluster-gpl-tools-7.1.4b-1.rhel5.x86_64.rpm is not installed
b.配置 新建配置文件config.ini ,路径可随便指定,启动服务端时指定路径即可。一般和服务端程序放在同一目录。 增加常用配置项: vi /usr/sbin/config.ini [NDBD DEFAULT]
NoOfReplicas=2 [NDB_MGMD]
ID=1
hostname=192.168.0.1
datadir=/var/lib/mysql/data_log [NDBD]
ID=2
hostname=192.168.0.2 datadir=/var/lib/mysql/data_4 [NDBD]
ID=3
hostname=192.168.0.3 datadir=/var/lib/mysql/data_5
[MYSQLD]
ID=4
hostname=192.168.0.4
[MYSQLD]
ID=5
hostname=192.168.0.5 c. 启动服务端 ndb_mgmd -f /usr/sbin/config.ini --configdir=. d. 通过客户端查看 cluster(此时其他节点均未启动) ndb_mgm ndb_mgm> show Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s) id=2 (not connected, accepting connect from 192.168.0.2)
id=3 (not connected, accepting connect from 192.168.0.3) [ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.0.1 (mysql-5.1.44 ndb-7.1.4) [mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from 192.168.0.4)
id=5 (not connected, accepting connect from 192.168.0.5) 3.安装存储节点 a.安装 rpm -ivh MySQL-Cluster-gpl-storage-7.1.4b-1.rhel5.x86_64.rpm # 安装后文件 rpm -ql MySQL-Cluster-gpl-storage-7.1.4b-1.rhel5.x86_64
/usr/sbin/ndbd
/usr/sbin/ndbmtd
/usr/share/man/man8/ndbd.8.gz
/usr/share/man/man8/ndbmtd.8.gz b.配置 新建配置文件my.cnf ,路径可随便指定,启动服务端时指定路径即可。一般放是/etc/my.cnf,启动时无需指定目录。 增加常用配置项: vi /etc/my.cnf
[mysqld]
ndbcluster
ndb-connectstring=192.168.0.1
[MYSQL_CLUSTER]
ndb-connectstring=192.168.0.1 #连接串指向管理节点
c.启动 # 直接启动 ndbd # 指定配置文件 ndbd --defaults-file=/etc/my.cnf # 第一次启动时使用,因为该参数会使节点删除由早期ndbd实例创建的、用于恢复的任何文件,包括用于恢复的日志文件 ndbd --initial
d.安装另一台存储节点,启动后,查看管理节点: ndb_mgm ndb_mgm> show Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s) id=2 @192.168.0.2 (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0, Master)
id=3 @192.168.0.3 (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.0.1 (mysql-5.1.44 ndb-7.1.4) [mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from 192.168.0.4)
id=5 (not connected, accepting connect from 192.168.0.5)
3.安装SQL节点 a. 安装 rpm -ivh MySQL-Cluster-gpl-server-7.1.4b-1.rhel5.x86_64.rpm # 安装后文件 rpm -ql MySQL-Cluster-gpl-server-7.1.4b-1.rhel5.x86_64
/etc/init.d/mysql
/etc/logrotate.d/mysql
/etc/my.cnf
/etc/mysqlmanager.passwd
/usr/bin/innochecksum ...................... /usr/lib64/mysql/mysqld-debug.sym
/usr/lib64/mysql/mysqld.sym
/usr/sbin/mysqld
/usr/sbin/mysqld-debug
/usr/sbin/mysqlmanager
/usr/sbin/rcmysql .......................... /usr/share/mysql/slovak/errmsg.sys
/usr/share/mysql/spanish/errmsg.sys
/usr/share/mysql/swedish/errmsg.sys
/usr/share/mysql/ukrainian/errmsg.sys rpm -ivh MySQL-Cluster-gpl-client-7.1.4b-1.rhel5.x86_64.rpm # 安装后文件 rpm -ql MySQL-Cluster-gpl-client-7.1.4b-1.rhel5.x86_64
/usr/bin/msql2mysql
/usr/bin/mysql ............................... /usr/share/man/man1/mysqlshow.1.gz
/usr/share/man/man1/mysqlslap.1.gz b.配置 复制一封配置文件/usr/share/mysql/my-large.cnf 到 /etc/my.cnf 在原来的基础上,增加配置项 [MYSQL_CLUSTER]
ndb-connectstring=192.168.0.1 [mysqld]
ndbcluster
ndb-connectstring=192.168.0.1 c.启动 SQL节点和普通的MySQL类似,启动指令如下: ./mysqld_safe --defaults-file=/etc/my.cnf & d.安装另一个SQL节点,启动后查看管理节点 ndb_mgm ndb_mgm> show Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s) id=2 @192.168.0.2 (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0, Master)
id=3 @192.168.0.3 (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.0.1 (mysql-5.1.44 ndb-7.1.4) [mysqld(API)] 2 node(s)
id=4 @192.168.0.4 (mysql-5.1.44 ndb-7.1.4)
id=5 @192.168.0.5 (mysql-5.1.44 ndb-7.1.4) 三: 测试 与没有使用 Cluster的MySQL相比,在MySQL Cluster内操作数据的方式没有太大的区别。执行这类操作时应记住两点:
管理节点(MGM) 192.168.0.1(db1) 数据节点1(NDBD1) 192.168.0.2(db2)
数据节点2(NDBD2) 192.168.0.3(db3)
SQL节点1(SQL1) 192.168.0.4(db4)
SQL节点2(SQL2) 192.168.0.5(db5)
1.安装准备 a.新建用户mysql ,组mysql ,使用此mysql账号进行安装; b.若安装过程中提示权限不足,可使用root将权限放开 (注意:权限放开可能会导致系统用户无法登录系统); c.若安装时提示“MySQL conflicts with mysql-xx ”,可能是系统已安装旧版本。 rpm -qa mysql or rpm -qa | grep mysql -- 查询旧版本安装包 rpm -e mysql-4.1.20-2.RHEL4.1.i386 -- 卸载旧版本 rpm -e mysql-4.1.20-2.RHEL4.1.i386 --nodeps -- 卸载时报错,强制卸载 rpm -e --allmatches mysqlclient10-3.23.58-4.RHEL4.1 -- 卸载时报错(specifies multiple packages) d.查询包装到哪了 rpm -ql MySQL-Cluster-gpl-server-7.1.4b-1.rhel5.x86_64.rpm e.不想rpm安装,直接解压后是否可用?? rpm2cpio kchmviewer-3.1-1.el5.5.x86_64.rpm | cpio -div 2.安装管理节点 a.安装 rpm -ivh MySQL-Cluster-gpl-management-7.1.4b-1.rhel5.x86_64.rpm # 安装后文件 rpm -ql MySQL-Cluster-gpl-management-7.1.4b-1.rhel5.x86_64 /usr/sbin/ndb_mgmd
/usr/share/man/man8/ndb_mgmd.8.gz rpm -ivh MySQL-Cluster-gpl-tools-7.1.4b-1.rhel5.x86_64.rpm # 安装后文件 rpm -ql MySQL-Cluster-gpl-management-7.1.4b-1.rhel5.x86_64
/usr/sbin/ndb_mgmd
/usr/share/man/man8/ndb_mgmd.8.gz
[root@aiwm152 manager_source]# rpm -ql MySQL-Cluster-gpl-tools-7.1.4b-1.rhel5.x86_64.rpm
package MySQL-Cluster-gpl-tools-7.1.4b-1.rhel5.x86_64.rpm is not installed
b.配置 新建配置文件config.ini ,路径可随便指定,启动服务端时指定路径即可。一般和服务端程序放在同一目录。 增加常用配置项: vi /usr/sbin/config.ini [NDBD DEFAULT]
NoOfReplicas=2 [NDB_MGMD]
ID=1
hostname=192.168.0.1
datadir=/var/lib/mysql/data_log [NDBD]
ID=2
hostname=192.168.0.2 datadir=/var/lib/mysql/data_4 [NDBD]
ID=3
hostname=192.168.0.3 datadir=/var/lib/mysql/data_5
[MYSQLD]
ID=4
hostname=192.168.0.4
[MYSQLD]
ID=5
hostname=192.168.0.5 c. 启动服务端 ndb_mgmd -f /usr/sbin/config.ini --configdir=. d. 通过客户端查看 cluster(此时其他节点均未启动) ndb_mgm ndb_mgm> show Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s) id=2 (not connected, accepting connect from 192.168.0.2)
id=3 (not connected, accepting connect from 192.168.0.3) [ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.0.1 (mysql-5.1.44 ndb-7.1.4) [mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from 192.168.0.4)
id=5 (not connected, accepting connect from 192.168.0.5) 3.安装存储节点 a.安装 rpm -ivh MySQL-Cluster-gpl-storage-7.1.4b-1.rhel5.x86_64.rpm # 安装后文件 rpm -ql MySQL-Cluster-gpl-storage-7.1.4b-1.rhel5.x86_64
/usr/sbin/ndbd
/usr/sbin/ndbmtd
/usr/share/man/man8/ndbd.8.gz
/usr/share/man/man8/ndbmtd.8.gz b.配置 新建配置文件my.cnf ,路径可随便指定,启动服务端时指定路径即可。一般放是/etc/my.cnf,启动时无需指定目录。 增加常用配置项: vi /etc/my.cnf
[mysqld]
ndbcluster
ndb-connectstring=192.168.0.1
[MYSQL_CLUSTER]
ndb-connectstring=192.168.0.1 #连接串指向管理节点
c.启动 # 直接启动 ndbd # 指定配置文件 ndbd --defaults-file=/etc/my.cnf # 第一次启动时使用,因为该参数会使节点删除由早期ndbd实例创建的、用于恢复的任何文件,包括用于恢复的日志文件 ndbd --initial
d.安装另一台存储节点,启动后,查看管理节点: ndb_mgm ndb_mgm> show Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s) id=2 @192.168.0.2 (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0, Master)
id=3 @192.168.0.3 (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.0.1 (mysql-5.1.44 ndb-7.1.4) [mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from 192.168.0.4)
id=5 (not connected, accepting connect from 192.168.0.5)
3.安装SQL节点 a. 安装 rpm -ivh MySQL-Cluster-gpl-server-7.1.4b-1.rhel5.x86_64.rpm # 安装后文件 rpm -ql MySQL-Cluster-gpl-server-7.1.4b-1.rhel5.x86_64
/etc/init.d/mysql
/etc/logrotate.d/mysql
/etc/my.cnf
/etc/mysqlmanager.passwd
/usr/bin/innochecksum ...................... /usr/lib64/mysql/mysqld-debug.sym
/usr/lib64/mysql/mysqld.sym
/usr/sbin/mysqld
/usr/sbin/mysqld-debug
/usr/sbin/mysqlmanager
/usr/sbin/rcmysql .......................... /usr/share/mysql/slovak/errmsg.sys
/usr/share/mysql/spanish/errmsg.sys
/usr/share/mysql/swedish/errmsg.sys
/usr/share/mysql/ukrainian/errmsg.sys rpm -ivh MySQL-Cluster-gpl-client-7.1.4b-1.rhel5.x86_64.rpm # 安装后文件 rpm -ql MySQL-Cluster-gpl-client-7.1.4b-1.rhel5.x86_64
/usr/bin/msql2mysql
/usr/bin/mysql ............................... /usr/share/man/man1/mysqlshow.1.gz
/usr/share/man/man1/mysqlslap.1.gz b.配置 复制一封配置文件/usr/share/mysql/my-large.cnf 到 /etc/my.cnf 在原来的基础上,增加配置项 [MYSQL_CLUSTER]
ndb-connectstring=192.168.0.1 [mysqld]
ndbcluster
ndb-connectstring=192.168.0.1 c.启动 SQL节点和普通的MySQL类似,启动指令如下: ./mysqld_safe --defaults-file=/etc/my.cnf & d.安装另一个SQL节点,启动后查看管理节点 ndb_mgm ndb_mgm> show Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s) id=2 @192.168.0.2 (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0, Master)
id=3 @192.168.0.3 (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.0.1 (mysql-5.1.44 ndb-7.1.4) [mysqld(API)] 2 node(s)
id=4 @192.168.0.4 (mysql-5.1.44 ndb-7.1.4)
id=5 @192.168.0.5 (mysql-5.1.44 ndb-7.1.4) 三: 测试 与没有使用 Cluster的MySQL相比,在MySQL Cluster内操作数据的方式没有太大的区别。执行这类操作时应记住两点:
- 表必须用ENGINE=NDB或ENGINE=NDBCLUSTER选项创建,或用ALTER TABLE选项更改,以使用NDB Cluster存储引擎在 Cluster内复制它们。如果使用mysqldump的输出从已有数据库导入表,可在文本编辑器中打开SQL脚本,并将该选项添加到任何表创建语句,或用这类选项之一替换任何已有的ENGINE(或TYPE)选项。
- 另外还请记住,每个NDB表必须有一个主键。如果在创建表时用户未定义主键,NDB Cluster存储引擎将自动生成隐含的主键。(注释:该隐含 键也将占用空间,就像任何其他的表索引一样。由于没有足够的内存来容纳这些自动创建的键,出现问题并不罕见)。
下面是一个例子:
在SQL_1(192.168.0.4)上,创建数据表,插入数据:
mysql -uroot test mysql> create table city( mysql> id mediumint unsigned not null auto_increment primary key, mysql> name varchar(20) not null default '' mysql> ) engine = ndbcluster default charset utf8; mysql> insert into city values(1, 'city1'); mysql> insert into city values(2, 'city2');
在SQL_2(192.168.0.5)上,查询数据:
mysql -uroot test mysql> select * from city; +-----------+ |id | name | +-----------+ |1 | city1 | +-----------+ |2 | city2 | +-----------+
之前设置的参数:config.ini | [NDBD DEFAULT] NoOfReplicas=2 # 2 表示两个副本
停止存储节点1(192.168.0.2),查询正常。
mysql -uroot test
mysql> select * from city;
+-----------+
|id | name |
+-----------+
|1 | city1 |
+-----------+
|2 | city2 |
+-----------+
四:安全关闭
要想关闭 Cluster,可在MGM节点所在的机器上,在Shell中简单地输入下述命令:
root# /usr/local/mysql/ndb_mgm -e shutdown 运行以下命令关闭SQL节点的mysqld服务:
root# /usr/local/mysql/bin/mysqladmin -uroot shutdown
五:增加存储节点?
增加时有点奇怪,ndbd始终启动不了,后来单独启动新增的节点,启动ok后,再配置所有ndbd一起启动。就可以了
六:注意事项
1:如果发现关闭一台机器的ndbd进程,另一台机器的ndbd的进程也关闭,则需要修改参数NoOfReplicas。
2:ndbd –initial 不能同时在所有数据节点机器上执行,如执行,会删除所有数据
3:可以像操作非簇类型的数据库那样,操作mysqld节点
4:每次修改config.ini文件,重启ndb_mgmd时,需要删除/mysql-cluster/文件下的ndb_1_config.bin.1文件,因为他默认调用此文件
5:NDB簇不支持自动发现数据库的功能,这点很重要,一旦在一个数据节点上创建了世界(world)数据库和它的表,在簇中的每个SQL节点上还需要发出命令CREATE DATABASE world,后跟FLUSH TABLES。这样,节点就能识别数据库并读取其表定义。
6.启动顺序:管理节点--数据节点--SQL节点
相关阅读 更多 +