MySQL集群在IBM服务器上配置安装详解

数据库 MySQL
在这里,我们的作者以IBM服务器作为基础,利用VMWare构建一个MySQL集群。希望本文能对大家的实际工作有所帮助。

本文只是介绍安装和配置,关于一些名词和原理,请参考MySQL手册。

一.环境:

IBM x3560

Vmware esx 4.0

centos 5.3 –32bit

MySQL-max-5.0.24-linux-i686.tar.gz

为了快速搭建所需环境,我选择了一台IBM服务器安装了Vmware esx 4.0,用vm的ovf模板部署了3台centos,一台作为管理(MGM),节点两台作为SQL节点和数据节点。计算机名和IP地址如下:

DB1    192.168.20.201

DB2    192.168.20.202

MGM   192.168.20.203

二,在DB1和DB2上部署MySQL(配置过程相同)

听说MySQL5.1以及集成了MySQL集群功能,但是看了好多资料(包括MySQL5.1手册),都没有介绍安装配置的方法,很郁闷,***还是选择了MySQL-max-5.0.24这个版本,MySQL-max是二进制的包,所以也省去了安装的麻烦,只需要几步简单的设置。

1, 建立MySQL用户组,MySQL-max-5.0.24-linux-i686.tar.gz解压后移动到/usr/local/MySQL

[root@db1 software]#groupadd MySQL  
[root@db1 software]#useradd –g MySQL MySQL  
[root@db1 software]# tar  -zxf  MySQL-max-5.0.24-linux-i686.tar.gz  
[root@db1 software]#mv  MySQL-max-5.0.24-linux-i686  MySQL  
[root@db1 software]#mv MySQL /usr/local/MySQL 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

2, 拷贝MySQL配置文件到/etc/下,初始化数据库,设置目录权限,启动MySQL

[root@db1 software]# cd /usr/local/MySQL/  
[root@db1 MySQL]# cp support-files/my-medium.cnf /etc/my.cnf  
[root@db1 MySQL]# scripts/MySQL_install_db --user=MySQL  
[root@db1 MySQL]#chown -R root .  
[root@db1 MySQL]#chown -R MySQL data  
[root@db1 MySQL]#chgrp -R MySQL .  
[root@db1 MySQL]# bin/MySQLd_safe --user=MySQL & 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

3, 将MySQL写入服务,初始化MySQL的root密码

[root@db1 MySQL]# cp support-files/MySQL.server /etc/rc.d/init.d/MySQLd  
[root@db1 MySQL]# chkconfig --add MySQLd  
[root@db1 MySQL]# bin/MySQLadmin -u root password 123456 
  • 1.
  • 2.
  • 3.

4, 停止MySQL服务,修改配置文件

[root@db1 MySQL]# service MySQLd stop  
[root@db1 MySQL]# vi /etc/my.cnf 
  • 1.
  • 2.

在最下面添加内容:

[MySQLD]  
ndbcluster  
ndb-connectstring=192.168.20.203  
   
[MySQL_CLUSTER]  
ndb-connectstring=192.168.20.203 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

保存退出,先不要启动MySQL服务

三,部署管理节点

管理节点的配置也很简单,但它是MySQL cluster配置中最关键的一步。

1, 解压MySQL-max-5.0.24-linux-i686.tar.gz包,拷贝包里bin目录下的ndb_mgm和ndb_mgmd两文件到/usr/bin/目录中(看一下是否具有可执行权限)。

[root@mgm MySQL-max-5.0.24-linux-i686]# cd bin/ndb_mgm* /usr/bin 
  • 1.

2, 创建管理节点数据库目录,并且在此目录中建立配置文件config.ini

Mkdir /usr/local/MySQL-cluster  
Cd /usr/local/MySQL-cluster  
Vi config.ini 
  • 1.
  • 2.
  • 3.

添加如下内容:

[NDBD DEFAULT]  
NoOfReplicas=2 
DataMemory=200M 
IndexMemory=100M 
   
[TCP DEFAULT]  
portnumber=2202 
   
[NDB_MGMD]  
   
hostname=192.168.20.203  
datadir=/usr/local/MySQL-cluster  
   
[NDBD]  
   
hostname=192.168.20.201  
datadir=/usr/local/MySQL/data  
   
[NDBD]  
   
hostname=192.168.20.202  
datadir=/usr/local/MySQL/data  
   
[MySQLD]  
hostname=192.168.20.201  
   
[MySQLD]  
hostname=192.168.20.202 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.

保存退出

四,MySQL cluster的启动

MySQL cluster的启动顺序:管理节点--数据节点-SQL节点。

 1,[root@mgm MySQL-cluster]# ndb_mgmd -f ./config.ini

如果没有提示,表示启动成功,Ps -aux查看进程,看是否已经启动

root  4700  0.0 0.6   5984 1668 ?    Ssl 14:20   0:00 ndb_mgmd -f ./config.ini 
  • 1.

2,分别在DB1和DB2上启动数据节点

 

[root@db1 MySQL]# bin/ndbd –initial 
  • 1.

问题出来了:

 提示:

[root@db1 MySQL]# bin/ndbd --initial  
Unable to connect with connect string: nodeid=0,192.168.20.203:1186  
Retrying every 5 seconds. Attempts left: 12 11 10 9 8 7 6 5 4 3 2 1, failed.  
error=2350 
2010-05-05 14:21:21 [ndbd] INFO     -- Error handler restarting system  
2010-05-05 14:21:21 [ndbd] INFO     -- Error handler shutdown completed - exiting  
sphase=0 
exit=-1 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

 在网上找答案,出这个问题的人还真不少,而且答案五花八门,统统试了一遍,还是不行,问题到底出在哪里呢?

 查看错误日志,内容如下:

 [root@db1 MySQL]# more ndb_pid4968_error.log  
Current byte-offset of file-pointer is: 568                        
   
Time: Wednesday 5 May 2010 - 14:17:25  
Status: Permanent error, external action needed  
Message: Invalid configuration received from Management Server (Configuration error)  
Error: 2350  
Error data: Could not connect to ndb_mgmd  
Error object:  
Program: bin/ndbd  
Pid: 4968  
Trace: <no tracefile> 
Version: Version 5.0.24  
***EOM*** 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.

看带下划线处,不能连接到管理节点,我的管理节点启动是ok的啊,突然一下明白了,防火墙是开着的(系统默认是开启的),关掉防火墙和SELinux,重新ndbd –initial,启动成功

3, 启动SQL节点上的MySQL服务

Service MySQLd start 
  • 1.

4,全部节点都启动成功后,在MGM节点上用ndb_mgm工具的show命令查看群集的状态    

        [root@mgm ~]# 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    @192.168.20.201 (Version: 5.0.24, Nodegroup: 0, Master)  
id=3    @192.168.20.202 (Version: 5.0.24, Nodegroup: 0)  
         
[ndb_mgmd(MGM)] 1 node(s)  
id=1    @192.168.20.203 (Version: 5.0.24)  
         
[MySQLd(API)]   2 node(s)  
id=4    @192.168.20.201 (Version: 5.0.24)  
id=5    @192.168.20.202 (Version: 5.0.24) 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.

看蓝色标示的字段,可以看到管理节点,sql节点和数据节点,还有一个连接端口。

五.MySQL cluster的测试

声明一点,要使用MySQL cluster,表的存储引擎必须是ndb的。

在DB1(192.168.20.201)中创建表,插入数据:

 MySQL> use test  
Database changed  
   
MySQL> create table mingxing(name char(3))engine=ndb;  
Query OK, 0 rows affected (0.57 sec)  
   
MySQL> insert into mingxing value('jay'),('cyl'),('ldh');  
Query OK, 3 rows affected (0.04 sec)  
Records: 3 Duplicates: 0 Warnings: 0 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

然后再DB2(192.168.20.202)上看到了刚才创建的表和表里的数据

MySQL> use test  
Database changed  
MySQL> show tables;  
+----------------+  
| Tables_in_test |  
+----------------+  
| mingxing      |  
+----------------+  
1 row in set (0.01 sec)  
   
MySQL> select * from mingxing;  
+------+  
| name |  
+------+  
| jay |  
| cyl |  
| ldh |  
+------+  
3 rows in set (0.00 sec) 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.

到此,MySQL的安装和配置基本完成。

注意: 如果在db1上创建一个数据库是不能同步到db2上去的,两边需要有相同名字的库名,库中的数据才能同步过去

【编辑推荐】 

  1. MySQL数据库集群进行正确配置步骤
  2. MySQL 集群在Server1与Server2上如何安装MySQL
  3. MySQL集群配置
  4. MySQL集群自动安装脚本
  5. MySQL触发器如何正确使用
责任编辑:彭凡 来源: 51CTO博客
相关推荐

2010-05-19 10:31:07

IIS服务器

2009-09-22 12:14:11

ibmdwLotus

2009-06-18 15:04:52

2009-07-28 19:18:44

物理服务器VMware ESXi服务器虚拟化

2010-03-03 15:49:38

Linux Oracl

2010-09-10 16:19:31

配置tftp服务器

2010-08-26 22:01:47

DHCP服务器

2009-09-17 16:50:23

WSUS服务器

2011-06-16 09:50:37

IBM至强服务器

2010-08-11 16:43:09

2009-07-06 18:02:34

JSP服务器

2009-12-07 09:43:45

代理服务器路由器配置

2011-03-30 10:15:14

Mysql数据库服务器

2010-10-09 13:40:49

GPUIBM服务器

2010-08-06 12:29:17

Linux NFS服务

2020-04-15 20:57:57

NginxWeb服务器

2009-01-10 18:58:52

2009-09-17 14:05:18

WSUS服务器

2009-12-03 17:10:43

2009-02-18 13:43:00

点赞
收藏

51CTO技术栈公众号