站长中国
设为首页 | 站长论坛

站长论坛 站长下载
您所在的位置: 站长中国 > 站长学院 > 数 据 库 > 其他相关 > 正文

MySQL数据库的集群配置一般过程
  2007年10月22日02:45:23  评论(0条) 字体:[ ]
相关热点: 一般 过程 配置 数据库 服务器 集群 管理 MySQL 节点

  

  一、介绍

  ========

  这篇文档旨在介绍如何安装配置基于2台服务器的MySQL集群。并且实现任意一台服务器出现问题或宕机时MySQL依然能够继续运行。

  注意!

  虽然这是基于2台服务器的MySQL集群,但也必须有额外的第三台服务器作为管理节点,但这台服务器可以在集群启动完成后关闭。同时需要注意的是并不推荐在集群启动完成后关闭作为管理节点的服务器。尽管理论上可以建立基于只有2台服务器的MySQL集群,但是这样的架构,一旦一台服务器宕机之后集群就无法继续正常工作了,这样也就失去了集群的意义了。出于这个原因,就需要有第三台服务器作为管理节点运行。

  另外,可能很多朋友都没有3台服务器的实际环境,可以考虑在VMWare或其他虚拟机中进行实验。

  下面假设这3台服务的情况:

  Server1: mysql1.vmtest.net 192.168.0.1

  Server2: mysql2.vmtest.net 192.168.0.2

  Server3: mysql3.vmtest.net 192.168.0.3

  Servers1和Server2作为实际配置MySQL集群的服务器。对于作为管理节点的Server3则要求较低,只需对Server3的系统进行很小的调整并且无需安装MySQL,Server3可以使用一台配置较低的计算机并且可以在Server3同时运行其他服务。

  二、在Server1和Server2上安装MySQL

  =================================

  从[url]http://www.mysql.com[/url]上下载mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz

  注意:必须是max版本的MySQL,Standard版本不支持集群部署!

  以下步骤需要在Server1和Server2上各做一次

  # mv mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz /usr/local/

  # cd /usr/local/

  # groupadd mysql

  # useradd -g mysql mysql

  # tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz

  # rm -f mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz

  # mv mysql-max-4.1.9-pc-linux-gnu-i686 mysql

  # cd mysql

  # scripts/mysql_install_db --user=mysql

  # chown -R root

  .

  # chown -R mysql data

  # chgrp -R mysql .

  # cp support-files/mysql.server /etc/rc.d/init.d/mysqld

  # chmod +x /etc/rc.d/init.d/mysqld

  # chkconfig --add mysqld

  此时不要启动MySQL!三、安装并配置管理节点服务器(Server3)

  =====================================

  作为管理节点服务器,Server3需要ndb_mgm和ndb_mgmd两个文件:

  

  从[url]http://www.mysql.com[/url]上下载mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz

  # mkdir /usr/src/mysql-mgm

  # cd /usr/src/mysql-mgm

  # tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz

  # rm mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz

  # cd mysql-max-4.1.9-pc-linux-gnu-i686

  # mv bin/ndb_mgm .

  # mv bin/ndb_mgmd .

  # chmod +x ndb_mg*

  # mv ndb_mg* /usr/bin/

  # cd

  # rm -rf /usr/src/mysql-mgm

  现在开始为这台管理节点服务器建立配置文件:

  # mkdir /var/lib/mysql-cluster

  # cd /var/lib/mysql-cluster

  # vi config.ini

  在config.ini中添加如下内容:

  [NDBD DEFAULT]

  NoOfReplicas=2

  [MYSQLD DEFAULT]

  [NDB_MGMD DEFAULT]

  [TCP DEFAULT]

  # Managment Server

  [NDB_MGMD]HostName=192.168.0.3 #管理节点服务器Server3的IP地址

  # Storage Engines

  [NDBD]

  HostName=192.168.0.1 #MySQL集群Server1的IP地址

  DataDir= /var/lib/mysql-cluster

  [NDBD]

  HostName=192.168.0.2 #MySQL集群Server2的IP地址

  DataDir=/var/lib/mysql-cluster

  # 以下2个[MYSQLD]可以填写Server1和Server2的主机名。

  # 但为了能够更快的更换集群中的服务器,推荐留空,否则更换服务器后必须对这个配置进行更改。

  [MYSQLD]

  [MYSQLD]

  保存退出后,启动管理节点服务器Server3:

  # ndb_mgmd

  启动管理节点后应该注意,这只是管理节点服务,并不是管理终端。因而你看不到任何关于启动后的输出信息。

  四、配置集群服务器并启动MySQL

  =============================

  在Server1和Server2中都需要进行如下改动:

  # vi /etc/my.cnf

  [mysqld]

  ndbclusterndb-connectstring=192.168.0.3 #Server3的IP地址

  [mysql_cluster]

  ndb-connectstring=192.168.0.3 #Server3的IP地址

  保存退出后,建立数据目录并启动MySQL:

  # mkdir /var/lib/mysql-cluster

  # cd /var/lib/mysql-cluster

  # /usr/local/mysql/bin/ndbd --initial

  # /etc/rc.d/init.d/mysqld start

  可以把/usr/local/mysql/bin/ndbd加到/etc/rc.local中实现开机启动。

  注意:只有在第一次启动ndbd时或者对Server3的config.ini进行改动后才需要使用--initial参数!

  

  五、检查工作状态

  ================

  回到管理节点服务器Server3上,并启动管理终端:

  # /usr/bin/ndb_mgm

  键入show命令查看当前工作状态:(下面是一个状态输出示例)

  [root@mysql3 root]# /usr/bin/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.0.1

  (Version: 4.1.9, Nodegroup: 0, Master)

  id=3

  @192.168.0.2

  (Version: 4.1.9, Nodegroup: 0)

  [ndb_mgmd(MGM)] 1 node(s)

  id=1

  @192.168.0.3

  (Version: 4.1.9)

  [mysqld(API)]

  2 node(s)

  id=4

  (Version: 4.1.9)

  id=5

  (Version: 4.1.9)

  ndb_mgm>如果上面没有问题,现在开始测试MySQL:

  注意,这篇文档对于MySQL并没有设置root密码,推荐你自己设置Server1和Server2的MySQL root密码。

  在Server1中:

  # /usr/local/mysql/bin/mysql -u root -p

  > use test;

  > CREATE TABLE ctest (i INT) ENGINE=NDBCLUSTER;

  > INSERT INTO ctest () VALUES (1);

  > SELECT * FROM ctest;

  应该可以看到1 row returned信息(返回数值1)。

  如果上述正常,则换到Server2上重复上面的测试,观察效果。如果成功,则在Server2中执行INSERT再换回到Server1观察是否工作正常。

  如果都没有问题,那么恭喜成功!

  六、破坏性测试

  ==============

  将Server1或Server2的网线拔掉,观察另外一台集群服务器工作是否正常(可以使用SELECT查询测试)。测试完毕后,重新插入网线即可。

  如果你接触不到物理服务器,也就是说不能拔掉网线,那也可以这样测试:

  在Server1或Server2上:

  # ps aux | grep ndbd

  将会看到所有ndbd进程信息:

  root

  5578

  0.0

  0.3

  6220 1964 ?

  S

  03:14

  0:00 ndbd

  root

  5579

  0.0 20.4 492072 102828 ?

  R

  03:14

  0:04 ndbd

  root

  23532

  0.0

  0.1

  3680

  684 pts/1

  S

  07:59

  0:00 grep ndbd

  然后杀掉一个ndbd进程以达到破坏MySQL集群服务器的目的:

  # kill -9 5578 5579

  之后在另一台集群服务器上使用SELECT查询测试。并且在管理节点服务器的管理终端中执行show命令会看到被破坏的那台服务器的状态。

  

  测试完成后,只需要重新启动被破坏服务器的ndbd进程即可:

  # ndbd

  注意!前面说过了,此时是不用加--inital参数的!

  至此,MySQL集群就配置完成了

责任编辑:

收藏本文 打印 打印本文  推荐本文 告诉好友 投稿 投稿邮箱

站长排行

学院

新闻

专栏

盈利

[揭密网络黄链]中国留学生买凶专破日本
JSP语法(6)
超强弹出窗口代码,什么都挡不住
FLASH视觉特效实例之地震效果
贴吧发帖机使用教程(绝对原创)
关于数据分页(转自www.codeproject.co
ASP实现文件直接下载
Photoshop制作光感超酷效果水晶球
 遍历ASP.NET页面控件
永远的后门[经典]+查不出的后门
淘宝网卖家公然叫卖“艳照门”照片集
驳《百度Hi面世对腾讯有利》
Google绿色专家质疑黑色背景网页节省资
国内各IT企业办公环境揭秘(多图)
阿里妈妈广告卖主全攻略
站长创业源动力 主流站长站赏析
推荐阅读:80年小子的创业道理
Discuz!6.0猛将出击 最强论坛程序酷炫
我的网络,我的团队:专访李文明
百度新闻频道改版十天 流量止跌反弹翻
ECSHOP模板制作参考文档
悬挂阿里妈妈会否被百度惩罚
阿里妈妈是否是中小站长的救世主?
最强网店ECShop发新版 众多酷炫功能给
ECSHOP模板下载
土豆网,优酷网,爆米花等视频网站采集
DedeCms模板安装/制作概述
网上商店系统巅峰对决 ECShop vs ShopE
艰难的走在创业的路上 第一天
编程中国全站采集规则
性福联盟 一个不尊重站长的联盟
大脚:日赚100元—揭露最新firefox欺骗
大脚:垃圾站超级赚钱法之二—突破“站
大脚:垃圾站超级赚钱法之——前言
迅雷联盟、快车联盟收入对比
经理人必看的十个管理网站
Google Adsense的秘密 第二版
西联汇款兑付城市查询
不用SEO取得成功的10个步骤
关于做GOOGLE的五条经验
站长学院  网页设计 建站教程 图形图象 网络编程

Photoshop CS3
Photoshop CS3
不用Photoshop
不用Photoshop

DIV+CSS的开发方式 听听另外的
虚拟主机建站动易里快速生成的
VBScript特效代码 满屏幕乱跑
牛气!一个菜鸟站长的超强网站
创建、维护一个个人博客的“投
让网站流量稳步飙升的秘籍
网站推广的基本思想

新闻线索

如果你有站长界人事变动、重组并购、变革技术出现,以及产品投诉等重要新闻线索,请告诉我们,我们会给予特别关注。
0631-3653338
站长中国编辑部
站长中国24小时新闻热线: 13256307008