使用Keepalived搭建MySQL双主模式的高可用集群系统

1、环境准备

两台分别安装mysql

yum -y install mysql mysql-server

两台分别关闭防火墙和selinux

iptables -F #关闭防火请
setenforce 0 #关闭selinux

在这里插入图片描述
两台分别修改主配置文件my.cnf
第一台:

vim /etc/my.cnf

log-bin=mysql-bin
server-id=1
expire-logs-days=99
replicate-do-db=test
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
auto-increment-increment=2
auto-increment-offset=1

在这里插入图片描述
第二台:

vim /etc/my.cnf

log-bin=mysql-bin
server-id=2
expire-logs-days=99
replicate-do-db=test
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
auto-increment-increment=2
auto-increment-offset=1

在这里插入图片描述
两台分别开启mysql服务

service mysqld start

两台分别设置mysql密码并登录mysql

mysqladmin -u root password '123456'
mysql -u root -p

在这里插入图片描述
其中一台备份test数据库
其中一台锁定数据库,使数据不再更新

flush tables with read lock;

然后备份test数据库

mysqldump -uroot -p test > /tmp/test.sql

在这里插入图片描述
最后再解锁数据库

unlock tables;

在这里插入图片描述
传递sql文件到另一台服务器

scp /tmp/test.sql root@192.168.201.140:/tmp

在这里插入图片描述
传递成功。
在两台服务器上分别授权一个用户

grant replication slave on *.* to 'wmm'@'%' identified by '123456';
flush privileges;

在这里插入图片描述
两台服务器上分别查看当前使用的二进制文件

show master status;

在这里插入图片描述
在这里插入图片描述
当前使用的二进制文件名相同
两台服务器分别登录并配置master.info文件
第一台:

change master to master_host='192.168.201.140',master_user='wmm',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=475;

在这里插入图片描述
第二台:

change master to master_host='192.168.201.137',master_user='wmm',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=475;

在这里插入图片描述
两台服务器都开启同步功能并查看信息

start slave;
show slave status\G;

在这里插入图片描述
在这里插入图片描述
两台都是Slave_IO_Running: Yes和Slave_SQL_Running: Yes。表明两台服务器都显示同步成功。
为了确定是否真的同步成功,于是再测试一下:
第一台同步到第二台

#第二台服务器
use test;
show tables;

在这里插入图片描述

#第一台服务器
use test;
show tables;
create table aa (name char(40)); #创建个aa数据表
show tables;

在这里插入图片描述

#第二台服务器
show tables;

在这里插入图片描述
经测试,发现第一台服务器的aa数据表成功同步到第二台服务器
第二台同步到第一台

#第二台服务器
use test;
show tables;
create table bb (id int(10)); #创建个bb数据表
show tables;

在这里插入图片描述

#第一台服务器
show tables;

在这里插入图片描述
经测试,发现第二台服务器的bb数据表也能成功同步到第一台服务器。

2、Keepalived搭建MySQL双主模式的高可用集群系统

1.两台服务器分别安装gcc

yum -y install gcc*

2.两台服务器分别安装依赖包

yum -y install openssl-devel popt-devel

在这里插入图片描述
3.两台服务器分别换光盘
eject弹出光盘,然后选择下面这个镜像连接
在这里插入图片描述
4.两台服务器分别安装keepalived
两台服务器都做以下操作:

cd /media/20150611_063116/
tar -zxf keepalived-1.2.7.tar.gz -C /usr/src

在这里插入图片描述

cd /usr/src/keepalived-1.2.7/
./configure --prefix=/usr/local/keepalived
make && make install

在这里插入图片描述
在这里插入图片描述
5.两台服务器分别移动、查看和配置keepalived.conf配置文件

mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cd /etc/keepalived/
chmod a+x keepalived.conf #加上可执行权限
vim keepalived.conf

keepalived用到虚拟路由冗余协议vrrp
在这里插入图片描述
第一台配置:

global_defs { #全局配置
   router_id aa #配置路由器名称
}

vrrp_instance VI_1 { #实例区域
    state BACKUP #MASTER主设备、backup备用设备
    interface eth0 #网卡名称
    virtual_router_id 66 #id号标识同属一个组
    priority 100 #优先级
    advert_int 1 #心跳时间,每隔一秒发一次信号,做一次同步
    nopreempt #设置优先级
    authentication { #认证信息
        auth_type PASS #PASS密码认证
        auth_pass 1111
    }
    virtual_ipaddress { #虚拟地址
        192.168.201.200
    }
}

virtual_server 192.168.201.200 3306 { #虚拟出来的集群ip地址
    delay_loop 2 #每隔多久检查服务器状态
    lb_algo wrr
    lb_kind DR #类型
    persistence_timeout 50 #超时时间
    protocol TCP

    real_server 192.168.201.137 3306 { #真实ip地址
        weight 3 #权重,哪一台优先工作
        notify_down /root/keepalived.sh #关闭服务的脚本
        TCP_CHECK {
            connect_timeout 5 #连接超时时间
            nb_get_retry 3 #如果超时,重连多少次
            delay_before_retry 3 #间隔3秒
            connect_port 3306 #默认连接端口
        }
    }
}

在这里插入图片描述
第二台配置:

global_defs { #全局配置
   router_id bb #配置路由器名称
}

vrrp_instance VI_1 { #实例区域
    state BACKUP #MASTER主设备、backup备用设备
    interface eth0 #网卡名称
    virtual_router_id 66 #id号标识同属一个组
    priority 80 #优先级
    advert_int 1 #心跳时间,每隔一秒发一次信号,做一次同步
    authentication { #认证信息
        auth_type PASS #PASS密码认证
        auth_pass 1111
    }
    virtual_ipaddress { #虚拟地址
        192.168.201.200
    }
}

virtual_server 192.168.201.200 3306 { #虚拟出来的集群ip地址
    delay_loop 2 #每隔多久检查服务器状态
    lb_algo wrr #带权重的轮询
    lb_kind DR #类型
    persistence_timeout 50 #超时时间
    protocol TCP

    real_server 192.168.201.140 3306 { #真实ip地址
        weight 3 #权重,哪一台优先工作
        notify_down /root/keepalived.sh #关闭服务的脚本
        TCP_CHECK {
            connect_timeout 5 #连接超时时间
            nb_get_retry 3 #如果超时,重连多少次
            delay_before_retry 3 #间隔3秒
            connect_port 3306 #默认连接端口
        }
    }
}

6.两台服务器分别写关闭keepalived服务的脚本keepalived.sh

cd /root/
vim keepalived.sh

keepalived.sh内容为:

#!/bin/bash
pkill keepalived

在这里插入图片描述
授予keepalived.sh执行权限

chmod a+x keepalived.sh

在这里插入图片描述
7.两台服务器分别开启keepalived服务并查看进程

/usr/local/keepalived/sbin/keepalived -D
ps -elf | grep keepalived

在这里插入图片描述
在这里插入图片描述
服务已经开启成功
8.两台服务器分别ping一下虚拟集群ip进行测试

ping 192.168.201.200

在这里插入图片描述
在这里插入图片描述
发现两台服务器都可以ping通虚拟集群ip。
在客户端进行测试
客户端ping一下虚拟集群ip进行测试

ping 192.168.201.200

在这里插入图片描述
客户端安装mysql并登录一下虚拟集群的mysql进行测试

yum -y install mysql
mysql -h 192.168.201.200 -u wmm -p

在这里插入图片描述
登录成功。
在客户端分别执行以下命令进行查看当前所用的是哪一台mysql服务器:

mysql>show variables like 'server_id'; #使用server_id查看
tcpdump vrrp #抓包查看

两台服务器不同时的执行以下命令,以实现一台服务器mysql故障,从而切换到另一台

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值