当前位置:首页 > 科技  > 软件

数倍数据平滑扩容迁移方案

来源: 责编: 时间:2023-11-14 09:08:50 188观看
导读首先我们先来看下数据库的高可用一般都是怎么实现的。我们还是借用图来说明。真想手绘。图片如上图所示,两个相互同步的主库使用相同的虚拟IP,当主库挂掉的时候,虚拟IP自动漂移到另外一台主库,整个过程用户是无感知的。使

首先我们先来看下数据库的高可用一般都是怎么实现的。我们还是借用图来说明。真想手绘。ogQ28资讯网——每日最新资讯28at.com

图片图片ogQ28资讯网——每日最新资讯28at.com

如上图所示,两个相互同步的主库使用相同的虚拟IP,当主库挂掉的时候,虚拟IP自动漂移到另外一台主库,整个过程用户是无感知的。使用双主同步+keepalived+虚ip的方式进行。ogQ28资讯网——每日最新资讯28at.com

ogQ28资讯网——每日最新资讯28at.com

如果遇到数据暴增,我们怎么办?ogQ28资讯网——每日最新资讯28at.com

我们可以通过水平切分。ogQ28资讯网——每日最新资讯28at.com

图片图片ogQ28资讯网——每日最新资讯28at.com

上图所示,用户库user分布在两台服务器上,ip0和ip1。通过用户取模得方式,模2余0到ip0的机器上,反之到ip1的机器上,同时ip0和ip1并行做了双主同步,这样做到了水平切分和高可用。ogQ28资讯网——每日最新资讯28at.com

ogQ28资讯网——每日最新资讯28at.com

新的问题来了,分成n库以后,随着数据量的不断增加,要增加到2*n库的时候,数据如何扩容,数据如何平滑迁移,如何对外提供服务,保证数据的可用性?(一连串的灵魂拷问)ogQ28资讯网——每日最新资讯28at.com

1.停服升级(暂时跳过)2.假设上面每个库ip0和ip1每个库都有1亿数据,如何平滑扩容,增加实例数,降低单库数据量呢?ogQ28资讯网——每日最新资讯28at.com

第一步:ogQ28资讯网——每日最新资讯28at.com

图片图片ogQ28资讯网——每日最新资讯28at.com

这样能保证原来的数据不变,还可以路由到原来的机器上。ogQ28资讯网——每日最新资讯28at.com

ogQ28资讯网——每日最新资讯28at.com

第二步:ogQ28资讯网——每日最新资讯28at.com

图片图片ogQ28资讯网——每日最新资讯28at.com

ogQ28资讯网——每日最新资讯28at.com

这里需要服务层重新reload,高级一点可以通过配置中心向服务层发信息,重新读取配置文件,重新初始化连接数据库。完成之后,数据库实例从2变成4个,过程在秒级完成。ogQ28资讯网——每日最新资讯28at.com

整个过程可以逐步重启,对服务的正确性和可用性完全没有影响:ogQ28资讯网——每日最新资讯28at.com

(a)即使%2寻库和%4寻库同时存在,也不影响数据的正确性,因为此时仍然是双主数据同步的;ogQ28资讯网——每日最新资讯28at.com

(b)即使%4=0与%4=2的寻库落到同一个数据库实例上,也不影响数据的正确性,因为此时仍然是双主数据同步的;ogQ28资讯网——每日最新资讯28at.com

ogQ28资讯网——每日最新资讯28at.com

上面对数据库实例进行了扩展,但是数据的数量并没有降低,我们还需要再做一步。ogQ28资讯网——每日最新资讯28at.com

图片图片ogQ28资讯网——每日最新资讯28at.com

ogQ28资讯网——每日最新资讯28at.com

ogQ28资讯网——每日最新资讯28at.com

有这些一些收尾工作:ogQ28资讯网——每日最新资讯28at.com

(a)把双虚拟ip修改回单虚拟ip;ogQ28资讯网——每日最新资讯28at.com

(b)解除旧的双主同步,让成对库的数据不再同步增加;ogQ28资讯网——每日最新资讯28at.com

(c)增加新的双主同步,保证高可用;ogQ28资讯网——每日最新资讯28at.com

(d)删除掉冗余数据,例如:ip0里%4=2的数据全部删除,只为%4=0的数据提供服务;ogQ28资讯网——每日最新资讯28at.com

这一步,数据库单实例数据量减半了。ogQ28资讯网——每日最新资讯28at.com

ogQ28资讯网——每日最新资讯28at.com

ogQ28资讯网——每日最新资讯28at.com

InnoDB引擎为什么高效?

技术上怎么控制并发操作?

-锁ogQ28资讯网——每日最新资讯28at.com

-数据多版本ogQ28资讯网——每日最新资讯28at.com

ogQ28资讯网——每日最新资讯28at.com

-简单暴力,任务执行过程的本质是串行的ogQ28资讯网——每日最新资讯28at.com

-出现了共享锁和排它锁ogQ28资讯网——每日最新资讯28at.com

 --共享锁(S锁),读取数据加S锁ogQ28资讯网——每日最新资讯28at.com

 --排他锁(X锁) 修改时加X锁ogQ28资讯网——每日最新资讯28at.com

共享锁和排他锁的区别?

-共享锁,读可以并行ogQ28资讯网——每日最新资讯28at.com

-排他锁跟任何锁互斥,读和写都不可以并行ogQ28资讯网——每日最新资讯28at.com

总结下:一但写数据没有完成,数据是不能被其他任务读取的,这对并发有着比较大的影响。ogQ28资讯网——每日最新资讯28at.com

有没有可能,进一步提高并发呢?ogQ28资讯网——每日最新资讯28at.com

ogQ28资讯网——每日最新资讯28at.com

数据多版本ogQ28资讯网——每日最新资讯28at.com

图片图片ogQ28资讯网——每日最新资讯28at.com

-核心原理ogQ28资讯网——每日最新资讯28at.com

 (1)写任务发生的时候,将数据克隆一份,以版本号区分ogQ28资讯网——每日最新资讯28at.com

 (2)写任务操作克隆的数据,直至提交ogQ28资讯网——每日最新资讯28at.com

 (3)读取数据还是旧版本上,不阻塞ogQ28资讯网——每日最新资讯28at.com

所以并发提高演进的思路ogQ28资讯网——每日最新资讯28at.com

1.普通锁,串行执行ogQ28资讯网——每日最新资讯28at.com

2.读写锁,读读可以并发ogQ28资讯网——每日最新资讯28at.com

3.数据多版本,读写都可以并发ogQ28资讯网——每日最新资讯28at.com

ogQ28资讯网——每日最新资讯28at.com

对应到innodb,是怎么处理的呢?

先了解三个概念:redo、undo、回滚段ogQ28资讯网——每日最新资讯28at.com

redo:数据库事务提交之后,必须将更新后的数据刷新到硬盘上,保证ACID原则。这里是随机读写的,如果来个事务就写一次,相当影响吞吐量。ogQ28资讯网——每日最新资讯28at.com

优化:将修改的行写到redo日志中,再定期刷新到硬盘中。这里的写日志是顺序写,可以提高性能。如果有一刻数据奔溃,可以读取redo日志恢复数据。ogQ28资讯网——每日最新资讯28at.com

undo:事务未提交时,可以将修改前的数据存在undo日志里,当崩溃或者事务回滚时,利用undo日志撤销修改。ogQ28资讯网——每日最新资讯28at.com

ogQ28资讯网——每日最新资讯28at.com

举例说明:ogQ28资讯网——每日最新资讯28at.com

-insert操作,undo日志存储的是PK(rowid),回滚时直接删除ogQ28资讯网——每日最新资讯28at.com

-update/delete操作,undo日志记录旧数据的row,回滚时直接恢复。ogQ28资讯网——每日最新资讯28at.com

回滚段:存储undo日志的地方,就是回滚段。ogQ28资讯网——每日最新资讯28at.com

ogQ28资讯网——每日最新资讯28at.com

Innodb是基于版本并发控制的存储引擎。ogQ28资讯网——每日最新资讯28at.com

MVCC就是通过“读取旧版本数据”来降低并发事务的锁冲突,提高任务的并发度。ogQ28资讯网——每日最新资讯28at.com

innodb为何能做到这么高的并发?ogQ28资讯网——每日最新资讯28at.com

回滚段的数据,也就是历史数据的快照,这些数不会被改变,select操作可以为所欲为的并发读取ogQ28资讯网——每日最新资讯28at.com

ogQ28资讯网——每日最新资讯28at.com

总结

(1)常见并发控制保证数据一致性的方法有锁,数据多版本;ogQ28资讯网——每日最新资讯28at.com

(2)普通锁串行,读写锁读读并行,数据多版本读写并行;ogQ28资讯网——每日最新资讯28at.com

(3)redo日志保证已提交事务的ACID特性,设计思路是,通过顺序写替代随机写,提高并发;ogQ28资讯网——每日最新资讯28at.com

(4)undo日志用来回滚未提交的事务,它存储在回滚段里;ogQ28资讯网——每日最新资讯28at.com

(5)InnoDB是基于MVCC的存储引擎,它利用了存储在回滚段里的undo日志,即数据的旧版本,提高并发;ogQ28资讯网——每日最新资讯28at.com

(6)InnoDB之所以并发高,快照读不加锁;ogQ28资讯网——每日最新资讯28at.com

(7)InnoDB所有普通select都是快照读;ogQ28资讯网——每日最新资讯28at.com

ogQ28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-24294-0.html数倍数据平滑扩容迁移方案

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 不要在按钮、链接或任何其他文本容器上使用固定的 CSS 高度或宽度

下一篇: 提升应用程序性能的利器:学习如何使用Celery进行分布式任务管理

标签:
  • 热门焦点
  • 红魔电竞平板评测:大屏幕硬实力

    红魔电竞平板评测:大屏幕硬实力

    前言:三年的疫情因为要上网课的原因激活了平板市场,如今网课的时代已经过去,大家的生活都恢复到了正轨,这也就意味着,真正考验平板电脑生存的环境来了。也就是面对着这种残酷的
  • 6月安卓手机性价比榜:Note 12 Turbo断层式碾压

    6月安卓手机性价比榜:Note 12 Turbo断层式碾压

    6月份有一个618,虽然这是京东周年庆的日子,但别的电商也都不约而同的跟进了,反正促销没坏处,厂商和用户都能满意。618期间一些产品也出现了历史低价,那么各个价位段的产品性价比
  • 8月总票房已突破10亿!《封神》第一:口碑已经成了

    8月总票房已突破10亿!《封神》第一:口碑已经成了

    8月5日消息,据灯塔专业版数据,截至8月5日9时35分,8月总票房(含预售)已突破10亿。其中,《封神》以大比分的优势领先。根据官方消息,目前该片总票房已经超过14.
  • JavaScript 混淆及反混淆代码工具

    JavaScript 混淆及反混淆代码工具

    介绍在我们开始学习反混淆之前,我们首先要了解一下代码混淆。如果不了解代码是如何混淆的,我们可能无法成功对代码进行反混淆,尤其是使用自定义混淆器对其进行混淆时。什么是混
  • 微信语音大揭秘:为什么禁止转发?

    微信语音大揭秘:为什么禁止转发?

    大家好,我是你们的小米。今天,我要和大家聊一个有趣的话题:为什么微信语音不可以转发?这是一个我们经常在日常使用中遇到的问题,也是一个让很多人好奇的问题。让我们一起来揭开这
  • OPPO K11搭载长寿版100W超级闪充:26分钟充满100%

    OPPO K11搭载长寿版100W超级闪充:26分钟充满100%

    据此前官方宣布,OPPO将于7月25日也就是今天下午14:30举办新品发布会,届时全新的OPPO K11将正式与大家见面,将主打旗舰影像,和同档位竞品相比,其最大的卖
  • 滴滴违法违规被罚80.26亿 共存在16项违法事实

    滴滴违法违规被罚80.26亿 共存在16项违法事实

    滴滴违法违规被罚80.26亿 存在16项违法事实开始于2121年7月,历经一年时间,网络安全审查办公室对“滴滴出行”网络安全审查终于有了一个暂时的结束。据“网信
  • 联想YOGA 16s 2022笔记本将要推出,屏幕支持触控功能

    联想YOGA 16s 2022笔记本将要推出,屏幕支持触控功能

    联想此前宣布,将于11月2日19:30召开联想秋季轻薄新品发布会,推出联想 YOGA 16s 2022 笔记本等新品。官方称,YOGA 16s 2022 笔记本将搭载 16 英寸屏幕,并且是一
  • DRAM存储器10月价格下跌,NAND闪存本月价格与上月持平

    DRAM存储器10月价格下跌,NAND闪存本月价格与上月持平

    10月30日,据韩国媒体消息,自今年年初以来一直在上涨的 DRAM 存储器的交易价格仅在本月就下跌了近 10%,此次是全年首次降价,而NAND 闪存本月价格与上月持平。市
Top