构建一个 MySQL 主从复制及基本双 vip 的 MySQL 读写分离的高可用集群


一、项目描述

为了提升MySQL的并发能力和实现读写分离功能,构建一个简单的MySQL集群,keepalived实现高可用、mysqlrouter读写分离功能,大大提升MySQL集群的业务处理能力。同时深入学习MySQL的整体的部署和对集群架构的理解

项目架构图

在这里插入图片描述

二、项目环境

6台2c/4G的服务器(虚拟机),centos7.9,mysql 5.7.33
mysqlrouter8 ,keepalived

三、项目步骤

部署基于GTID的主从复制

准备三台服务器(1主2从),都开启MYSQL服务(三台服务器的数据库版本一致mysql 5.7.33)
再准备两台机器作为中间件,用来读写分离

master服务器和slave服务器都要开启二进制日志
master服务器和slave服务器的server_id不能相同,必须唯一

master和slave服务器都要关闭防火墙和selinux
在这里插入图片描述
Master:
1.创建用来复制二进制日志的用户
2.授权从服务器获取二进制日志
在这里插入图片描述
3.创建完全备份
在这里插入图片描述
4.完全备份传输到slave1和slave2
在这里插入图片描述
5.开启二进制日志并设置server_id
在这里插入图片描述
6.重启MySQL服务
在这里插入图片描述
slave1和slave2:
1.导入备份
在这里插入图片描述
2.开启二进制日志和在slavel配置文件/etc/my.cnf里添加server_id,并刷新MySQL服务
在这里插入图片描述
3.在master上查看日志文件和位置号
在这里插入图片描述
4.在slave启用并查看master信息

MASTER_USER是先前创建获取二进制日志文件的用户 
MASTER_PASSWORD是先前创建获取二进制日志文件的用户的密码   
MASTER_PORT端口号
MASTER_LOG_FILE二进制日志文件名
MASTER_LOG_POS位置号
当SQL_Running和IO_Running都为Yes时,说明成功连接上master2

在这里插入图片描述
部署基于Gtid的主从复制
1.两台slave关闭slave服务
在这里插入图片描述
2.两台slave都要清除master
在这里插入图片描述
2。master配置文件信息并重启服务器
在这里插入图片描述
3.两台slave配置信息
在这里插入图片描述
4.刷新服务
基于Gtid的主从复制完成

读写分离

1.安装mysqlrouter
rpm -ivh +mysqlrouter安装包
2.关闭防火墙
在这里插入图片描述
3.两台中间件修改配置文件并刷新服务
在这里插入图片描述
4.两台中间件查看端口是否启用
在这里插入图片描述
listen为监听状态表示成功
5.在master建立用户

可读可写的用户与仅可读用户
在这里插入图片描述
6.测试连接
所连接的是mysqlrouter ,划分权限的依靠用户所被授 予的权限,端口不能限制权限
7.验证权限
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
读写分离完成

双VIP高可用的实现

加粗样式
2.修改配置文件
中间件1

[root@localhost ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    #为master状态
    state MASTER
    #指定监听网络的接口
    interface ens33
    #虚拟路由id
    virtual_router_id 51
    #优先级范围1~255
    priority 100
    #宣告消息时间间隔
    advert_int 1
    authentication {
        #Y验证类型
        auth_type PASS
        #密码
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.238.88
    }
}
vrrp_instance VI_2 {
    #为master状态
    state BACKUP
    #指定监听网络的接口
    interface ens33
    #虚拟路由id
    virtual_router_id 52
    #优先级范围1~255
    priority 80
    #宣告消息时间间隔
    advert_int 1
    authentication {
        #Y验证类型
        auth_type PASS
        #密码
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.238.90
    }

}

中间件2

[root@localhost ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
  # vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.238.88
    }
}

vrrp_instance VI_2 {
    #为master状态
    state MASTER
    #指定监听网络的接口
    interface ens33
    #虚拟路由id
    virtual_router_id 52
    #优先级范围1~255
    priority 100
    #宣告消息时间间隔
    advert_int 1
    authentication {
        #Y验证类型
        auth_type PASS
        #密码
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.238.90
    }
}

关闭防火墙,检验结果:
在这里插入图片描述
在这里插入图片描述
注意:检结果之前一定先关闭防火墙,防止脑裂
此时双vip已完成

四、项目心得

1.在本次项目的实现过程中,不断加深我对于MySQL高可用集群的理解,MySQL集群应用范围非常广泛,学好这部分就显得尤为重要。
2.明白了在实验中一定要理清思路,注重细节,因为稍有不注意可能导致整个实验不能成功实现。
3.要多从实验中培养自己的troubleshooting能力。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值