mysql 双机高可用_MySQL CLUSTER(集群)系列 (1.双机实现高可用)

一、介绍

这篇文档旨在介绍如何安装配置基于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 --ndb_nodeid=3 --initial

在Server2中

# ndbd --ndb_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双机集群就配置完成了!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值