linux下mysql 有双机_在Linux环境下配置mysql cluster双机集群

一、介绍

如何安装配置基于2台服务器的MySQL集群。并且实现任意一台服务器出现问题或宕机时MySql集群依然能够继续运行。加下后续的(keepalived+lvs+mysql cluster文档),可以实现Mysql双机的高可用及负载均衡。

安装环境及软件包:

vmware workstation 5.5.3

mysql-5.2.3-falcon-alpha.tar.gz

gentoo 2006.1

Server1: 192.168.1.111

Server2:   192.168.1.110

二、在Server1和Server2上安装MySQL

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

# mv mysql-5.2.3-falcon-alpha.tar.gz   /tmp/package

# cd /tmp/package

# groupadd mysql

# useradd -g mysql mysql

# tar -zxvf mysql-5.2.3-falcon-alpha.tar.gz

# rm -f mysql-5.2.3-falcon-alpha.tar.gz

# mv mysql-5.2.3-falcon-alpha mysql

# cd mysql

# ./configure --prefix=/usr --with-extra-charsets=complex --with-plugin-ndbcluster --with-plugin-partition --with-plugin-innobase

# make && make install

#ln -s /usr/libexec/ndbd /usr/bin

#ln -s /usr/libexec/ndb_mgmd /usr/bin

#ln -s /usr/libexec/ndb_cpcd /usr/bin

#ln -s /usr/libexec/mysqld /usr/bin

#ln -s /usr/libexec/mysqlmanager /usr/bin

#mysql_install_db --user=mysql

三、安装并配置节点

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

1.配置管理节点配置文件:

# mkdir /var/lib/mysql-cluster

# cd /var/lib/mysql-cluster

# vi config.ini

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

[ndbd default]

NoOfReplicas= 2

MaxNoOfConcurrentOperations= 10000

DataMemory= 80M

IndexMemory= 24M

TimeBetweenWatchDogCheck= 30000

DataDir= /var/lib/mysql-cluster

MaxNoOfOrderedIndexes= 512

StartPartialTimeout=100

StartPartitionedTimeout=100

ArbitrationTimeout=5000

TransactionDeadlockDetectionTimeout=5000

HeartbeatIntervalDbDb=5000

StopOnError=0

[ndb_mgmd default]

DataDir= /var/lib/mysql-cluster

[ndb_mgmd]

Id=1

HostName= 192.168.1.111

[ndb_mgmd]

Id=2

HostName= 192.168.1.110

[ndbd]

Id= 3

HostName= 192.168.1.111

[ndbd]

Id= 4

HostName= 192.168.1.110

[mysqld]

ArbitrationRank=2 (非常重要,全靠有它,才可以形成仲裁竞争,从而当另一个机子当了时,此机还可以有知道partion完整的节点)

[mysqld]

ArbitrationRank=2

[tcp default]

PortNumber= 63132

2.配置通用my.cnf文件,mysqld及ndbd,ndb_mgmd均使用此文件.

# vi /etc/my.cnf

在my.cnf中添加如下内容:

[mysqld]

default-storage-engine=ndbcluster   避免在sql语句中还要加入ENGINE=NDBCLUSTER。

ndbcluster

ndb-connectstring=192.168.1.111,192.168.1.110

[ndbd]

connect-string=192.168.1.111,192.168.1.110

[ndb_mgm]

connect-string=192.168.1.111,192.168.1.110

[ndb_mgmd]

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

[mysql_cluster]

ndb-connectstring= 192.168.1.111,192.168.1.110

保存退出后,启动管理节点Server1为:

# ndb_mgmd --ndb_nodeid=1

启动管理节点Server2为:

# ndb_mgmd --ndb_nodeid=2

注:在启动时有一个警告提示

Cluster configuration warning:

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

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

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一样,可能引起整个集群失败。(可以不用放在心上)

四、初始化集群

在Server1中

# ndbd --nodeid=3 --initial

在Server2中

# ndbd --nodeid=4 --iniitial

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

五、检查工作状态

在任意一台机子上启动管理终端:

# ndb_mgm

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

-- NDB Cluster -- Management Client --

ndb_mgm> show

Connected to Management Server at: 192.168.1.111:1186

Cluster Configuration

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

[ndbd(NDB)]      2 node(s)

id=3     @192.168.1.111   (Version: 5.2.3, Nodegroup: 0, Master)

id=4     @192.168.1.110   (Version: 5.2.3, Nodegroup: 0)

[ndb_mgmd(MGM)] 2 node(s)

id=1     @192.168.1.111   (Version: 5.2.3)

id=2     @192.168.1.110   (Version: 5.2.3)

[mysqld(API)]    2 node(s)

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

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

ndb_mgm>

如果上面没有问题,现在开始加入mysqld(API):

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

在Server1 中:

#mysqld_safe --ndb_nodeid=5 --user=mysql &

在Server2 中:

#mysqld_safe --ndb_nodeid=6 --user=mysql &

# ndb_mgm -e show

信息如下:

Connected to Management Server at: 192.168.1.111:1186

Cluster Configuration

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

[ndbd(NDB)]      2 node(s)

id=3     @192.168.1.111   (Version: 5.2.3, Nodegroup: 0, Master)

id=4     @192.168.1.110   (Version: 5.2.3, Nodegroup: 0)

[ndb_mgmd(MGM)] 2 node(s)

id=1     @192.168.1.111   (Version: 5.2.3)

id=2     @192.168.1.110   (Version: 5.2.3)

[mysqld(API)]    4 node(s)

id=5     @192.168.1.111   (Version: 5.2.3)

id=6     @192.168.1.110   (Version: 5.2.3)

ok,可以测试了:

在Server1 中

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

>create database aa;

> use aa;

> CREATE TABLE ctest (i INT) ;

> INSERT INTO ctest () VALUES (1);

> SELECT * FROM ctest;

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

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

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

六、破坏性测试

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

注意:在未对集群做任何读写操作前,此测试结果无效,因为,集群初始后只在/var/lib/mysql-cluster/下建了几个空目录,还没有正常协同工作,会出现整个所有存储(ndbd)节点关闭.

也可以这样测试:在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 --ndb_nodeid=此存储节点的id

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值