高可用性之Keepalived+Mysql

MySQL高可用性之Keepalived+Mysql(双主热备) 2014-02-23 11:00:07
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。 http://lizhenliang.blog.51cto.com/7876557/1362313

环境描述:

OS:CentOS6.5_X64

MASTER:192.168.0.202

BACKUP:192.168.0.203

VIP:192.168.0.204

1、配置两台Mysql主主同步

1
2
3
4
5
6
7
8
9
10
11
12
[root@master ~] # yum install mysql-server mysql -y
[root@master ~] # service mysqld start
[root@master ~] # mysqladmin -u root password 123.com
[root@master ~] # vi /etc/my.cnf  #开启二进制日志,设置id
[mysqld]
server- id  = 1                     #backup这台设置2
log-bin = mysql-bin
binlog-ignore-db = mysql,information_schema        #忽略写入binlog日志的库
auto-increment-increment = 2              #字段变化增量值
auto-increment-offset = 1               #初始字段ID为1
slave-skip-errors = all                        #忽略所有复制产生的错误     
[root@master ~] # service mysqld restart

#先查看下log bin日志和pos值位置

wKiom1MJYSngwysqAADkFn9zcK8686.jpg

master配置如下:

1
2
3
4
5
6
7
8
9
10
[root@ master ~] # mysql -u root -p123.com
mysql> GRANT  REPLICATION SLAVE ON *.* TO  'replication' @ '192.168.0.%'  IDENTIFIED  BY  'replication' ;
mysql> flush  privileges;
mysql> change  master to
     ->  master_host= '192.168.0.203' ,
     ->  master_user= 'replication' ,
     ->  master_password= 'replication' ,
     ->  master_log_file= 'mysql-bin.000002' ,
     ->  master_log_pos=106;   #对端状态显示的值
mysql> start  slave;          #启动同步

backup配置如下:

1
2
3
4
5
6
7
8
9
10
[root@backup ~] #  mysql -u root -p123.com
mysql> GRANT  REPLICATION SLAVE ON *.* TO  'replication' @ '192.168.0.%'  IDENTIFIED  BY  'replication' ;
mysql> flush  privileges;
mysql> change  master to
     ->  master_host= '192.168.0.202' ,
     ->  master_user= 'replication' ,
     ->  master_password= 'replication' ,
     ->  master_log_file= 'mysql-bin.000002' ,
     ->  master_log_pos=106;
mysql> start  slave;

#主主同步配置完毕,查看同步状态Slave_IO和Slave_SQL是YES说明主主同步成功。

wKioL1MJYQ7QfZfXAAGQt0H1o1c742.jpg

在master插入数据测试下:

wKiom1MJYUCC0nlQAAEk4ruZ3ys652.jpg

在backup查看是否同步成功:

wKioL1MJYXyyChXUAADPZraUk3Y684.jpg

可以看到已经成功同步过去,同样在backup插入到user表数据,一样同步过去,双主就做成功了。

2、配置keepalived实现热备

[root@backup ~]# yum install -y pcre-devel openssl-devel popt-devel #安装依赖包

1
2
3
4
5
[root@master ~] # wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz
[root@master ~] # tar zxvf keepalived-1.2.7.tar.gz
[root@master ~] # cd keepalived-1.2.7
[root@master ~] #./configure --prefix=/usr/local/keepalived
make  &&  make  install

#将keepalived配置成系统服务

1
2
3
4
5
[root@master ~] # cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
[root@master ~] # cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@master ~] # mkdir /etc/keepalived/
[root@master ~] # cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
[root@master ~] # cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
[root@master ~] # vi /etc/keepalived/keepalived.conf
! Configuration File forkeepalived
global_defs {
notification_email {
test @sina.com
  }
notification_email_from  admin@ test .com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id MYSQL_HA       #标识,双主相同
  }
vrrp_instance VI_1 {
  state BACKUP            #两台都设置BACKUP
  interface eth0
  virtual_router_id 51        #主备相同
  priority 100            #优先级,backup设置90
  advert_int 1
  nopreempt              #不主动抢占资源,只在master这台优先级高的设置,backup不设置
  authentication {
  auth_type PASS
  auth_pass 1111
  }
  virtual_ipaddress {
  192.168.0.204
  }
}
virtual_server 192.168.0.204 3306 {
  delay_loop 2
  #lb_algo rr              #LVS算法,用不到,我们就关闭了
  #lb_kind DR              #LVS模式,如果不关闭,备用服务器不能通过VIP连接主MySQL
  persistence_timeout 50   #同一IP的连接60秒内被分配到同一台真实服务器
  protocol TCP
  real_server 192.168.0.202 3306 {    #检测本地mysql,backup也要写检测本地mysql
  weight 3
  notify_down  /usr/local/keepalived/mysql .sh     #当mysq服down时,执行此脚本,杀死keepalived实现切换
  TCP_CHECK {
  connect_timeout 3     #连接超时
  nb_get_retry 3        #重试次数
  delay_before_retry 3  #重试间隔时间
   }
}
1
2
3
4
5
[root@master ~] # vi /usr/local/keepalived/mysql.sh
#!/bin/bash
pkill keepalived
[root@master ~] # chmod +x /usr/local/keepalived/mysql.sh
[root@master ~] # /etc/init.d/keepalived start


#backup服务器只修改priority为90、nopreempt不设置、real_server设置本地IP。


#授权两台Mysql服务器允许root远程登录,用于在其他服务器登陆测试!

mysql> grant all on *.* to'root'@'192.168.0.%' identified by '123.com';

mysql> flush privileges;

3、测试高可用性

1、通过Mysql客户端通过VIP连接,看是否连接成功。

2、停止master这台mysql服务,是否能正常切换过去,可通过ip addr命令来查看VIP在哪台服务器上。

wKiom1MJYbCBORSGAAHChWpI93k009.jpg

3、可通过查看/var/log/messges日志,看出主备切换过程

4、master服务器故障恢复后,是否主动抢占资源,成为活动服务器。


本文出自 “李振良的技术博客” 博客,请务必保留此出处http://lizhenliang.blog.51cto.com/7876557/1362313


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值