在ubuntu server 8.04 下的打造mysql5.0的集群服务器

本文介绍如何在Ubuntu 8.04环境下部署MySQL 5.0集群,包括配置管理节点、数据节点及SQL节点,实现数据同步及故障模拟。
为什么选择ubserver server 8.04+mysql5.0来做这个实验,因为在ubserver server10.4下的mysql5.1不再包含mysql-ndb-mgm及mysql-ndb,它把集群功能单独了到了mysql-cluster-server中,在ubuntuserver10.4中安装mysql-cluster-server时多次实验,都没成功,也没找出问题所在;又试着安装mysql5.0时,这次想总该成功了吧,可是安装mysql5.0都不成功,只好用ubuntu server8.04+mysql5.0了。

 

1,实验环境:
使用虚拟机安装三个ubuntu8.04系统,三个系统分别是:
管理节点ubserver1(IP地址为:192.168.244.131);
数据节点又是SQL节点的ubserver2(IP地址为:192.168.244.134);
数据节点又是SQL节点的ubserver3(IP地址为:192.168.244.135).
提示:比较快速的安装方法:
首先,安装第一个ubuntu系统,然后升级软件包:sudo apt-getupdate
第二,安装mysql-server : sudo apt-get installmysql-server;
安装完毕后,先关闭系统,再关闭虚拟机!
最后,使用虚拟机的克隆功能,点击“克隆该虚拟机”,这样就可以复制出另外两台带有mysql-server服务的ubuntu系统了!
2、配置系统中参数
同时启动三个ubuntu系统!
(1)群集配置
在三台服务器上配置my.cnf,三台服务器都要配置
sudo gedit /etc/mysql/my.cnf
在这个文件中找到[mysqld]
在个参数下面添加 :(必须在这个参数下面添加,否则,管理节点服务器中会显示不能连接所在ip的数据库)
ndbcluster
ndb-connectstring=192.168.244.131
#default-storage-engine=NDBCLUSTER;
//这句,不是必须的,可以注释掉!因为是集群,要求在建立表的类型是NDBCLUSTER
然后,在文件中找到[MYSQL_CLUSTER],将前面的注释#,去除
并在个参数下面添加:
ndb-connectstring=192.168.244.131
说明:在这三个ubuntu系统中配置的my.cnf文件 都是一样的,都是填写ndb-connectstring= 管理节点的ip地址
(2)管理节点服务器中(192.168.244.131)中配置ndb_mgmd.cnf
进入ubserver1,复制ndb_mgmd.cnf文件
sudo cpusr/share/doc/mysql-server-5.0/examples/ndb_mgmd.cnf  /etc/mysql/ndb_mgmd.cnf
进入编辑ndb_mgmd.cnf文件
sudo gedit /etc/mysql/ndb_mgmd.cnf
[NDBD DEFAULT]
NoOfReplicas=2
DataMemory=10MB
IndexMemory=25MB
MaxNoOfTables=256
MaxNoOfOrderedIndexes=256
MaxNoOfUniqueHashIndexes =128
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
[NDB_MGMD]
Id=1 # the NDB Management Node (this one)
HostName=192.168.244.131
DataDir= /var/lib/mysql-cluster
[NDBD]
Id=2 # the first NDB Data Node
HostName=192.168.244.134
DataDir= /var/lib/mysql-cluster
BackupDataDir=/var/lib/mysql-cluster/backup 
*设置此参数,现在节点134和135上的/var/lib/mysql-cluster/目录下建立backup目录,若不建立,会在以后连接不到管理节点!
[NDBD]
Id=3 # the second NDB Data Node
HostName=192.168.244.135
DataDir=/var/lib/mysql-cluster
BackupDataDir=/var/lib/mysql-cluster/backup
[MYSQLD]
Id=4 # the first SQL node
HostName=192.168.244.134
[MYSQLD]
Id=5 # the first SQL node
HostName=192.168.244.135
 
 
3、服务器管理节点服务器(192.168.244.131)中的mysql-ndb-mgm服务
sudo /etc/init.d/mysql-ndb-mgmstart
4、分别启动数据存储服务器(192.168.244.134192.168.244.135)中服务mysql-ndb
sudo /etc/init.d/mysql-ndbstart
5、最后分别启动,3台服务器中(192.168.244.134\135\131启动mysql服务
sudo /etc/init.d/mysqlstart
 
注意:对于第4和第5点, 当我们的数据库节点服务器关机后,重启以后,就必须在每个数据库节点服务器重新执行第4和5点命令,否则管理节点服务器输入查看命令!会显示不能连接节点服务器
 
6.群集测试
 节点管理服务器运行ndb_mgm(192.168.244.131),输入命令:ndb_mgm
feco@feco-desktop:~$ ndb_mgm
ndb_mgm> show
显示信息:
[ndbd(NDB)] 2 node(s) //集群节点,如果这里没有发数据库节点,则在ndb_mgmd.cnf文件中配置出错了
id=2@192.168.244.134(Version: 5.0.51, Nodegroup: 0)
id=3 @192.168. 244.135 (Version: 5.0.51, Nodegroup: 0,Master)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168. 244.131 (Version: 5.0.51)
[mysqld(API)] 2 node(s) //集群数据库,如果这里不能连接数据库,则是my.cnf文件配置有误,上面有过解释
id=4@192.168. 244.134 (Version: 5.0.51)
id=5 @192.168. 244.135 (Version: 5.0.51)
ndb_mgm>exit;
在测试正常后,我就可以在数据库上建立表,同时也会更新到其他数据库节点上,但建立表还是有很多限制的!
a.表必须用 ENGINE=NDB或ENGINE=NDBCLUSTER选 项创建,或用ALTERTABLE选项更改,以使用NDB Cluster存储引擎在Cluster内复制它们。如果使用mysqldump的输出从已有数据库导入表,可在文本编辑器中打开SQL脚本,并将该选项添加到任何表创建语句,或用这类选项之一替换任何已有的ENGINE(或TYPE)选项。
b.另外还请记住,每个 NDB表必须有一个主键。如果在创建表时用户未定义主键,NDBCluster存储引擎将自动生成隐含的主键。(注释:该隐含 键也将占用空间,就像任何其他的表。
c.索引一样。由于没有足够的内存来容纳这些自动创建的键,出现问题并不罕见。
d .当你在一个节点上运行create database mydb;你去其他sqlnode上执行show databases;将不能看到mydb,你需要创建它,然后usemydb; show tables;你将看到同步的表。
例如:
测试MYSQL数据库同步:
在存储节点ubserver1上
#sudo mysql –uroot –p
输入相应的密码后进入管理程序
mysql>create database clustertest;
mysql>show databases;
mysql>use clustertest;
mysql>create table testtable (age int) engine=NDBCLUSTER;//必须参数
mysql>show tables;
mysql>insert into testtable () values(1);
mysql>select * from testtable;
在存储节点ubserver2上建立相同数据库clustertest就可以了,数据表及内容 会从存储节点ubserver1上复制过来;在存储节点ubserver2上向表里增加一笔新记录.
那么在ubserver2存储节点上查询是否有记录!
7.模拟故障
把存储节点ubserver1上服务停止, sudo/etc/init.d/mysql-ndb stop
在存储节点ubserver2上增加多笔记录,
当把存储节点ubserver1开启后, sudo/etc/init.d/mysql-ndb start
查看数据是否从存储节点ubserver2复制过来.实验表明,是可以的.
 
  最后,对故障的现象总结,有以下几种:
feco@feco-desktop:~$ ndb_mgm
ndb_mgm> show
显示信息:
[ndbd(NDB)] 2node(s) 
id=2 (not connected,accepting connectfrom 192.168.244.134)
id=3  (not connected,accepting connect from192.168. 244.135)
//因为mysql-ndb服务没开启
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168. 244.131 (Version: 5.0.51)
[mysqld(API)] 2 node(s)
id=4 (not connected,accepting connectfrom 192.168.244.134)
id=5 (not connected,accepting connect from 192.168.244.135)
//因为mysql服务没开启
对于上述的错误,则说明存储节点的数据库服务没有开启,这样最好重新执行第3、4、5点步骤的
命令!
 
总结:
如创建表时,未在创建表语句后添加ENGINE=NDB或ENGINE=NDBCLUSTER,则该表不会在群集server中同步。
管理节点、存储节点,也可以同在一台机器上,或两台msyql数据库server服务器,其中一台同时为管理节点与存储节点,而另一台仅为存储节点,这样的设计均是可以的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值