18-03 MySQL高可用方案与选择

news/2025/2/22 0:24:03/

主从复制

读写分离

  • 流程
    在这里插入图片描述
  • 原理 在这里插入图片描述

bin log

在这里插入图片描述

  • STATEMENT
    • 优点:记录的是执行的SQL,比较省空间,降低了主从复制时的IO开销
    • 缺点:由于记录的是SQL,所以MySQL多个节点之间复制的时候,特定场景下会导致数据不一致的情况
  • ROW
    • 优点:记录的是每条数据的变化,内容比较容易理解,不会有多个节点数据不一致的问题
    • 缺点:由于记录的是每行数据的变化,所以占用的空间较大,特别是对于字段较多的表的操作、大批量操作来说
  • MIXED
    • 两种模式的结合
    • MySQL会根据执行的具体SQL自动选择用STATEMENT或ROW
  • 如何选择?
    • STATEMENT:希望更好的性能,更小的主从复制开销,并且项目并未使用STATEMENT不支持的一些语法
    • ROW:希望更好的数据一致性、希望binlog的记录更加直观

主从复制的部署架构

一主一从,一主多从

在这里插入图片描述

级联复制

在这里插入图片描述

双主

在这里插入图片描述

MySQL复制

异步复制

  • 默认的复制方式
  • 主节点写入binlog文件后就返回客户端,不考虑binlog是否已完整同步到从节点、是否已完整存放到从节点的relay log中去
  • 优点:性能好,无阻塞
  • 缺点:如果主节点发生宕机,主节点上已提交的事务尚未同步到从节点,如果此时强行将从节点晋升为主节点,会导致新主节点数据不完整

半同步复制

  • 主库提交事务后,不立即返回,而是等待至少一个从库接收到binlog,并写入relay log才返回,从而保证主库出问题时,至少有一个从库的数据是完整的
  • 当等待超时时,会降低到异步复制,保证主库的正常更新

方案1:5.6及以前

在这里插入图片描述

  • 存在的问题:主库在等待从库确认ACK时,尽管没有返回给客户端,但是事务已被提交了。如果在binlog还未发送到从库瞬间,主库发生宕机,那么主从切换后新的主库无法读到尚未同步过来的数据

方案2:5.7开始

在这里插入图片描述

GTID复制

  • GTID(Global Transaction ID,全局事务标识)的简称,是对一个已提交事务的编号,并且全局唯一,一个事务对应一个GTID
  • GTID由UUID + TID组成,UUID是MySQL实例的唯一标识;TID则是事务在该实例上提交的顺序
    在这里插入图片描述

多源复制

在这里插入图片描述

  • 适用场景
    • 数据分析团队可能要分析多个微服务的数据,可使用多源复制,将多个微服务的数据复制到一个数据库中去,以便统一分析
    • 数据备份,一个大型项目往往有多个微服务、多个数据库实例,可以把多个数据库复制到一个数据库实例实现数据备份

Percona XtraDB Cluster(PXC)

Galera

  • Codeaship开源的MySQL集群方案
  • 在这里插入图片描述

概念

  • 组通信(Group Communication):定义了数据库节点间的通信模式,保证复制数据的一致性
  • Write-Set Replication API(wsrep API):为上层提供丰富的状态信息及回调函数,实现多点写入及同步复制
  • 写集(Write-Set):一个将要被复制的事务
    • 写集中不仅包括对事务影响的所有行的主键(组成写集的key),还包括事务产生的binlog(组成写集的data),key-data就是写集
    • key用来验证和其他事务没有冲突
    • data用来验证通过后应用与提交
  • 数据传输方式
    • SST全量传输,支持Mysqldump、rsync、XtraBackup三种方式
    • IST增量传输,支持XtraBackup
  • 使用端口
    • 3306,MySQL对外服务的端口号
    • 4444,SST使用的端口
    • 4567,组成员之间通信的端口
    • 4568,IST使用的端口

http://www.ppmy.cn/news/73709.html

相关文章

C++源码分析完美转发

C源码分析完美转发 完美转发作用&#xff1a; 可以保持实参数据在函数中的左值或者右值类型。 不使用完美转发的后果 #include<iostream> using namespace std;// 容器里面元素的类型 class A { public:A() {}// 带左值引用参数的赋值函数A& operator(const A&…

软件之禅(一)Hello,World!

黄国强 2023/5/19 近半年比较空&#xff0c;思考多了一点。 之前工作比较忙&#xff0c;而且工作中遇到的问题都能用自己掌握的方法应付。这样思想就懈怠了。 个人打算写一个系列文章&#xff0c;试图用第一性原理来把我自己掌握的知识梳理一遍&#xff0c;看看是否能更深入的…

计算机视觉的应用6-利用VGG模型做毕加索风格图像迁移

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下计算机视觉的应用5-利用VGG模型做毕加索风格图像迁移&#xff0c;本文将利用VGG模型实现毕加索风格图像迁移的方法。首先&#xff0c;我们将简要说明图像风格迁移的原理&#xff0c;然后使用PyTorch框架&#xff0c…

Redis哨兵集群搭建及其原理

Redis哨兵集群搭建及其原理 1.Redis哨兵1.1.哨兵原理1.1.1.集群结构和作用1.1.2.集群监控原理1.1.3.集群故障恢复原理1.1.4.小结 2.搭建哨兵集群2.1.集群结构2.2.准备实例和配置2.3.启动2.4.测试 3.RedisTemplate3.1.引入依赖3.2.配置Redis地址3.3.配置读写分离 1.Redis哨兵 R…

数据库相关知识

一.1 数据库 与Sybase不同&#xff0c;一个用户就对应于一个数据库。 create user CBMAIN identified by "sunline" default tablespace CBMAIN_DATA  -- 表空间 temporary tablespace CBMAIN_TEMP; -- 临时表空间 一.2 表空间 表空间由一个或多个物理文件组成&…

【新星计划】数据库 排名函数 初识

数据库 排名函数 初识 查询排序初识排名函数row_number()rank()dense_rank()ntile()percent_rank() 开窗函数为聚合函数使用开窗函数 小结 查询排序 在日常工作中&#xff0c;我们对所有需要的数据都会进行一个排序操作&#xff0c;以获得我们最需要的数据。 排序指令 order …

联想首次展示全栈算力方案服务,品牌换新亮相

1、联想算力&#xff0c;第一次真正被所有人感知。 2、基于软硬服一体化的优势&#xff0c;联想打造了丰富多样的四维算力服务&#xff0c;即融合化、场景化、订阅化、绿色化&#xff0c;可以满足不同企业、不同行业的定制化需求。 5月20日&#xff0c;主题为“联想方案服务&am…

就业内推 | 应届生专场,有华为、思科认证优先,六险一金

01 金科 &#x1f537;招聘岗位&#xff1a;网络工程师 &#x1f537;职责描述&#xff1a; 1、为银行、企业客户提供技术服务&#xff08;包括驻场支持和现场技术支持&#xff09;&#xff1b; 2、驻客户现场配合客户完成思科、华三、华为主流网络设备的配置、管理&#xff1…