mysql+keepalived详细配置

回复 收藏

首先在两台服务器上安装相应版本的mysql,详细安装过程这里就不再进行描述,查看相关文档进行安装

mysql服务器A 192.168.1.126

mysql服务器B192.168.1.127

两台均是主服务器

mysql版本:5.6.33

系统版本Centos6.6 x86_64

主主配置过程

通常,主从配置需要主服务器上为从服务器建立一个授权访问的账户,给予REPLICAITON SLAVE权限

服务器A和服务器B这里需要互为主从,都需要定义一个授权账户以便进行同步

服务器A和B上执行操作

grant replication slave on *.* to 'master'@'192.168.1.%' identified by 'mima';

flush privileges;

A服务器上的my.cnf文件,修改添加的部分

 basedir = /usr/local/mysql

 datadir = /var/mysql/data

 server_id = 10

log-bin = mysql-bin

auto-increment-increment=2

auto-increment-offset=1

log-slave-updates

sync_binlog=1

#replicate-ignore-db = mysql,information_schema      忽略同步更新的库

B服务器上的my.cnf文件,修改添加的部分

 basedir = /usr/local/mysql

 datadir = /var/mysql/data

 server_id = 15

log-bin = mysql-bin

auto-increment-increment=2

auto-increment-offset=1

log-slave-updates

sync_binlog=1

#replicate-ignore-db = mysql,information_schema      忽略同步更新的库

服务器A和B重启mysql服务

/etc/init.d/mysqld restart

A和B服务器上查看作为主服务器的状态信息,相关的mysql信息如下

mysql> show master status;

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

| File                        | Position | Binlog_Do_DB  | Binlog_Ignore_DB | Executed_Gtid_Set  |

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

| mysql-bin.000001 |      120   |                           |                                |                                  |

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

1 row in set (0.00 sec)

在mysql中添加二进制的日志文件名及位置字段,如以上是A服务器(192.168.1.126)上的信息,需要添加到B(192.168.1.127)服务器上,如下操作:

步骤一:

B服务器(192.168.1.127)上授权A能访问数据库

grant replication slave on *.* to 'master'@'192.168.1.%' identified by 'mima';

flush privileges;

步骤二:

change master to master_host'192.168.1.127',master_port=3306,master_user='master',master_password='mima',master_log_file='mysql-bin.000001',master_log_pos=781;

授权及指定同步信息操作完成后重启mysql服务

B服务器上操作

A服务器(192.168.1.126)上授权B能访问数据库

步骤一:

grant replication slave on *.* to 'master'@'192.168.1.%' identified by 'mima';

flush privileges;

步骤二:

B服务器添加A作为为主服务器

change master to master_host='192.168.1.126', master_port=3306, master_user='master', master_password='mima', master_log_file='mysql-bin.000003', master_log_pos=920;

授权及指定同步信息操作完成后重启mysql服务

安装keepalived,这里是使用yum安装的方法

yum install -y keepalived 

服务器上配置

A服务器的keepalived配置:

! Configuration File for keepalived

global_defs {

   notification_email {

     960477251@qq.com                    #keepalived出现问题发送邮件的地址

   }

   notification_email_from Alexandre.Cassen@firewall.loc  #出现问题后用哪个账号发送邮件

   smtp_server 192.168.1.24           #SMTP服务器ip地址

   smtp_connect_timeout 30             #stmp链接超时时间

  router_id master01                 #机器表示ID,改为自己的主机名

}

vrrp_instance VI_1 {               

    state BACKUP             #此处指定两台主主都为BACKUP,指定没有效果,需要通过优先级来计算 

    interface eth0           #绑定网卡,配置虚拟ip也是从现有的网卡上加的

    priority 100             #节点优先级,优先级高为master,另一个设置成90

    advert_int 1             #检查时间间隔

    nopreempt  1             #不抢占,恢复服务后也不抢占回来,只在优先级高的机器上配置即可,低优先级无需配置

    authentication {      

        auth_type PASS       

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.1.150       #Vip地址配置,虚拟ip地址

    }

}

