全服不停机数据库水平扩容方案

2024-02-26 10:48

本文主要是介绍全服不停机数据库水平扩容方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本次目标:

全服不停机情况下在线扩容数据分库

280c362b31a99e9dee57428d93948b67.png

不停机变更为

ab94e0933269b12906e5b4171abbeb75.png

方案已有的基础:

具有分库信息登记表,应用启动过程已具备动态读取分库信息并建立动态数据源的能力,已实现分库

方案1:

1、运维人员准备数据库实例,克隆数据库模板,建立好分库

2、分库连接信息 配置到 数据库信息登记表中,状态为 未就绪(这就避免了此库被分配出去)

3、滚动重启全部应用容器(应用集群保证了客户端无感知),重启完毕后修改数据库列表为就绪状态,可以接收新数据

4、本方案关键在于 “滚动”两个字

方案2:

数据源列表里设计一个是否就绪的开关列,定时任务动态建立完毕连接池后,更改开关状态为就绪,开始接收新数据。

步骤:

1、zk上建立一个目录,应用启动后注册自己的ip信息和数据分库就绪【重启的都是就绪】的信息到目录下,为临时节点

2、运维人员准备数据库实例,克隆数据库模板,建立好分库

3、分库连接信息 配置到 数据分库信息注册表中,状态为 未就绪(这就避免了此库被分配出去),同时更新zk中所有应用节点为DB未就绪状态

4、应用层面的定时检测任务,发现列表中有待初始化的新数据库

5、定时任务初始化新数据源,添加到Spring动态数据源中

6、定时任务更新zk中自己所在应用的状态为DB连接池已就绪

7、BOSS系统定时任务检查ZK中所有应用的状态是否已完成变更,如果所有已就绪,则更新数据库列表新数据源为 已就绪 状态,开始接受新数据。

难点:

1、k8s中容器的数量很多,如何保证每个容器都准备就绪了?通过zk中登记的状态。

2、为了降低难度,在数据库扩容期间,k8s的容器不要进行扩容,要保持集群稳定状态。

3、步骤较多,为了防止人为出错,要开发相应的界面,按流程一步一步进行,每一步会自动检测是否就绪,上一步没有完成期间(系统定时检测或者按钮检测),无法进入到下一步的界面。

4、如果扩容期间,容器挂了又自动产生一个新的,这时候 新容器的状态是准备就绪状态

这篇关于全服不停机数据库水平扩容方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/748602

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

HDFS—集群扩容及缩容

白名单:表示在白名单的主机IP地址可以,用来存储数据。 配置白名单步骤如下: 1)在NameNode节点的/opt/module/hadoop-3.1.4/etc/hadoop目录下分别创建whitelist 和blacklist文件 (1)创建白名单 [lytfly@hadoop102 hadoop]$ vim whitelist 在whitelist中添加如下主机名称,假如集群正常工作的节

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

JavaFX应用更新检测功能(在线自动更新方案)

JavaFX开发的桌面应用属于C端,一般来说需要版本检测和自动更新功能,这里记录一下一种版本检测和自动更新的方法。 1. 整体方案 JavaFX.应用版本检测、自动更新主要涉及一下步骤: 读取本地应用版本拉取远程版本并比较两个版本如果需要升级,那么拉取更新历史弹出升级控制窗口用户选择升级时,拉取升级包解压,重启应用用户选择忽略时,本地版本标志为忽略版本用户选择取消时,隐藏升级控制窗口 2.

如何选择SDR无线图传方案

在开源软件定义无线电(SDR)领域,有几个项目提供了无线图传的解决方案。以下是一些开源SDR无线图传方案: 1. **OpenHD**:这是一个远程高清数字图像传输的开源解决方案,它使用SDR技术来实现高清视频的无线传输。OpenHD项目提供了一个完整的工具链,包括发射器和接收器的硬件设计以及相应的软件。 2. **USRP(Universal Software Radio Periphera

深入理解数据库的 4NF:多值依赖与消除数据异常

在数据库设计中, "范式" 是一个常常被提到的重要概念。许多初学者在学习数据库设计时,经常听到第一范式(1NF)、第二范式(2NF)、第三范式(3NF)以及 BCNF(Boyce-Codd范式)。这些范式都旨在通过消除数据冗余和异常来优化数据库结构。然而,当我们谈到 4NF(第四范式)时,事情变得更加复杂。本文将带你深入了解 多值依赖 和 4NF,帮助你在数据库设计中消除更高级别的异常。 什么是