2010年(37)
分类: Mysql/postgreSQL
2010-06-08 18:09:58
Mysql Cluster 的配置
1:环境
Mysql-
Linux:CentOS4.7
管理节点(1个):192.168.76.131
SQL节点(2个):192.168.76.132
192.168.76.133
数据节点(2个):192.168.76.132 datadir=/db/mysql
192.168.76.133 datadir=/db/mysql
2:初始化安装
Linux 安装选:开发工具包等
Mysql 安装
#groupadd
mysql
#useradd -g mysql mysql
#tar zxvf mysql-
#cd mysql-5.1.34
#./configure --prefix=/usr/local/mysql --localstatedir=/db/mysql
--sysconfdir=/etc --without-debug --enable-assembler
--enable-thread-safe-client --enable-profiling --with-mysqld-ldflags=-all-static
--with-client-ldflags=-all-static --with-charset=utf8
--with-collation=utf8_general_ci --with-extra-charsets=utf8,gbk --with-pthread –with-plugins=ndbcluster
--with-mysqld-user=mysql --without-embedded-server
--with-unix-socket-path=/usr/local/mysql/sock/mysql.sock
#make && make install
# cp
support-files/my-huge.cnf /etc/my.cnf //huge.cnf 高性能模板
#vi /etc/my.cnf 添加如下值
datadir = /db/mysql
skip-name-resolv
table-cache = 4096
#mkdir -p /db/mysql
#chown mysql.mysql /db/mysql -R
#./scripts/mysql_install_db --user=mysql
#cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
#chmod +x /etc/rc.d/init.d/mysqld
#chkconfig --level 235 mysqld on
#chown -R root.mysql /usr/local/mysql
//设置环境变量
在
/etc/profile添加一行就
,在运行mysql的时候就不用输入很长的路经了
export PATH=$PATH:/usr/local/mysql/bin
#service mysqld start
#mysqladmin -u root password YourPASSWD
3:Mysql Cluster的配置
前提:mysql在编译安装的时候一定要加参数–with-plugins=ndbcluster
管理节点的配置
管理节点IP:192.168.76.131
#mkdir
/db/mysql-cluster
#cd
/db/mysql-cluster
#touch
config.ini
编辑配置文件config.ini 具体内容如下:
[NDBD
DEFAULT]
NoOfReplicas=1 //每个数据节点的镜像数量
DataMemory=
IndexMemory=
[TCP
DEFAULT]
portnumber=2202 //数据节点的默认连接端口
[NDB_MGMD] //管理节点
id=1
hostname=192.168.76.131 //管理节点的IP
datadir=/db/mysql-cluster //管理节点的数据目录
[NDBD] //数据节点
id=2
hostname=192.168.76.132
datadir=/db/mysql
[NDBD]
id=3
hostname=192.168.76.133
datadir=/db/mysql
[MYSQLD] //SQL节点
hostname=192.168.76.132
[MYSQLD]
hostname=192.168.76.133
[MYSQLD] //表示任意一个IP都可以进行访问
4:SQL节点和数据节点的配置
SQL节点和数据节点的IP:192.168.76.132 192.168.76.133
SQL节点和数据节点的配置非常简单,只需要在对Mysql的配置文件(my.cnf)中增加如下内容
[mysqld]下
ndbcluster
ndb-connectstring = 192.168.76.131
以及新加
[mysql_cluster]
ndb-connectstring = 192.168.76.131
5:开始使用Cluster
Cluster的启动
管理节点的启动
#/usr/local/mysql/libexec/ndb_mgmd
-f /db/mysql-cluster/config.ini
数据节点的启动
#/usr/local/mysql/libexec/ndbd
--initial --ndb-connectstring=192.168.76.131:1186
然后在依次启动mysql 管理节点-SQL节点-数据节点
全部启动成功后,用ndb-mgm工具的show命令查看群集状态
[root@node1 mysql]# ndb_mgm
-- NDB Cluster -- Management
Client --
ndb_mgm> show
Connected to Management Server at:
192.168.76.131:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.76.132 (Version:
id=3 @192.168.76.133 (Version:
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.76.131 (Version:
[mysqld(API)] 3 node(s)
id=4 @192.168.76.132 (Version:
id=5 @192.168.76.133 (Version:
id=6 (not connected, accepting
connect from any host)
ndb_mgm>
6:Cluster的测试
启动后,下面测试一下Cluster的功能,如果要用Cluster,则表的存储引擎必须是NDB,其他类型的存储引擎的数据将不会保存到数据节点中,对于Cluster的一个重要功能就是防止单点故障
NDB存储引擎测试
在任意一个SQL节点(192.168.76.132)的test库中创建表test,设置存储引擎为NDB,并插入2条数据
Myqsl>create table test(id int)
engine=ndb;
Mysql>insert into test
values(1);
Mysql>insert into test
values(2);
然后在另外一个SQL节点(192.168.76.133),查询test库中的test表,可以看到两边数据一致
接着在SQL节点(192.168.76.132)上将test表的引擎改为Myisam
Mysql>alter table test
engine=myisam;
现在去SQL节点(192.168.76.133),查询test库中的test表,发现会提示报错,而且test表不存在
改回成ndb后,又恢复正常了
单点故障测试