二十、数据库的高可用是怎么实现的?
高可用,即High Availability,是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。单机部署谈不上高可用,因为单点故障问题。高可用都是多个节点的,我们在考虑MySQL数据库的高可用的架构时,需要考虑这几个方面:
- 如果数据库节点宕机,需要尽快回复,保证业务不受宕机影响。
- 从数据库节点的数据,尽可能跟主节点数据实时保持一致,至少保证最终一致性。
- 数据库节点切换时,数据不能缺失。
1.1 主从或主主半同步复制
用双节点数据库,搭建单向或者双向的半同步复制。架构如下:
通常会和proxy、keepalived等第三方软件同时使用,即可以用来监控数据库的健康,又可以执行一系列管理命令。如果主库发生故障,切换到备库后仍然可以继续使用数据库。
这种方案优点是架构、部署比较简单,主机宕机直接切换即可。缺点是完全依赖于半同步复制,半同步复制退化为异步复制,无法保证数据一致性;另外,还需要额外考虑haproxy、keepalived的高可用机制。
1.2 半同步复制优化
半同步复制机制是可靠的,可以保证数据一致性的。但是如果网络发生波动,半同步复制发生超时会切换为异步复制,异复制是无法保证数据的一致性的。因此,可以在半同复制的基础上优化一下,尽可能保证半同复制。如双通道复制方案
- 优点:这种方案架构、部署也比较简单,主机宕机也是直接切换即可。比方案1的半同步复制,更能保证数据的一致性。
- 缺点:需要修改内核源码或者使用mysql通信协议,没有从根本上解决数据一致性问题。
1.3 高可用架构优化
保证高可用,可以把主从双节点数据库扩展为数据库集群。Zookeeper可以作为集群管理,它使用分布式算法保证集群数据的一致性,可以较好的避免网络分区现象的产生。
- 优点:保证了整个系统的高可用性,扩展性也较好,可以扩展为大规模集群。
- 缺点:数据一致性仍然依赖于原生的mysql半同步复制;引入Zookeeper使系统逻辑更复杂。
1.4 共享存储
共享存储实现了数据库服务器和存储设备的解耦,不同数据库之间的数据同步不再依赖于MySQL的原生复制功能,而是通过磁盘数据同步的手段,来保证数据的一致性。
DRBD磁盘复制
DRBD是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。主要用于对服务器之间的磁盘、分区、逻辑卷等进行数据镜像,当用户将数据写入本地磁盘时,还会将数据发送到网络中另一台主机的磁盘上,这样的本地主机(主节点)与远程主机(备节点)的数据就可以保证实时同步。常用架构如下:
当本地主机出现问题,远程主机上还保留着一份相同的数据,即可以继续使用,保证了数据的安全。
- 优点:部署简单,价格合适,保证数据的强一致性
- 缺点:对IO性能影响较大,从库不提供读操作
1.5 分布式协议
分布式协议可以很好解决数据一致性问题。常见的部署方案就是MySQL cluster,它是官方集群的部署方案,通过使用NDB存储引擎实时备份冗余数据,实现数据库的高可用性和数据一致性。如下:
- 优点:不依赖于第三方软件,可以实现数据的强一致性;
- 缺点:配置较复杂;需要使用NDB储存引擎;至少三节点;
二十、数据库的高可用是怎么实现的?相关推荐
- xen是服务器虚拟化,xen虚拟化实战系列(十二)之xen虚拟机高可用之在线迁移
xen虚拟化实战系列文章列表 xen虚拟化实战系列(十三)之xen虚拟机集中管理之convirt 1. 方案背景概述 本文是有对我们一个xen虚拟化生产环境将要改造的一个方案而来,在项目上线初期,没有 ...
- MySQL数据库的高可用方案总结
高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用.虽然互联网服务号称7*24小时不间断服务,但多多少少有一些时候服务不可用,比如某些时候网页打不开,百度不能搜索或者无法 ...
- Mysql数据库的高可用
本文来说下有关mysql数据库的高可用 文章目录 概述 主从或主主半同步复制 半同步复制优化 高可用架构优化 共享存储 分布式协议 本文小结 概述 高可用,即High Availability,是分布 ...
- 金仓数据库KingbaseES高可用概述(高可用性需求分析与架构确定)
本节将提供一个可以有效评估高可用性需求进而选择合适架构的步骤,步骤包括: 3.1. 调研高可用性需求 ¶ 3.2. 确定高可用性需求的方法 ¶ 3.2.1. 业务影响分析 ¶ 3.2.2. 停机代价 ...
- 家庭文件同步服务器,家庭网络使用 篇二:适合家用高可用分布式备份同步系统...
家庭网络使用 篇二:适合家用高可用分布式备份同步系统 2020-05-12 15:02:18 46点赞 463收藏 43评论 随着国内各种网盘的纷纷关闭,百度云的交钱才给速度,大家备份途径越来越单一了 ...
- 108.第十九章 MySQL数据库 -- MySQL高可用 Galera Cluster(十八)
6.3.3 Galera Cluster 6.3.3.1 Galera Cluster介绍 Galera Cluster:集成了Galera插件的MySQL集群,是一种新型的,数据不共享的,高度冗余的 ...
- oracle数据库的高可用r,Oracle高可用之dataguard
Oracle高可用之dataguard DataGuard是一种数据库级别的HA方案,最主要功能是冗灾.数据保护.故障恢复等. 在生产数据库的"事务一致性"时,使用生产库的物理全备 ...
- MySQL(11)数据库实现高可用架构之MMM
文章目录 一.MySQL MMM介绍 1.1 什么是 MMM? 1.2 MMM的组成 2.1 MySQL M搭建的步骤(理论) 2.1.1 搭建步骤 2.1.2故障测试 2.2 MySQL M搭建具体 ...
- MySQL(10)数据库实现高可用架构之MHA
文章目录 一.MySQL MHA介绍 1.1 什么是 MHA? 1.2 MHA 的组成 1) MHA Node(数据节点) 2) MHA Manager(管理节点) 1.3 MHA 的特点 二.MyS ...
- MySQL数据库的优化(下)MySQL数据库的高可用架构方案
[51CTO独家特稿]如果单MySQL的优化始终还是顶不住压力时,这个时候我们就必须考虑MySQL的高可用架构(很多同学也爱说成是MySQL集群)了,目前可行的方案有: 一.MySQL Cluster ...
最新文章
- Wireshark小技巧:将IP显示为域名
- c语言潮流计算验证30节点,C语言潮流计算研究报告.doc
- jQuery之父强烈推荐之jQuery实战
- 时间罗盘html源代码_重磅!Vue 3.0源代码公布后,究竟有哪些变更?
- editor多功能文本框在有些计算机上不能正常加载,解决方法,本人用的是把js调用方法放到body/body后面)...
- java数组如何相加_java数组排序,并将数组内的数据求和
- 三层交换机工作原理介绍
- ie浏览器升级_IE 被微软专家从浏览器里除名了,专家说它只是个兼容性解决方案...
- EntityFramework 实体拆分与表拆分
- [Oracle]如何查看一个数据文件是否是自动扩展
- Python的文件锁使用
- SSH框架电子商城-系统技术分析
- 在 GitHub 上创建一个 Swift 包:其实一点也不简单
- EMNLP21' | 细粒度情感分析新突破 —— 通过有监督对比学习方法学习隐式情感...
- flowable 控制台打印 sql 语句
- 学习笔记-行政区划匹配缺失补全
- php7.3手册_php7.3.8手册下载
- java实行图片上写字
- 实习连载日记4.1-每天都是愚人节
- 51单片机定时器/计数器