设为首页收藏本站

追梦Linux

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 499|回复: 0

mysql双机互为主从配合keepalive做高可用

[复制链接]

482

主题

485

帖子

16万

积分

CEO

Rank: 9Rank: 9Rank: 9

积分
167821

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

QQ
发表于 2015-12-15 13:16:45 | 显示全部楼层 |阅读模式
一、mysql双主配置
1、主从服务器分别作以下操作:
  1.1、版本一致
  1.2、初始化表,并在后台启动mysql
  1.3、修改root的密码
mysql安装不在重复,请自行百度
2、修改主服务器master:
  #vi /etc/my.cnf
  [mysqld]
  log-bin=mysql-bin //[必须]启用二进制日志
  server-id=1 //[必须]服务器唯一ID,默认是1,一般取IP最后一段


3、修改从服务器slave:
  #vi /etc/my.cnf
  [mysqld]
  log-bin=mysql-bin //[必须]启用二进制日志
  server-id=2 //[必须]服务器唯一ID,默认是1,一般取IP最后一段


4、重启两台服务器的mysql
  /etc/init.d/mysqld restart


5、在主服务器上建立帐户并授权slave:
  #/usr/local/mysql/bin/mysql -uroot -pmttang
  mysql>GRANT REPLICATION SLAVE ON *.* to 'myslave'@'%' identified by 'mypass'; //一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.1.226,加强安全。


6、登录主服务器的mysql,查询master的状态
  mysql>show master status;




  注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化


7、配置从服务器Slave:
  mysql>change master to master_host='192.168.1.202',master_user='myslave',master_password='mypass',master_log_file='mysql-bin.000001',master_log_pos=400; //注意不要断开,“400”无单引号。


  Mysql>start slave; //启动从服务器复制功能


8、检查从服务器复制功能状态:


  mysql> show slave status\G


  *************************** 1. row ***************************


  Slave_IO_State: Waiting for master to send event


  Master_Host: 192.168.1.222 //主服务器地址


  Master_User: myrync //授权帐户名,尽量避免使用root


  Master_Port: 3306 //数据库端口,部分版本没有此行


  Connect_Retry: 60


  Master_Log_File: mysql-bin.000004


  Read_Master_Log_Pos: 600 //#同步读取二进制日志的位置,大于等于>=Exec_Master_Log_Pos


  Relay_Log_File: ddte-relay-bin.000003


  Relay_Log_Pos: 251


  Relay_Master_Log_File: mysql-bin.000004


  Slave_IO_Running: Yes //此状态必须YES


  Slave_SQL_Running: Yes //此状态必须YES
  ......


注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。


以上操作过程,主从服务器配置完成。
将以上5.6.7.8步骤反向在从机上重复,即可完成双机互为主从的配置了
二、keepalive配置
主机安装keepalive
cd /usr/local/src
tar zxf keepalived-1.2.10.tar.gz
cd keepalived-1.2.10
./configure -prefix=/usr/local/keepalived -disable-lvs
make;make install
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
mkdir /etc/keepalived
vi /usr/local/keepalived/etc/keepalived/keepalived.conf  #添加以下内容
global_defs {
   router_id LVS_DEVEL
}


vrrp_script check_mysqld {         #vrrp_script 是keepalive自带的检测工具,用于检测各种服务,本次使用的是mysql检测
   script "killall -0 mysqld"
   interval 2
   weight 30          #weight  是当mysql检测宕机后,keepalive主从的权重减值,目的是为了选举新的master使用,当检测到mysql宕机后,keepalive的权重值         
}                            (priority 100)将减去weight 30  等于100 减去30 等于70  该值比keepalive从机的权重值(priority 80)小 keepalive将自动切换到从机,                  
                              实现宕机后自动切换的目的


vrrp_instance HA {
    state BACKUP      #此项没有写MASTER是因为主机的权重值(priority 100 )比从机的权重值(priority 80)打,主从双机启动keepalive后,会通过此值
    interface eth0           自动进行选举,权重值大的自动当选vip
    virtual_router_id 80
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 88888
    }


    notify_master "/etc/keepalived/master.sh"          # 当主备切换时,用来通知运维工作人员的,要事先保证系统可以正常发邮件
    notify_master "/etc/keepalived/backup.sh"


    track_script {
        check_mysqld
    }


    virtual_ipaddress {
        192.168.1.210
    }
}


cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
vi /etc/keepalived/master.sh           # 当主备切换时,用来通知运维工作人员的,要事先保证系统可以正常发邮件
#!/bin/bash
# Keepalived mail alarm


Mail=’135xxxxxxxx@139.com


echo “$HOSTNAME State -> Master” | mail -s “Keepalived Mail” $Mail


#End
vi /etc/keepalived/slave.sh
#!/bin/bash
# Keepalived mail alarm


Mail=’135xxxxxxxx@139.com


echo “$HOSTNAME State -> Backup” | mail -s “Keepalived Mail” $Mail


#End


从机安装keepalive
cd /usr/local/src
tar zxf keepalived-1.2.10.tar.gz
cd keepalived-1.2.10
./configure -prefix=/usr/local/keepalived -disable-lvs
make;make install
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
mkdir /etc/keepalived
vi /usr/local/keepalived/etc/keepalived/keepalived.conf #添加以下内容
global_defs {
   router_id LVS_DEVEL
}


vrrp_script check_mysqld {         #vrrp_script 是keepalive自带的检测工具,用于检测各种服务,本次使用的是mysql检测
   script "killall -0 mysqld"
   interval 2
   weight 30          #weight  是当mysql检测宕机后,keepalive主从的权重减值,目的是为了选举新的master使用,当检测到mysql宕机后,keepalive的权重值         
}                            (priority 100)将减去weight 30  等于100 减去30 等于70  该值比keepalive从机的权重值(priority 80)小 keepalive将自动切换到从机,                  
                              实现宕机后自动切换的目的


vrrp_instance HA {
    state BACKUP         
    interface eth0           
    virtual_router_id 80
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 88888
    }


    notify_master "/etc/keepalived/master.sh"          # 当主备切换时,用来通知运维工作人员的,要事先保证系统可以正常发邮件
    notify_master "/etc/keepalived/backup.sh"


    track_script {
        check_mysqld
    }


    virtual_ipaddress {
        192.168.1.210
    }
}
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
vi /etc/keepalived/master.sh           # 当主备切换时,用来通知运维工作人员的,要事先保证系统可以正常发邮件
#!/bin/bash
# Keepalived mail alarm


Mail=’135xxxxxxxx@139.com


echo “$HOSTNAME State -> Master” | mail -s “Keepalived Mail” $Mail


#End
vi /etc/keepalived/slave.sh
#!/bin/bash
# Keepalived mail alarm


Mail=’135xxxxxxxx@139.com


echo “$HOSTNAME State -> Backup” | mail -s “Keepalived Mail” $Mail


#End


到此keepalive就安装完成了,接下来启动双机的mysql和keepalive,观察keepalive的日志(tail -100 /var/log/masegese)
主机日志
从机日志
至此mysql双机互为主从配合keepalive做高可用就完成了,接下来可以关掉主机mysql,观察keepalive日志是否进行了选举,重新定位vip,再次就不累述了,请自行研究。



QQ|小黑屋|手机版|Archiver|追梦Linux ( 粤ICP备14096197号  点击这里给我发消息

GMT+8, 2018-10-21 13:25 , Processed in 0.238192 second(s), 36 queries .

Powered by 追梦Linux! X3.3 Licensed

© 2015-2017 追梦Linux!.

快速回复 返回顶部 返回列表