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

news2024/11/17 14:21:45

主从复制

读写分离

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

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.coloradmin.cn/o/554929.html

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

相关文章

【多线程进阶二】JUC工具类 线程安全的集合类 死锁

目录 一、JUC工具类 🍅1、Callable接口 🍅2、ReentrantLock 🍅3、原子类 🍅4、Semaphore信号量 🍅5、CountDownLatch 二、线程安全的集合类 ​🍅1、多线程环境下,怎么使用线程安全…

第十三届蓝桥杯国赛JavaB组题解

A. 重合次数 思路: 枚举不同的时刻,判断哪些时刻秒针和分针表示的数字是相同的。这道题坑就坑在:xx:59:59 xx:00:00分针和时。也就是说一个小时会重叠两次。 题目要求是分钟和秒钟的重叠次数,故时钟,分钟,秒钟同时重叠的次数不算(这题还是有点咬文嚼字了…

MySQL---事务

1. 事务操作 开启事务:Start Transaction 任何一条DML语句(insert、update、delete)执行, 标志事务的开启命令:BEGIN 或 START TRANSACTION 提交事务:Commit Transaction 成功的结束,将所有的DML语句操作历史记录…

G2O学习使用

g2o全称是General Graph Optimization,也就是图优化,我们在做SLAM后端或者更加常见的任何优化问题(曲线拟合)都可以使用G2O进行处理。 就经验而言,solvers给人的感觉是大同小异,而 types 的选取&#xff0…

C语言小游戏——扫雷

前言 结合前边我们所学的C语言知识,本期我们将使用C语言实现一个简单的小游戏——扫雷 目录 前言 总体框架设计 多文件分装程序 各功能模块化实现 初始化棋盘 棋盘打印 埋雷 判赢与排雷 游戏逻辑安排 总结 总体框架设计 和三子棋相同,游戏开始时…

32岁测试工程师,陷入中年危机,最终我裸辞了....

前言 今年32岁,我从公司离职了,是裸辞。 前段时间,我有一件事情一直憋在心里很难受,想了很久也没找到合适的人倾诉,就借着今天写出来。 我一个十几年IT经验,七年测试经验的职场老人,我慢慢涨…

02 Android开机启动之BootLoader及kernel的启动

Android开机启动之BootLoader及kernel的启动 1、booloader的启动流程 第一阶段:硬件初始化,SVC模式,关闭中断,关闭看门狗,初始化栈,进入C代码 第二阶段:cpu/board/中断初始化;初始化内存以及flash,将kernel从flash中拷贝到内存中,执行bootm,启动内核 2、kernel的启…

学习如何将Jenkins与UI测试报告完美整合,事半功倍,轻松获取高薪职位!

目录 引言 (一)在本地整合出报告 1.在cmd分别安装pytest和allure-pytest 2.进入需要执行的代码所在的路径 3.运行测试报告,代码如下 4.解析此json文件,代码如下(新打开cmd进入路径) 5.打开此HTML文件…

包管理工具

包 package,代表了一组特定功能的源码集合。 包管理工具 管理包的应用软件,可以对包进行下载安装、更新、删除、上传等操作。 借助包管理工具,可以快速开发项目,提升开发效率。 常用包管理工具 npm(nodejs官方内…

百度API实现自动写诗

作者介绍 张琪,男,西安工程大学电子信息学院,2022级研究生 研究方向:机器视觉与人工智能 电子邮件:3126743452qq.com 王泽宇,男,西安工程大学电子信息学院,2022级研究生&#xff0…

Spring——Spring_IOC

1.Spring_IOC概念引入 控制反转 2.Spring_IOC代码测试 IOC代码演示 控制反转:就是创建对象的权力交给了容器 1.创建一个接口,定义一个抽象方法 package org.example;public interface Empdao {int addemp(); } 2.创建一个实现类,实现这…

两台电脑之间怎么互相传文件?

​随着技术的发展,我们似乎可以从家中或工作电脑远程访问另一台电脑。同时,一些用户也在想,“我能不能把文件从一台电脑远程传输到另一台电脑,这样我就可以在本地电脑上随心所欲地查看和编辑文件了”。 这个问题的答案是…

Android自定义一个省份简称键盘

hello啊各位老铁,这篇文章我们重新回到Android当中的自定义View,其实最近一直在搞Flutter,初步想法是,把Flutter当中的基础组件先封装一遍,然后接着各个工具类,列表,网络,统统由浅入…

PostgreSQL实战之物理复制和逻辑复制(八)

目录 PostgreSQL实战之物理复制和逻辑复制(八) 8 级联复制 8.1 级联复制物理架构 8.2 级联复制部署 PostgreSQL实战之物理复制和逻辑复制(八) 8 级联复制 实际上PostgreSQL支持备库既可接收主库发送的将WAL,也支持…

Java泛型基本知识附面试题

一次平平无奇的面试 为什么要写这篇文档&#xff0c;主要就是在字节二面的时候&#xff0c;面试官提了这么一个问题 面试官&#xff1a;Java中的List<Integer>里有可能存String类型元素吗&#xff1f; 当时的我&#xff1a;应该…不可以吧&#xff0c;好像编译器会报错…

2023口腔护理行业分析:市场需求多元化,细分市场持续多变

随着人们生活水平的提高以及口腔护理意识的提升&#xff0c;消费者对于口腔护理的诉求愈发多样化&#xff0c;对于与此相关的产品&#xff0c;包括牙膏、牙刷、牙齿美白产品、漱口水、牙线等产品的需求也日益提高&#xff0c;在这种情况下&#xff0c;口腔护理相关细分产品的销…

软件研发管理高效的关键:11项自动化功能

1、自动锁定需求缺陷 为了提高用户需求分析质量&#xff0c;尽早发现需求缺陷&#xff0c;CoCode开发云特开发了需求分析工具&#xff0c;使用AI&#xff0c;通过需求测试和一致性检测&#xff0c;能够在几分钟内快速分析用户需求缺陷&#xff0c;如歧义、重复、遗漏、不一致和…

深度学习神经网络学习笔记-多模态方向-09-VQA: Visual Question Answering

摘要 -我们提出了自由形式和开放式视觉问答(VQA)的任务。给定一张图像和一个关于图像的自然语言问题&#xff0c;任务是提供一个准确的自然语言答案。镜像现实场景&#xff0c;比如帮助视障人士&#xff0c;问题和答案都是开放式的。视觉问题有选择地针对图像的不同区域&#…

nodejs+vue飞机机票在线预订票网站

本机票预订系统以vue作为框架&#xff0c;b/s模式以及MySql作为后台运行的数据库&#xff0c;同时使用Tomcat用为系统的服务器。本系统主要包括首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;机票类型管理&#xff0c;机票信息管理&#xff0c;订票信息管理&#x…

STM32F4_DMA直接存储器详解

目录 1. 什么是DMA 2. DMA的主要特性 3. DMA功能 3.1 DMA功能框图 3.2 DMA事务 3.3 通道选择 3.4 仲裁器 3.5 DMA数据流 3.6 源、目标和传输模式 3.6.1 外设到存储器模式 3.6.2 存储器到外设模式 3.6.3 存储器到存储器模式 3.7 指针递增 3.8 DMA内存占用 3.9 存…