当前位置:文档之家› mysql集群架构说明与配置实例-详细过程

mysql集群架构说明与配置实例-详细过程

Mysql集群架构文档MySQL Cluster 是MySQL适合于分布式计算环境的高实用、高冗余版本。

它采用了NDB Cluster 存储引擎,允许在1个Cluster 中运行多个MySQL服务器。

在MyQL 5.0及以上的二进制版本中、以及与最新的Linux版本兼容的RPM中提供了该存储引擎。

(注意,要想获得MySQL Cluster 的功能,必须安装mysql-server 和mysql-max RPM)。

目前能够运行MySQL Cluster 的操作系统有Linux、Mac OS X和Solaris(一些用户通报成功地在FreeBSD上运行了MySQL Cluster ,但MySQL AB公司尚未正式支持该特性)。

一、MySQL Cluster概述MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的Cluster 。

通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。

此外,由于每个组件有自己的内存和磁盘,不存在单点故障。

MySQL Cluster 由一组计算机构成,每台计算机上均运行着多种进程,包括MySQL服务器,NDB Cluster 的数据节点,管理服务器,以及(可能)专门的数据访问程序。

关于Cluster 中这些组件的关系,请参见下图:所有的这些节点构成一个完成的MySQL集群体系。

数据保存在“NDB存储服务器”的存储引擎中,表(结构)则保存在“MySQL服务器”中。

应用程序通过“MySQL服务器”访问这些数据表,集群管理服务器通过管理工具(ndb_mgmd)来管理“N DB存储服务器”。

通过将MySQL Cluster 引入开放源码世界,MySQL为所有需要它的人员提供了具有高可用性、高性能和可缩放性的Cluster 数据管理。

二.安装环境1.Linux操作系统版本:CentonOS 4.72.Mysql数据库版本:mysql-max-5.0.24-linux-i686.tar.gz共三台机器安装了CentonOS4.7版本,首先保证把系统中没有一个包带有mysql的,有的话就执行以下命令把mysql安装包删除:rpm –e ;3.三台机器的ip如下划分:PC1 IP:10.20.25.114(sql和存储公用)PC2 IP:10.20.25.115(sql和存储公用)PC3 IP:10.20.25.116(集群管理节点)三.装操作步骤1. 在PC1、PC2上需要执行如下的命令,请按照顺序来执行:mv mysql-max-5.0.24-linux-i686.tar.gz /usr/local/cd /usr/local/tar zxvf mysql-max-5.0.24-linux-i686.tar.gzrm mysql-max-5.0.24-linux-i686.tar.gzmv mysql-max-5.0.24-linux-i686 mysqlgroupadd mysqluseradd -g mysql mysqlcd mysqlscripts/mysql_install_db --user=mysqlchown -R mysql:mysql .cp /usr/local/mysql/support-files/f /etc/fvi /etc/f找到myisam_sort_buffer_size = 8M这一行,然后在后面添加如下的两行:ndbclusterndb-connectstring=192.168.10.198然后到f的最后一行增加以下六行:[ndbd]connect-string=192.168.10.198[ndb_mgm]connect-string=192.168.10.198[ndb_mgmd]config-file=/var/lib/mysql-cluster修改完毕后,保存推出!mkdir /var/lib/mysql-cluster2.在PC3上执行如下的命令,请按照顺序执行:mv mysql-max-5.0.24-linux-i686.tar.gz /usr/local/cd /usr/local/tar zxvf mysql-max-5.0.24-linux-i686.tar.gzrm mysql-max-5.0.24-linux-i686.tar.gzmv mysql-max-5.0.24-linux-i686 mysqlgroupadd mysqluseradd -g mysql mysqlcd mysqlscripts/mysql_install_db --user=mysqlchown -R mysql:mysql .cp /usr/local/mysql/support-files/f /etc/fvi /etc/f找到myisam_sort_buffer_size = 8M这一行,然后在后面添加如下的两行:ndbclusterndb-connectstring=10.20.25.116然后到f的最后一行增加以下六行:[ndbd]connect-string=10.20.25.116[ndb_mgm]connect-string=10.20.25.116[ndb_mgmd]config-file=/var/lib/mysql-cluster修改完毕后,保存推出!mkdir /var/lib/mysql-clustercd /var/lib/mysql-clustertouch config.inivi config.ini 键入如下信息:(半个字符都不能错)[NDBD DEFAULT]NoOfReplicas= 2DataDir= /var/lib/mysql-cluster[NDB_MGMD]Hostname= 10.20.25.116DataDir= /var/lib/mysql-cluster[NDBD]HostName= 10.20.25.115[NDBD]HostName=10.20.25.114[MYSQLD][MYSQLD][MYSQLD]保存退出!3.到此为止整个的配置步骤算是完成,下面需要设置一些快捷命令:在PC1、PC2上需要输入以下命令:cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld chmod +x /etc/rc.d/init.d/mysqldchkconfig --add mysqldln -s /usr/local/mysql/bin/ndbd /usr/bin/ndbdvi /etc/rc.local添加一行ndbd后保存退出在PC3上需要输入以下命令:cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld chmod +x /etc/rc.d/init.d/mysqldchkconfig --add mysqldln -s /usr/local/mysql/bin/ndb_mgm /usr/bin/ndb_mgmln -s /usr/local/mysql/bin/ndb_mgmd /usr/bin/ndb_mgmdvi /etc/rc.local后添加如下一行/usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini保存退出!四.启动服务PC3需要执行的命令如下:/usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.iniservice mysqld startPC1、PC2需要执行的命令如下:/usr/local/mysql/bin/ndbd --initial 注:只在第一次启动ndbd时使用--initial参数service mysqld start五.测试与检查PC3需要执行的命令如下:ndb_mgm执行如下命令以及显示如下信息则说明工作正常![root@lzj local]# ndb_mgm-- NDB Cluster -- Management Client --ndb_mgm> showConnected to Management Server at: 10.20.25.116:1186Cluster Configuration---------------------[ndbd(NDB)] 2 node(s)id=2 @10.20.25.115 (Version: 5.0.24, Nodegroup: 0, Master)id=3 @10.20.25.114 (Version: 5.0.24, Nodegroup: 0)[ndb_mgmd(MGM)] 1 node(s)id=1 @10.20.25.116 (Version: 5.0.24)[mysqld(API)] 3 node(s)id=4 @10.20.25.115 (Version: 5.0.24)id=5 @10.20.25.114 (Version: 5.0.24)id=6 @10.20.25.116 (Version: 5.0.24)ndb_mgm>测试的时候则需要创建表,看是否三台机器的mysql是否能够同步。

如果上面没有问题,现在开始测试MySQL:注意,这篇文档对于MySQL并没有设置root密码,推荐你自己设置Server1和Server2的MySQL root密码。

与没有使用Cluster的MySQL相比,在MySQL Cluster内操作数据的方式没有太大的区别。

执行这类操作时应记住两点:表必须用ENGINE=NDB或ENGINE=NDBCLUSTER选项创建,或用ALTER TABLE选项更改,以使用NDB Cluster存储引擎在Cluster内复制它们。

如果使用mysqldump的输出从已有数据库导入表,可在文本编辑器中打开SQL脚本,并将该选项添加到任何表创建语句,或用这类选项之一替换任何已有的ENGINE(或TYPE)选项。

另外还请记住,每个NDB表必须有一个主键。

如果在创建表时用户未定义主键,NDB Cluster 存储引擎将自动生成隐含的主键。

(注释:该隐含键也将占用空间,就像任何其他的表索引一样。

由于没有足够的内存来容纳这些自动创建的键,出现问题并不罕见)。

在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)。

相关主题