virtual_server 192.168.1.150 3306 {     # 虚拟ip地址  端口

    delay_loop 6               #每隔一段时间检查real_server通信状态

    lb_algo rr                 #请求的轮询方式算法

    lb_kind NAT                #哪种路由模式

    nat_mask 255.255.255.0

    persistence_timeout 50     #保持多久的会话时间

    protocol TCP               #TCP协议方式去检测对方 

    real_server 192.168.1.126 3306 {        #真实主机ip及端口

        weight 1                        #权重值,轮询几次?

           notify_down /usr/local/mysql/bin/mysql.sh        服务监测down后执行的脚本

          TCP_CHECK   {

            connect_timeout 3           #重连超时时间

            nb_get_retry 3              #发生通信中断,重试此时

            delay_before_retry 3        #重新连接时间间隔,多久尝试一次重连

            connect_port 3306           #端口健康监测

        }

    }

}

B服务器上的keepalived配置内容:

! Configuration File for keepalived

global_defs {

   notification_email {

     960477251@qq.com                    #keepalived出现问题发送邮件的地址

   }

   notification_email_from Alexandre.Cassen@firewall.loc  #出现问题后用哪个账号发送邮件

   smtp_server 192.168.1.24           #SMTP服务器ip地址

   smtp_connect_timeout 30             #stmp链接超时时间

  router_id master02                 #机器表示ID,改为自己的主机名

}

     vrrp_instance VI_1 {

     state BACKUP            #此处指定两台主主都为BACKUP,指定没有效果,需要通过优先级来计算

     interface eth0           #绑定网卡,配置虚拟ip也是从现有的网卡上加的

     priority 90             #节点优先级,优先级高为master,另一个设置成90

     advert_int 1             #检查时间间隔

#    nopreempt  1             #不抢占,只在优先级高的机器上配置即可,底优先级无需配置

     authentication {

        auth_type PASS

        auth_pass 1111

      }

     virtual_ipaddress {

        192.168.1.150       #Vip地址配置,虚拟ip地址

    }

}

    virtual_server 192.168.1.150 3306 {     # 虚拟ip地址  端口  

    delay_loop 6               #每隔一段时间检查real_server通信状态

    lb_algo rr                 #请求的轮询方式算法

    lb_kind NAT                #哪种路由模式

    nat_mask 255.255.255.0

    persistence_timeout 50     #保持多久的会话时间

    protocol TCP               #TCP协议方式去检测对方

    real_server 192.168.1.127 3306 {        #真实主机ip及端口

        weight 1                        #权重值,轮询几次?

           notify_down /usr/local/mysql/bin/mysql.sh        服务监测down后执行的脚本

          TCP_CHECK   {

            connect_timeout 3           #重连超时时间

            nb_get_retry 3              #发生通信中断,重试此时

            delay_before_retry 3        #重新连接时间间隔,多久尝试一次重连

            connect_port 3306           #端口健康监测

        }

    }

}

配置内容仅作为参考用,请勿直接搬运

建立mysql进程结束脚本

vim /usr/local/mysql/bin/mysql.sh  

#! /bin/bash

pkill keepalived

给予权限

chmod +x /usr/local/mysql/bin/mysql.sh 

测试

停止A主机的mysql服务,在B主机上ip a查看虚拟ip状态

发现VIP已经被绑定到mysql2上

停止之后再恢复A主机服务,手动关掉B主机服务,发现VIP没有漂移到A主机上,

可以把keepalived配置中的不抢占那项注释掉,A主机恢复服务后再停止B主机后即可立即切换到A主机的mysql服务

登录测试:

两台主机授权其他主机访问的账号权限:

GRANT ALL PRIVILEGES ON *.* TO 'zabbix'@'%' IDENTIFIED BY 'pwd@123' WITH GRANT OPTION;

其他主机可使用虚拟的VIP访问数据库服务

mysql -h192.168.1.150 -uzabbix -p 

2016-11-27 15:02 举报
已邀请:

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: