设为首页 加入收藏

TOP

利用keepalived构建高可用MySQL-HA(四)
2014-11-23 19:23:27 来源: 作者: 【 】 浏览:97
Tags:利用 keepalived 构建 可用 MySQL-HA
cn smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id MySQL-ha } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.200 } } virtual_server 192.168.1.200 3306 { delay_loop 2 lb_algo wrr lb_kind DR persistence_timeout 60 protocol TCP real_server 192.168.1.202 3306 { weight 3 notify_down /usr/local/MySQL/bin/MySQL.sh TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 3306 } }

编写检测服务down后所要执行的脚本

#vi /usr/local/MySQL/bin/MySQL.sh

#!/bin/sh

pkill keepalived

#chmod +x /usr/local/MySQL/bin/MySQL.sh



启动keepalived

#/usr/local/keepalived/sbin/keepalived –D

#ps -aux | grep keepalived

测试

停止MySQL服务,看keepalived健康检查程序是否会触发我们编写的脚本

三、测试

MySQL远程登录测试

我们找一台安装有MySQL客户端的windows,然后登录VIP,看是否能登录,在登录之两台MySQL服务器都要授权允许从远程登录

MySQL> grant all privileges on *.* to 'root'@'%' identified by '123456';

Query OK, 0 rows affected (0.00 sec)



MySQL> flush privileges;

Query OK, 0 rows affected (0.00 sec)

使用客户端登录VIP测试

C:\MySQL\bin>MySQL.exe -uroot -p123456 -h192.168.1.200 -P3306

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

Your MySQL connection id is 224

Server version: 5.0.89-log Source distribution



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



MySQL>

● keepalived故障转移测试

※在windows客户端一直去ping VIP,然后关闭192.168.1.201上的keepalived,正常情况下VIP就会切换到192.168.1.202上面去

※开启192.168.1.201上的keepalived,关闭192.168.1.202上的keepalived,看是否能自动切换,正常情况下VIP又会属于192.168.1.201

注:keepalived切换速度还是非常块的,整个切换过程只需1-3秒

● MySQL故障转移测试

※在192.168.1.201上关闭MySQL服务,看VIP是否会切换到192.168.1.202上

※开启192.168.1.201上的MySQL和keepalived,然后关闭192.168.1.202上的MySQL,看VIP是否会切换到192.168.1.201上

下面是用windows客户端连接的MySQL的VIP,在切换时我执行了一个MySQL查询命令,从执行show databases到显示出结果时间为3-5秒(大家可以看到上面有个错误提示,不过不用担心,因为我们的keepalived切换大概为3秒左右,这3秒左右VIP是谁都不属于的)

MySQL> show databases;

ERROR 2006 (HY000): MySQL server has gone away

No connection. Trying to reconnect...

Connection id: 592

Current database: *** NONE ***



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

| Database |

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

| information_schema |

| MySQL |

| test |

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

3 rows in set (9.01 sec)

后话:世间万事万物,都不具备绝对的完美,就像上面的MySQL-HA一样,keepalived只能做到对3306的健康检查,但是做不到比如像MySQL复制中的slave-SQL、slave-IO进程的检查。所以要想做到一些细致的健康检查,还得需要借助额外的监控工具,比如nagios,然后用nagios实现短信、邮件报警,从而能够有效地解决问题。

mysql> GRANT REPLICATION SLAVE ON *.*

-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';

如果你没有备份主服务器,这里是一个创建备份的快速程序。所有步骤都应该在主服务器主机上执行。

1. 发出该语句:

mysql> FLUSH TABLES WITH READ LOCK;

2. 仍然加锁时,执行该命令(或它的变体):

shell> tar zcf /tmp/backup.tar.gz /var/lib/mysql

3. 发出该语句并且确保记录了以后用到的输出:

mysql>SHOW MASTER STATUS;

4. 释放锁:

mysql> UNLOCK TABLES;

一个可选择的方法是,转储主服务器的SQL来代替前面步骤中的二进制复制。要这样做,你可以在主服务器上使用mysqldump --master-data,以后装载SQL转储到到你的从服务器。

首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇mysql语句汇总 下一篇mysql、sqlserver、oracle三种数..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: