您的位置:首页 > 数据库 > MySQL

Mysql 集群配置详解

2009-10-17 20:32 603 查看
环境:

Vmware workstation6.5

操作系统:Centos 5.2 (2台)

第一台:

主机名:mysql1 IP: 192.168.1.30

第二台

主机名:mysql2 IP: 192.168.1.32

软件下载安装

下载软件地址:http://dev.mysql.com/downloads/select.php?id=14

选择操作系统是RedHat Enterprise 版本

如下:

MySQL-Cluster-gpl-client-7.0.8a-0.rhel5.i386.rpm

MySQL-Cluster-gpl-debuginfo-7.0.8a-0.rhel5.i386.rpm

MySQL-Cluster-gpl-devel-7.0.8a-0.rhel5.i386.rpm

MySQL-Cluster-gpl-embedded-7.0.8a-0.rhel5.i386.rpm

MySQL-Cluster-gpl-extra-7.0.8a-0.rhel5.i386.rpm

MySQL-Cluster-gpl-management-7.0.8a-0.rhel5.i386.rpm

MySQL-Cluster-gpl-server-7.0.8a-0.rhel5.i386.rpm

MySQL-Cluster-gpl-shared-7.0.8a-0.rhel5.i386.rpm

MySQL-Cluster-gpl-storage-7.0.8a-0.rhel5.i386.rpm

MySQL-Cluster-gpl-test-7.0.8a-0.rhel5.i386.rpm

MySQL-Cluster-gpl-tools-7.0.8a-0.rhel5.i386.rpm

将软件包上传到服务器

Rpm –ivh *.rpm

具体配置 在两台机器上做(同样的配置文件)

1、创建配置文件目录:( mysql1 mysql2)

#mkdir /var/lib/mysql-cluster –p

在/var/lib/mysql-cluster 下创建集群配置文件config.ini

编辑,添加如下内容:

[NDBD DEFAULT]

NoOfReplicas=2

DataMemory=128M

IndexMemory=64M

MaxNoOfConcurrentOperations=2000000

[MYSQLD DEFAULT]

[NDB_MGMD DEFAULT]

DataDir= /var/lib/mysql-cluster

[TCP DEFAULT]

# Section for the cluster management node

[NDB_MGMD]

# IP address of the management node (this system)

ID=1

HostName= 192.168.1.30

[NDB_MGMD]

# IP address of the management node (this system)

ID=2

HostName= 192.168.1.32

# Section for the storage nodes

[NDBD]

ID=3

# IP address of the first storage node

HostName=192.168.1.30

[NDBD]

ID=4

# IP address of the second storage node

HostName=192.168.1.32

# one [MYSQLD] per storage node

[MYSQLD]

[MYSQLD]

[MYSQLD]

[MYSQLD]

[MYSQLD]

[MYSQLD]

[MYSQLD]

2、创建API文件( mysql1 mysql2)

编辑/etc/my.cnf 添加如下内容:

[mysqld]

default-storage-engine=ndbcluster

log=queryLog

log-slow-queries=slowquerylog

max_connections = 1000

#NDBCLUSTER

ndbcluster

ndb-connectstring = 192.168.1.30,192.168.1.32

[ndb_mgm]

connect-string = 192.168.1.30,192.168.1.32

[ndbd]

connect-string = 192.168.1.30,192.168.1.32

[mysql_cluster]

ndb-connectstring= 192.168.1.30,192.168.1.32

[ndb_mgmd]

config-file=/var/lib/mysql-cluster/config.ini

集群的启动:

启动管理节点

在mysql1 上 启动管理节点

# ndb_mgmd –ndb_nodeid=1

在mysql2上启动管理节点

# ndb_mgmd –ndb_nodeid=2

第一次会有警告:

Cluster configuration warning:

arbitrator with id 1 and db node with id 3 on same host 192.168.1.30

arbitrator with id 2 and db node with id 4 on same host 192.168.1.32

Running arbitrator on the same host as a database node may

cause complete cluster shutdown in case of host failure.

是说:节点1和3,2和4的arbitrator一样,可能引起整个集群失败 这个无所谓,继续

启动NDB

在mysql1 上运行:

# ndbd –nodeid=3 –initial

在mysql2上运行:

# ndbd –nodeid=4 –iniitial

注意:在第一次启动ndb或者修改了config.ini 文件才加上-initiail 参数

查看状态:

在任意一台机器上查看:

[root@mysql1 ~]# ndb_mgm

-- NDB Cluster -- Management Client --

ndb_mgm> show

Connected to Management Server at: 192.168.1.30:1186

Cluster Configuration

---------------------

[ndbd(NDB)] 2 node(s)

id=5 @192.168.1.30 (mysql-5.1.37 ndb-7.0.8, Nodegroup: 0, Master)

id=6 @192.168.1.32 (mysql-5.1.37 ndb-7.0.8, Nodegroup: 0)

[ndb_mgmd(MGM)] 2 node(s)

id=1 @192.168.1.30 (mysql-5.1.37 ndb-7.0.8)

