十二、MySQL 主从复制+高可用+读写分离

news2024/9/19 13:52:52

目录

一、mysql+keeplived实现高可用+LVS负载均衡

一、什么是高可用

二、为什么要用高可用

三、高可用的作用

四、keeplived 是什么?它用在哪里

五、安装mysql以及配置主从

六、keepalived安装

1、配置 单VIP 实现高可用 master上配置

2、backup上的配置

3、LVS配置 实现负载均衡:见下图

二、使用Mysqlrouter搭建MySQL的读写分离功能

1、简介:

2、配置


一、mysql+keeplived实现高可用+LVS负载均衡

一、什么是高可用

        就是指系统或功能提供者在经过设计后,该系统或功能能够长时间的保持正常状态运行的能力

二、为什么要用高可用

        为了防止单点故障,主要是因为现在IT系统对于稳定性具有较高的要求,一旦系统出现故障,将会影响到业务的正常运行,甚至会导致数据丢失,出现严重损失,所以确保系统能够稳定运行,保证了业务的连续与数据的可靠性。

三、高可用的作用

        1、提高系统的稳定性

        2、提高业务的可靠性

        3、改善用户体验

        4、降低维护成本

四、keeplived 是什么?它用在哪里

        官网:Keepalived for Linux

keeplived是开源软件,提供了一个简单而高效的方式来实现负载均衡和故障转移。

主要用户一下几个方面:

        1、实现负载均衡:它使用不通的算法,例如轮询、加权轮询、最少连接数等,将客户端请求平均分到多个后端服务器上,达到负载均衡

        2、提高系统的可用性:可以对堕胎服务器进行监视,并自动切换到另一个可用的节点来避免单点故障。

        3、构建高可用性架构:通过配合虚拟IP、虚拟路由(VRRP)等,可以构建高可用性架构,保证服务的连续性和稳定性。

五、安装mysql以及配置主从

        安装和配置信息详见:十、MySQL主从架构配置-CSDN博客

六、keepalived安装

        keepalived 的详细安装在这里不在详解,会单独写一篇文章详解其参数。

[root@mysqlrouter-1 mysqlrouter]# yum install keepalived -y
然后修改配置文件

1、配置 单VIP 实现高可用 master上配置

vim /etc/keepalived/keepalived.conf

global_defs {
   router_id LVS_DEVEL
#   vrrp_strict       # 这一行需要注释:原因是因为会在iptables里添加一条规则,会阻止网络通信,导致出现脑裂现象
}

 
vrrp_instance VI_1 {    # 定义一个vrrp协议的实例 名字是VI_1 表示第一个vrrp实例
    state MASTER        # 做master角色
    interface ens33     # 指定监听网络的接口,其实就是vip绑定到那个网络接口上
    virtual_router_id 199  # 虚拟路由器ID 199表示的是编号,MASTER 和 BACKUP 必须是一致的。
    priority 160          # 优先级 数字越大就越容易成为master
    advert_int 1          # 宣告消息的时间间隔 为1s
    authentication {
        auth_type PASS    # 密码认证 password
        auth_pass 1111    # 具体密码 可以不用修改
    }
    virtual_ipaddress {   # vip 虚拟ip地址 可以配置多个
        192.168.134.199     # 配置的vip
    }

}

2、backup上的配置

cat keepalived.conf 

global_defs {  
   router_id LVS_DEVEL
  # vrrp_strict       # 这一行需要注释:原因是因为会在iptables里添加一条规则,会阻止网络通信,导致出现脑裂现象
}
 
vrrp_instance VI_1 {    # 定义一个vrrp协议的实例 名字是VI_1 表示第一个vrrp实例
    state BACKUP        # 做backup角色
    interface ens33     # 指定监听网络的接口,其实就是vip绑定到那个网络接口上
    virtual_router_id 199  # 虚拟路由器ID 81表示的是编号,MASTER 和 BACKUP 必须是一致的。
    priority 100          # 优先级 数字越大就越容易成为master
    advert_int 1          # 宣告消息的时间间隔 为1s
    authentication {
        auth_type PASS    # 密码认证 password
        auth_pass 1111    # 具体密码 可以不用修改
    }
    virtual_ipaddress {   # vip 虚拟ip地址 可以配置多个
        192.168.134.199     # 配置的vip 必须与master配置的vip是一样的
    }
}

3、LVS配置 实现负载均衡:见下图

参数详解:


virtual_server 192.168.134.199 3306{:表示将我的请求发送到哪几台机器
    delay_loop:设置健康检查的时间间隔,单位是秒
    lb_algo:设置负载均衡的算法。可用的有rr、wrr、lc、wlc、等。此设置为wrr
    lb_kind:设置LVS实现负载均衡的机制。有NAT、TUN、DR三个模式可选
    nat_mask:255.255.255.0
    protocol:TCP 转发协议,有TCP和UDP两种
    
    real_server 192.168.134.132 3306{  //表示接受的节点,IP和端口用空格隔开,就是把199这个读的请求 发送到这个机器上
            weight 1  :用来配置real_server节点权值,数字越大 权值越高
            inhibit_on_failure:表示在检测到real server 节点失效后,把它的weight 值设置为 0,而不是从IPVS 中删除。
            
            TCP_CHECK {:健康检查,常见的 有 HTTP_GET、SSL_GET、TCP_CHECK
                connect_timeout 3 :表示无响应超时时间,单位是秒,这里是3秒超时
                nb_get_retry 3 :表示重试次数,这里是3次。
                delay_before_retry 3 :表示重试间隔,这里是间隔3秒。
                connect_port 3306 :健康检查的端口,如果无指定,默认是real_server 指定的端口。
            }
    }
    real_server 192.168.134.133 3306{  //表示接受的节点,IP和端口用空格隔开,就是把199这个读的请求 发送到这个机器上
            weight 1  :用来配置real_server节点权值,数字越大 权值越高
            inhibit_on_failure:表示在检测到real server 节点失效后,把它的weight 值设置为 0,而不是从IPVS 中删除。
            
            TCP_CHECK {:健康检查,常见的 有 HTTP_GET、SSL_GET、TCP_CHECK
                connect_timeout 3 :表示无响应超时时间,单位是秒,这里是3秒超时
                nb_get_retry 3 :表示重试次数,这里是3次。
                delay_before_retry 3 :表示重试间隔,这里是间隔3秒。
                connect_port 3306 :健康检查的端口,如果无指定,默认是real_server 指定的端口。
            }
    }
}    

            其他健康检查方式,我的环境是TCP,仅供参考
            HTTP_GET |SSL_GET {
                url { :
                    path /index.html 
                    digest e6c271eb5f017f280cf97ec2f51b02d3 
                    status_code 200 
                }
                connect_port 80 
                bindto 192.168.12.80 
                connect_timeout 3 
                nb_get_retry 3 
                delay_before_retry 2 
            }

启动

ip add 就可以查看虚拟IP

 

 

 

 

如果转发不成功,就需要在每台转发的 real_server 上边还要做一个配置

vim /etc/init.d/realserver.sh

#!/bin/bash
SNS_VIP=192.168.134.199
NET_MASK=255.255.255.255

case "$1" in
start)
  ifconfig lo:0 $SNS_VIP netmask $NET_MASK broadcast $SNS_VIP
  /sbin/route add -host $SNS_VIP dev lo:0      
  echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
  echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore     
  echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce  
  echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
  sysctl -p >/dev/null 2>&1        
  echo "RealServer Start OK"
  ;;
stop)
  ifconfig lo:0 down
  route del $SNS_VIP >/dev/null 2>&1
  echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore
  echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore     
  echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce  
  echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
  echo "RealServer Stoped"
  ;; 
*)    
  echo "Usage: $0 {start|stop}"    
  exit 1
esac
exit 


改完之后 切记 需要start下
/etc/init.d/realserver.sh start

二、使用Mysqlrouter搭建MySQL的读写分离功能

1、简介:

        MySQL Router的前提是后端实现了MySQL的主从复制,它必须能够分析来自前面客户端的SQL请求是写请求还是读请求,以便决定这个SQL请求是发送给master还是slave,以及发送给哪个master、哪个slave。这样,MySQL Router就实现了MySQL的读写分离,对MySQL请求进行了负载均衡。

官网下载地址:https://downloads.mysql.com/archives/router/
             https://downloads.mysql.com/archives/router/
下载完 rpm 安装包 直接安装  rpm -ivh 
或者下载tar文件,解压、然后新建一个文件,放MySQL Router.
安装完成
将MySQL Router环境变量配置到/etc/profile文件中:
vim /etc/profile
export PATH=$PATH:/data/mysql/mysql-router-8.0.28/bin
[root@local110 ~]# source /etc/profile

2、配置

[root@local110 ~]# cd /data/mysql/mysql-router-8.0.28

[root@local110 mysql-router-8.0.28]# ls
bin    lib    LICENSE.router    man        README.router    share

[root@local110 mysql-router-8.0.28]# mkdir  data  run  conf  log

[root@local110 mysql-router-8.0.28]# ls
bin        conf    data    lib    LICENSE.router    log    man        README.router    run    share
data:数据持久化目录
run:运行状态目录
conf:配置文件存放目录
log:日志目录
将安装目录下的示例配置文件拷贝到conf目录下:

[root@local110 mysql-router-8.0.28]# cp share/doc/mysqlrouter/sample_mysqlrouter.conf   conf/mysqlrouter.conf

更改整个安装包的属主和属组:
[root@local110 ~]# chown -R mysql:mysql  /data

[root@local110 ~]# cd /data/mysql/mysql-router-8.0.28/conf
[root@local110 conf]# vim mysqlrouter.conf
......
[DEFAULT]
user = mysql
logging_folder = /data/mysql/mysql-router-8.0.28/log
plugin_folder = /data/mysql/mysql-router-8.0.28/lib/mysqlrouter
runtime_folder = /data/mysql/mysql-router-8.0.28/run
data_folder = /data/mysql/mysql-router-8.0.28/data

[logger]
level = INFO
filename = mysqlrouter.log

[routing:failover]  //失败转移
bind_address = 0.0.0.0  //本地IP  
bind_port = 7001
max_connections = 1024  //最大连接数
connect_timeoit = 3 //连接超时时间
mode = read-write  // 模式:读还是写
destinations = 192.168.134.132:3306,192.168.134.133:3306  // 后端服务器地址

[routing:balancing]  //负载均衡
bind_address = 0.0.0.0
bind_port = 7002
max_connections = 1024
mode = read-only
destinations = 192.168.134.132:3306,192.168.134.133:330

 参数文件配置完成后,正式启动MySQL Router。
 mysqlrouter -c  /data/mysql/mysql-router-8.0.28/conf/mysqlrouter.conf
 查看日志
 tailf  /data/mysql/mysql-router-8.0.28/log/mysqlrouter.log
 
  起来之后,登录数据库可以查看  是否均衡

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1533498.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【感悟《剑指offer》典型编程题的极练之路】01数组篇!

​​​​​​​ ​​​​​​​ 个人主页:秋风起,再归来~ ​​​​​​​ 文章所属专栏:《剑指offer》典型编程题的极练之路 ​​​​​​​ ​​​​​​​ …

Android Audio相关

AudioManager AudioService的Bp端,调用AudioManager>AudioService(代码实现) AudioService 继承自IAudioService.Stub,为Bn端 AudioSystem AudioService功能实现都依赖于AudioSystem,AudioService通过AudioSys…

python的FastAPI 快速入门

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…

ESM对比CommonJS

以下内容均总结自es-modules-a-cartoon-deep-dive 1. ESM是异步的而CommonJS是同步的 异步是ESM面临的最大挑战。和CommonJS的执行环境Node获取模块文件的方式不同,ESM获取模块文件是通过网络。如果ESM从获取到执行所有模块都是顺序进行会导致主线程长期处于pendi…

AI预测福彩3D第15弹【2024年3月20日预测--第3套算法重新开始计算第4次测试】

今天咱们继续对第3套算法进行第4次测试,第3套算法加入了012路的权重。废话不多说了,直接上结果吧~ 最终,经过研判分析,2024年3月21日福彩3D的七码预测结果如下: 百位:4 5 7 1 0 6 2 十位:3 1 5 …

第十节HarmonyOS 常用容器组件4-Grid与GridItem

1、描述 网格容器,由行和列分割的单元格所组成,通过指定“项目”所在的单元格做出各种各样的布局。 子组件 包含GridItem子组件。 3、接口 Grid(scroller?: Scroller) 4、参数 参数名 参数类型 必填 描述 scroller Scroller 否 可滚动组件…

安科瑞智能断路器产品介绍【可监可控 远程操控 短路保护】

开发背景 过去几年智慧用电的产品应用中,大多数只安装于进线测。主要存在以下几个问题:难定位,不知道具体哪个回路出线问题,排查困难;出线过载或线缆温度过高无法知晓;即使是出线回路安装了的场景&#xf…

uniapp+uview 学习笔记(二)—— H5开发

文章目录 前言一、开发步骤1.创建项目2.安装组件库并导入使用3.封装请求4.国际化5.打包 总结 前言 本文主要介绍使用uniapp框架和uview组件库进行H5开发,需要用到的开发工具为HBuilder X。 一、开发步骤 1.创建项目 打开HBuilder X,在顶部栏目选择 新…

英国教育部学生信息中心

你是否曾因学历无法得到国内雇主的认可而感到困扰?别担心,英国教育部学校信息中心为你解忧!作为英国政府官方认可的学历认证机构,其权威性和可靠性广受认可,为留学生求职提供了强大的支持。 一、打破求 职困境:学历真实性认证的重要性 在求职过程中,学历的真实性和有效性是雇…

电脑照片分辨率怎么调?这款dpi修改工具好用

许多考试平台在上传证件照片的时候,大多都会对图片分辨率有具体要求,但是如果遇上手上的图片分辨率达不到要求,那么怎么改图片分辨率呢?可以利用专业的dpi修改工具来处理,比如今天分享的就是一个在线修改图片分辨率的方…

积鼎CFD发动机燃烧仿真,实现航空航天发动机内部燃烧过程的流体仿真

航空航天发动机中的燃烧现象是一种复杂的物理化学过程,包括流动、雾化、相变、传热传质、点火熄火、化学反应、污染物排放、热声振荡和冷却等多个过程,加上燃烧的非定常性和高湍流度,使得准确模拟燃烧过程变得异常困难。在传统CFD模拟需要考虑…

javaSwing推箱子游戏

一、简介 策略性游戏可以锻炼人的思维能力还能缓解人的压力,使人们暂时忘却生活当中的烦恼,增强人们的逻辑思维能力,游戏的艺术美也吸引着越来越多的玩家和厂商,寓教于乐,在放松人们心情的同时还可以活跃双手。在人类…

扩展学习|数字经济与公共管理的相关论文(管理世界)

一是如何建立与数字经济时代相适应的政府监管体制机制? 问题一和二来源:[1]王岭.数字经济时代中国政府监管转型研究[J].管理世界,2024,40(03):110-126204127.DOI:10.19744/j.cnki.11-1235/f.2024.0027. (1)数字经济时代政府监管转…

ByteTrack多目标跟踪——YOLOX详解

文章目录 1 before train1.1 dataset1.2 model 2 train2.1 Backbone2.2 PAFPN2.3 Head2.3.1 Decoupled Head2.3.2 anchor-free2.3.3 标签分配① 初步筛选② simOTA 2.3.4 Loss计算 项目地址: ByteTrack ByteTrack使用的检测器是YOLOX,是一个目前非常流行…

在 NVIDIA DGX Cloud 上使用 H100 GPU 轻松训练模型

近期,我们正式宣布推出 DGX 云端训练 (Train on DGX Cloud) 服务,这是 Hugging Face Hub 上针对企业 Hub 组织的全新服务。 通过在 DGX 云端训练,你可以轻松借助 NVIDIA DGX Cloud 的高速计算基础设施来使用开放的模型。这项服务旨在让企业 H…

vue2 项目运行 浏览器自动打开 vue项目启动如何自动打开浏览器 vue2取消浏览器自动打开浏览器,vue2关闭自动打开浏览器

1. 找到package.json 2. 找到scripts 在后面添加 --open即可: 3. 运行npm run serve 运行之后,就可以自动打开默认浏览器 4. 同理,不想自动打开 ,将 --open 删除即可!

【机器学习】基于布谷鸟搜索算法优化的BP神经网络分类预测(CS-BP)

目录 1.原理与思路2.设计与实现3.结果预测4.代码获取 1.原理与思路 【智能算法应用】智能算法优化BP神经网络思路【智能算法】布谷鸟搜索算法(CS)原理及实现 2.设计与实现 数据集: 数据集样本总数2000 多输入多输出:样本特征24&#xff0…

选择器加练习

一、常用的选择器 1.元素选择器 语法 : 标签名{} 作用 : 选中对应标签中的内容 例:p{} , div{} , span{} , ol{} , ul{} ...... 2.类选择器(class选择器) 语法 : .class属性值{} 作用 : 选中对应class属性值的元素 注意:class里面的属性值不能以数字开头,如果以符号开头,…

鸿蒙Harmony应用开发—ArkTS-属性动画

组件的某些通用属性变化时,可以通过属性动画实现渐变过渡效果,提升用户体验。支持的属性包括width、height、backgroundColor、opacity、scale、rotate、translate等。布局类改变宽高的动画,内容都是直接到终点状态,例如文字、can…

C++之模版详解

一.array与vector对比 由图发现&#xff0c;使用array数组是必须提前开好空间&#xff0c;而vector是顺序表&#xff0c;可以实现动态开辟空间 array也支持迭代器&#xff0c;如下&#xff1a; int main() {array<int, 10> arr{ 1,2,3,4,5,6,7,8,9,10 };auto it arr.be…