【MySQL】聊聊数据库高可用

对于任何一个互联网公司来说,必定涉及到存储系统,而一般主流的使用MySQL进行存储数据,但是如果只是部署一台数据库,数据丢失的话,其实没有办法进行有效的恢复,那么就会造成一定的损失。要么就是直接的损失,比如针对对账、支付系统,一旦数据金额不对,那么影响非常大。另一种是由于数据系统出现故障,导致业务受到影响。

在分布式系统中,为了实现数据的高可用,一般的方式就是采用数据复制、分片。说白了就是将一份数据同时存储多份,副本可以提供读写功能,或者只提供备份功能。

数据备份和恢复

全量备份

全量备份其实就是将从数据开始存储到现在时间点 全部数据进行备份。然后出现数据问题的时候,在执行全量备份的SQL文件。
mysql提供的 mysqldump 就是执行全量备份的。
我使用的是8.0 一直执行报错。

mysqldump -uroot -prootroot --all-databases > /tmp/all.sql

全量备份虽然可以保存某一时刻之前的所有数据,但是由于保存的是全部的数据,所以进行恢复的时候,对于数据库服务器的CPU、IO都会占用比较高。并且之后新增加的数据无法进行恢复。所以需要增量备份。

增量备份

增量备份其实就是试试备份,使用的就是bin log文件。mysql的每次更新数据操作,都会记录到Binlog中。并且binlog可以进行回放的。

show VARIABLES like '%log_bin%';

在这里插入图片描述
可以看到默认是开启binlog的。还有对应binlog的存储地址,索引位置。

show master status;

显示正在写入的binlog文件,当前位置。
在这里插入图片描述
所以配合使用全量+增量备份,可以保证数据即使丢失,也可以进行恢复。

  • 不要把数据都只存储在一个服务器上。
  • 回放binlog文件,时间点稍微提前一点。

配置MySQL HA实现高可用

上述虽然使用全量和增量的备份方式,但是当出现数据故障的时候,如果在去进行数据恢复,这个时间是不可预估的。所以更好的方式是同时启用备用库,实时同步主库的binlog文件。一旦主库宕机,立马切到备用库。这就是MySQL的HA方案。

更新数据流程

  • 主库进行更新数据然后写入bin log
  • 主库更新存储引擎中的数据
  • 返回客户端成功响应
  • 主库把binlog复制从库
  • 从库回放binlog,更新存储引擎中数据。

正常情况下,主从之间的延迟大概在毫秒级别,但是当出现主从之间数据延迟过高的时候,从库就获取不到最新的数据。并且一般数据库都是先繁忙,然后性能下降,最终宕机。这种情况下,如果我们直接切换从库,那么从库的数据就可能丢失部分数据。并且后续没有办法进行恢复,因为数据是冲突的。

所以在主库宕机并且主从有延时的情况下,是切换到从库继续提供服务,还是为了保证数据一致性,不切,是一个权衡。
也就是数据一致性和可用性之前权衡,则中的方式也有,但是需要主库写完从库之后,在返回客户端成功写入数据。如果一个从库的话,可能回阻塞。所以一般就是采用2台从库,一台主库。

在这里插入图片描述

小结

本篇主要介绍了数据恢复,全量和增量复制,高可用依靠的就是数据复制,数据复制其实就是将数据从一台复制到另一台。而在复制的过程中,选择同步复制、还是异步复制。等都需要结合业务进行选择。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

西工大 ASLP 实验室在 WeNet 中开源基于 CPPN 的神经网络热词增强语音识别方案

语境偏置(Contextual biasing)旨在将语境知识集成到语音识别(ASR)系统中,以提高在相关领域词汇(俗称“热词”)上的识别准确率。在许多ASR场景中,待识别语音中可能会包含训练数据中数…

设定excel导出时单元格的格式

一、需求 要求excel导出时,对应列里面的内容格式为日期,数值格式并有精度要求 ,如下图: 使用alibaba,easyexcel,默认的导出数据格式为文本,excel显示为常规,使用数据规范注解Number…

Android 官方屏幕适配之ScreenMatch

背景: Android 项目的一个app需要适配手机平板,为了一套UI和可以适配2个不同屏幕,记录一个适配的技巧: 前提,使用这个框架:GitHub - wildma/ScreenAdaptation: :fire:一种非常好用的 Android 屏幕适配——…

udev自动创建设备节点的机制

流程框图如下 自动创建 1 内核检测到设备插入后,会发送一个uevent事件到内核中,并提供有关硬件设备的信息。 2 udevd守护程序收到uevent事件后,创建一个设备类,(向上提交目录信息),会在内核中…

go初识iris框架(七) - 实战资源导入和项目框架搭建

实战项目框架搭建 如下是项目框架搭建后的说明: config::项目配置文件及读取配置文件的相关功能controller:控制器目目录,项目各个模块的控制器及业务逻辑处理的所在目录datasource:实现mysql连接和操作、封装操作mysql数据库的目录。model:数据实体目…

人工智能:神经细胞模型到神经网络模型

人工智能领域中的重要流派之一是:从神经细胞模型(Neural Cell Model)到神经网络模型(Neural Network Model)。 一、神经细胞模型 第一个人工神经细胞模型是“MP”模型,它是由麦卡洛克、匹茨合作&#xff0…

复制tr的一行数据或者复制数据使用,使用jq和php

效果图&#xff1a; 2.Html <!--复制的tr数据&#xff0c;s----------------------------------------------------------------------------------------------->{foreach from$arrs keykk itemvv} <tr><td style"text-align:center;" >1</t…

【工作记录】MQTT介绍、安装部署及springboot集成@20230912

背景 近期公司可能会有物联网设备相关项目内容&#xff0c;提前对用到的mqtt协议做预研和初步使用。 最初接触到mqtt协议应该是早些年的即时通讯吧&#xff0c;现在已经是物联网设备最热门的协议了。 作为记录&#xff0c;也希望能帮助到需要的朋友。 MQTT介绍 《MQTT 协议规…

84 # koa 实现文件上传功能

下面使用实现文件上传功能&#xff0c;先新建文件夹&#xff0c;结构如下&#xff1a; index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-…

java企业数据管理系统

项目介绍 此项目为企业数据管理系统的后端部分&#xff0c;前端部分请参考vue-admin&#xff0c;项目实现了菜单管理、用户管理、角色管理和权限管理四个基础模块&#xff0c;前端菜单管理结合动态路由可自由添加菜单。结合Shiro权限管理实现了菜单和按钮的权限控制。 ❝ 前端…

Revit SDK 介绍:CurtainWallGrid 幕墙网格

前言 这个例子介绍如何创建幕墙&#xff0c;以及如何通过 API 编辑幕墙。 内容 运行效果&#xff1a; 创建幕墙 幕墙在 Revit 体系里面属于墙的一种&#xff0c;因此&#xff0c;它对应的 API 类型仍然为 Wall&#xff0c;只是类型有差异。 // WallGeometry::CreateCurt…

Docker容器技术实战-1

1.docker容器 docker就好比传统的货运集装箱 每个虚拟机都有独立的操作系统&#xff0c;互不干扰&#xff0c;在这个虚拟机里可以跑任何东西 如应用 文件系统随便装&#xff0c;通过Guest OS 做了一个完全隔离&#xff0c;所以安全性很好&#xff0c;互不影响 容器 没有虚拟化…

数据结构与算法(一)数组的相关概念和底层java实现

一、前言 从今天开始&#xff0c;笔者也开始从0学习数据结构和算法&#xff0c;但是因为这次学习比较捉急&#xff0c;所以记录的内容并不会过于详细&#xff0c;会从基础和底层代码实现以及力扣相关题目去写相关的文章&#xff0c;对于详细的概念并不会过多讲解 二、数组基础…

【数据结构】树的基础知识及三种存储结构

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

科教兴国 | 拓世集团携手中国航天广电集团,打造《AI+教育平台》

在这个时代&#xff0c;人工智能的奇迹交织成一片璀璨的星河。在这片星河中&#xff0c;各大企业如同星辰&#xff0c;闪烁着探索的光芒&#xff0c;寻找着那些志同道合的伙伴。我们并肩飞翔&#xff0c;穿越信息的海洋&#xff0c;共同描绘出未来的蓝图。每一次合作&#xff0…

GB28181学习(三)——心跳保活

心跳保活 要求&#xff1a; 1. 当原设备发现工作异常时&#xff0c;应立即向本SIP监控域的SIP服务器发送状态信息&#xff1b; 2. 无异常时&#xff0c;定时向本SIP监控域的SIP服务器发送状态信息&#xff1b; 3. 状态信息报送采用**MESSGAE**方法&#xff1b; 4. SIP设备宜在…

基于YOLOv8模型的80类动物目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要&#xff1a;基于YOLOv8模型的80类动物目标检测系统可用于日常生活中检测与定位车辆目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的目标检测&#xff0c;另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测算法训练数…

使用 YCSB 和 PE 进行 HBase 性能压力测试

HBase主要性能压力测试有两个&#xff0c;一个是 HBase 自带的 PE&#xff0c;另一个是 YCSB&#xff0c;先简单说一个两者的区别。PE 是 HBase 自带的工具&#xff0c;开箱即用&#xff0c;使用起来非常简单&#xff0c;但是 PE 只能按单个线程统计压测结果&#xff0c;不能汇…

Linux--进程间通讯--FIFO(open打开)

1. 什么是FIFO FIFO命名管道&#xff0c;也叫有名管道&#xff0c;来区分管道pipe。管道pipe只能用于有血缘关系的进程间通信&#xff0c;但通过FIFO可以实现不相关的进程之间交换数据。FIFO是Linux基础文件类型中的一种&#xff0c;但是FIFO文件在磁盘上没有数据块&#xff0c…

2011-2022年北大法宝省市县环保行政处罚数据

2011-2022年北大法宝省市县环保行政处罚数据 1、时间&#xff1a;2011-2022年 2、范围&#xff1a;全国各省份、各城市、各区县 3、来源&#xff1a;北大法宝 4、数据指标&#xff1a;地区代码、地区名称、地区等级、所属省份、所属城市、处罚年份、主题分类、案件数目 5、…