mysql高可用设计,主库挂了怎么办

news/2024/7/24 12:25:50 标签: mysql, 数据库

实际上高可用就是系统能提供的一种无故障服务能力,就是避免宕机出现不能服务的场景。

首先来说对于无状态服务的高可用设计是比较简单的,发现有不能用的就直接停了换别的服务器就行,比如Nginx。这里说一下无状态服务就是不需要记录你的状态、数据等等,各个服务器提供的是一样的服务。mysql分库分表不同服务器能提供的查询服务是不一样的,因为存的东西不一样。

数据库的高可用设计是比较难的,其实最重要的就是冗余。主要有以下几种

  • 主从模式的解决方式,就是主机挂了,将服务转移到从节点上,那这个从节点变成新的主机了,其他从节点从这个新主机上拷贝数据
  • 分库分表的方式,一个库寄了,那把原本要写到这上的数据写到另一个上就行。但这个其实并不好,因为你分开了表甚至是库肯定是根据一个方式分的,那你把A类写进B类里肯定是不好的
  • 融合两种方式,如下图

在这里插入图片描述

注意以上的方法都需要完成一个叫VIP(Virtual IP)的东西,即用户访问的ip是可以随意绑定在任何一台服务器上的。因为要让用户直接用起来,当有挂了的主机时,用户刷新一下,你底层直接把这个VIP绑给其他主机就可以返回给用户结果了。但是 VIP 也是有局限性的,仅限于同机房同网段的 IP 设定。如果是跨机房容灾架构,VIP 就不可用了。这时就要用名字服务,常见的名字服务就是 DNS(Domain Name Service)

最后一种新的技术:MGR技术。因为数据库复制的瓶颈在于,只能在一个节点写入数据,然后这个节点再将日志同步给其他节点。这样单点写入会导致数据库性能无法进行扩展。MGR技术之间的数据同步没有采用复制的手段,而是用GCS(Group Communication System)协议的日志同步技术。要求组中的大部分节点都接收到日志,事务才能提交。所以,MRG 是严格要求数据一致的,特别适合用于金融级的环境。并且MGR有两种模式,单主模式只有 1 个节点可以写入,多主模式能让每个节点都可以写入。而多个节点之间写入,如果存在变更同一行的冲突,MySQL 会自动回滚其中一个事务,自动保证数据在多个节点之间的完整性和一致性。但是缺点是有一个节点网络出现抖动或不稳定,会影响集群的性能!!!切记保证网络通畅

在这里插入图片描述


http://www.niftyadmin.cn/n/5347435.html

相关文章

Git 基本概念

Git是一种版本控制系统,用于跟踪文件的更改并协同开发代码。它具有以下基本概念和使用方式: 仓库(Repository):Git将文件存储在仓库中,它是保存项目历史记录和更改的地方。一个项目通常有一个主要的仓库。 …

【LeetCode: 148. 排序链表 + 链表 + 归并排序】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

类和对象 第三部分第三小节:const修饰成员函数

一.常函数: (一)成员函数后面加const后我们成这个函数为常函数 (二)常函数内不可以修改成员函数属性 额外补充: this指针的本质,是指针常量,指针指向的是不可以修改的 但是指针指向的…

(四)ros中ros::init(argc,argv,”节点名称”)。中的节点名称和launch文件中的节点名称关系。

1、使用rosrun 命令执行ros程序: Rosrun <功能包名称> <节点名称>。其中”节点名称”为ros::init中的ros节点名称。 2、使用launch 文件 name 参数为ros节点名称。 如果采样launch启动ros程序&#xff0c;launch文件中的ros节点名称会替换ros::init中的节点名称…

Pandas.DataFrame.product() 乘积(累乘积) 详解 含代码 含测试数据集 随Pandas版本持续更新

关于Pandas版本&#xff1a; 本文基于 pandas2.2.0 编写。 关于本文内容更新&#xff1a; 随着pandas的stable版本更迭&#xff0c;本文持续更新&#xff0c;不断完善补充。 传送门&#xff1a; Pandas API参考目录 传送门&#xff1a; Pandas 版本更新及新特性 传送门&…

HCIA-Datacom实验指导手册:2 构建互联互通的 IP 网络

HCIA-Datacom实验指导手册:2 构建互联互通的 IP 网络 一、 实验介绍二、实验拓扑:三、实验目的:四、配置步骤:步骤 1 掌握接口 IPv4 地址的配置方法步骤 2 理解 LoopBack 接口的作用与含义,以及什么是InLoopBack0?步骤 3 理解直连路由的产生原则步骤 4 掌握静态路由的配置…

java数据结构与算法刷题-----LeetCode19. 删除链表的倒数第 N 个结点

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 法一&#xff1a;翻转链表法二&#xff1a;双指针 法一&#xff…

SpringBoot-yml文件的配置与读取

配置 值前边必须要有空格&#xff0c;作为分隔符 使用空格作为缩进表示层级关系&#xff0c;相同的层级左侧对齐 获取 使用Value(”${键名}”) 使用ConfigurationProperties(prefix "前缀") 1.前缀要与yml配置文件中的前缀一致 2.实体类的字段名与配置文件中的键名一…