id=2 @192.168.1.32 (mysql-5.1.37 ndb-7.0.8)

[mysqld(API)] 9 node(s)

id=7 (not connected, accepting connect from any host)

id=8 (not connected, accepting connect from any host)

id=9 (not connected, accepting connect from any host)

id=10 (not connected, accepting connect from any host)

id=11 (not connected, accepting connect from any host)

id=12 (not connected, accepting connect from any host)

id=13 (not connected, accepting connect from any host)

id=14 (not connected, accepting connect from any host)

id=15 (not connected, accepting connect from any host)

看到上面的信息就正常了

启动API

在mysql1中:

#mysqld_safe –ndb_nodeid=5 –user=mysql &

在mysql2 中:

#mysqld_safe –ndb_nodeid=6 –user=mysql &

再次查看:

[root@mysql1 ~]# ndb_mgm

-- NDB Cluster -- Management Client --

ndb_mgm> show

Connected to Management Server at: 192.168.1.30:1186

Cluster Configuration

---------------------

[ndbd(NDB)] 2 node(s)

id=5 @192.168.1.30 (mysql-5.1.37 ndb-7.0.8, Nodegroup: 0, Master)

id=6 @192.168.1.32 (mysql-5.1.37 ndb-7.0.8, Nodegroup: 0)

[ndb_mgmd(MGM)] 2 node(s)

id=1 @192.168.1.30 (mysql-5.1.37 ndb-7.0.8)

id=2 @192.168.1.32 (mysql-5.1.37 ndb-7.0.8)

[mysqld(API)] 9 node(s)

id=7 @192.168.1.30 (mysql-5.1.37 ndb-7.0.8)

id=8 @192.168.1.32 (mysql-5.1.37 ndb-7.0.8)

id=9 (not connected, accepting connect from any host)

id=10 (not connected, accepting connect from any host)

id=11 (not connected, accepting connect from any host)

id=12 (not connected, accepting connect from any host)

id=13 (not connected, accepting connect from any host)

id=14 (not connected, accepting connect from any host)

id=15 (not connected, accepting connect from any host)

显示两个API节点 正常

集群测试

在mysql1中创建库

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

mysql >create database love;

mysql > use love;

mysql > create table love (i INT)

mysql > insert into love () VALUES (1);

在mysql2上查询:

mysql > select * from love;

mysql> show tables;

+----------------+

| Tables_in_love |

+----------------+

| love |

+----------------+

1 row in set (0.03 sec)

mysql> select * from love;

+------+

| i |

+------+

| 1 |

+------+

1 row in set (0.08 sec)

已经同步:

下面我将mysql1 停掉网卡:看一下状态:

[root@mysql2 ~]# ndb_mgm

-- NDB Cluster -- Management Client --

ndb_mgm> show

Connected to Management Server at: 192.168.1.32:1186

Cluster Configuration

---------------------

[ndbd(NDB)] 2 node(s)

id=5 (not connected, accepting connect from 192.168.1.30)

id=6 @192.168.1.32 (mysql-5.1.37 ndb-7.0.8, Nodegroup: 0, Master)

[ndb_mgmd(MGM)] 2 node(s)

id=1 (not connected, accepting connect from 192.168.1.30)

id=2 @192.168.1.32 (mysql-5.1.37 ndb-7.0.8)

[mysqld(API)] 9 node(s)

id=7 (not connected, accepting connect from any host)

id=8 (not connected, accepting connect from any host)

id=9 (not connected, accepting connect from any host)

id=10 (not connected, accepting connect from any host)

id=11 (not connected, accepting connect from any host)

id=12 (not connected, accepting connect from any host)

id=13 (not connected, accepting connect from any host)

id=14 (not connected, accepting connect from any host)

id=15 (not connected, accepting connect from any host)

mysql2 对外提供服务成为主服务器

看能否查询:

mysql> select * from love;

ERROR 1296 (HY000): Got error 157 'Unknown error code' from NDBCLUSTER

mysql> select * from love;

ERROR 1296 (HY000): Got error 157 'Unknown error code' from NDBCLUSTER

暂时不能查询,出现错误:

稍等片刻再次查询,没有错误,这段时间是故障转移,时间不是很长

具体时间没计算

在mysql2 上创建 表:

mysql > create table love1 (i INT)

mysql > insert into love1 () VALUES (1);

接下来将mysql1的网卡启动

在mysql1上查询数据:

[root@mysql1 ~]# mysql -u root -p

Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 4

Server version: 5.1.37-ndb-7.0.8a-cluster-gpl-log MySQL Cluster Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use love;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> show tables ;

+----------------+

| Tables_in_love |

+----------------+

| love |

| love1 |

+----------------+

2 rows in set (0.01 sec)

mysql> select * from love1;

+------+

| i |

+------+

| 1 |

+------+

1 row in set (0.00 sec)

可以看到在mysql2上创建的表love2

正常运行但是mysql1成为主服务器,这个怎么改变过来,还不清楚

The end !
本文出自 “影子骑士” 博客,请务必保留此出处http://andylhz2009.blog.51cto.com/728703/213666
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: