Shopee(https://shopee.com/)是东南亚和台湾地区领先的电子商务平台,覆盖新加坡、马来西亚、菲律宾、印度尼西亚、泰国、越南和台湾等七个市场。Shopee 母公司 Sea(https://seagroup.com/)为首家在纽约证券交易所上市的东南亚互联网企业。2015 年底上线以来,Shopee 业务规模迅速扩张,逐步成长为区域内发展最为迅猛的电商平台之一:
参考博客1给出了一种所谓的平滑帅气的秒级扩容的架构方案,但我个人却认为,这个看似没有什么问题的方案在实际中几乎没什么用处,业界也几乎不会用这种方案来进行扩容(分库分表)。为了便于说明这一点,本文先简单回顾下该方案,然后分析该方案为什么没有用,最后给出三种业界广泛使用的分库分表的平滑扩容方案。
这个你必须面对的事,就是当你已经弄好分库分表方案,测试也通过了,数据能均匀分布到各个库和表里去,而且接着你还通过双写方案上了系统,已经直接基于分库分表方案在搞了。
突然! 扩容了,扩容成6个库,每个库需要12个表,你怎么来增加更多库和表? 当你已经弄好分库分表方案,测试也通过了,数据能均匀分布到各个库和表里去,而且接着你还通过双写方案上了系统,已经直接基于分库分表方案在搞了。 需求来了~现在这些库和表又支撑不住了,要继续扩容,咋办?
李阳良,一面数据大数据部门负责人,九年互联网工作经验,对后台开发、大数据技术接触比较多。
上一篇文章《ShardingJdbc分库分表实战案例解析(上)》中我们初步介绍了使用ShardingJdbc实现订单数据分散存储的分库分表方法,在本篇文章中将重点介绍在不停服的情况下实现数据分片存储的在线扩容。具体将以如下两个常见的场景进行演示:1)、尚未进行分库分表的单库单表系统如何平稳的实施分库分表方案;2)、已经实施过分库分表方案的系统,由于数据量的持续增长导致原有分库分表不够用了,需要二次扩容的情况。
分布式系统中我们会对一些数据量大的业务进行分拆,如:用户表,订单表。因为数据量巨大一张表无法承接,就会对其进行分库分表。小伙伴们可以去看一下《分库分表?如何做到永不迁移数据和避免热点?》
作者简介 荣华,携程高级研发经理,专注于后端技术项目研发管理。 军威,携程软件技术专家,负责分布式缓存系统开发 & 存储架构迁移项目。 金永,携程资深软件工程师,专注于实时计算,数据分析工程。 俊强,携程高级后端开发工程师,拥有丰富SQLServer使用经验。 前言 携程酒店订单系统的存储设计从1999年收录第一单以来,已经完成了从单一SQLServer数据库到多IDC容灾、完成分库分表等多个阶段,在见证了大量业务奇迹的同时,也开始逐渐暴露出老骥伏枥的心有余而力不足之态。基于更高稳定性与高效成本控制而设计
互联网系统,经常会有数据迁移的需求。系统从机房迁移到云平台,从一个云平台迁移到另一个云平台,系统重构后表结构发生了变化,分库分表,更换数据库选型等等,很多场景都需要迁移数据。
从 2009 年到 2021 年,从千万交易额到千亿交易额,双 11 已经开展了 12 年。如今,每年的双 11 以及一个月后的双 12,已经成为真正意义上的全民购物狂欢节。刚刚过去的 2021 年双 11,就有超过 8 亿消费者参与。
有赞是一家商家服务公司,向商家提供强大的基于社交网络的,全渠道经营的 SaaS 系统和一体化新零售解决方案。随着近年来社交电商的火爆,有赞大数据集群一直处于快速增长的状态。在 2019 年下半年,原有云厂商的机房已经不能满足未来几年的持续扩容的需要,同时考虑到提升机器扩容的效率(减少等待机器到位的时间)以及支持弹性伸缩容的能力,我们决定将大数据离线 Hadoop 集群整体迁移到其他云厂商。
但一旦涉及到分库分表,就会引申出分布式系统中唯一主键ID的生成问题,永不迁移数据和避免热点的文章中要求需要唯一ID的特性:
分布式系统中我们会对一些数据量大的业务进行分拆,如:用户表,订单表。因为数据量巨大一张表无法承接,就会对其进行分库分表。小伙伴们可以去看一下
面试官:如何来设计动态扩容的分库分表方案? 面试官心理剖析: 这个问题主要是看看你们公司设计的分库分表设计方案怎么样的?你知不知道动态扩容的方案?
不同场景下 MySQL 的迁移方案 一 目录 一 目录 二 为什么要迁移 三 MySQL 迁移方案概览 四 MySQL 迁移实战 4.1 场景一 一主一从结构迁移从库 4.2 场景二 一主一从结构迁移指定库 4.3 场景三 一主一从结构双边迁移指定库 4.4 场景四 一主一从结构完整迁移主从 4.5 场景五 双主结构跨机房迁移 4.6 场景六 多实例跨机房迁移 五 注意事项 六 技巧 七 总结 二 为什么要迁移 MySQL 迁移是 DBA 日常维护中的一个工作。迁移,究其本义,无非是把实际存在的物体挪走,保
本文介绍了如何在 TiDB 中使用 TiSpark 进行 ETL 流程的简化和优化,并分享了在易果集团的具体实践。通过使用 TiSpark,可以大大简化 TiDB 的数据流程,提高数据处理的效率,并确保数据的一致性和可靠性。同时,TiDB 的官方支持也在持续增强,未来将能够更好地满足企业的需求。
卖羊肉串首先就得有羊肉,于是我就联系了很多养殖场,我又是一个比较负责任的人,为了保证羊肉的质量,我就去考察了一家又一家养殖场,同时我也是个“小气”的人,所以我考察过程中,和对方谈判、比价,最终选了一个养殖场作为我的羊肉供应商,为我提供羊肉。
整个迁移过程,既不能长时间停服,也不能丢数据。如何不停机安全地迁移数据更换数据库。
原文出处: 温国兵(@dbarobin) 一 为什么要迁移 MySQL 迁移是 DBA 日常维护中的一个工作。迁移,究其本义,无非是把实际存在的物体挪走,保证该物体的完整性以及延续性。就像柔软的沙滩上,两个天真无邪的小孩,把一堆沙子挪向其他地方,铸就内心神往的城堡。 生产环境中,有以下情况需要做迁移工作,如下: 磁盘空间不够。比如一些老项目,选用的机型并不一定适用于数据库。随着时间的推移,硬盘很有可能出现短缺; 业务出现瓶颈。比如项目中采用单机承担所有的读写业务,业务压力增大,不堪重负。如果 IO 压
在上一篇中我们讲了通用优惠券系统的设计,这篇主要是以优惠券重构后,我们现有系统接入到该通用优惠券系统过程中遇到的数据迁移与一致性问题相关的思考与实践。我们早期的优惠券系统使用的是ckv的存储,后来为了统一,全部改为使用redis储存了,这里首先一个数据迁移点是 ckv----->redis的迁移,另一个数据迁移点是上海redis----->深圳redis。之所以会有redis --->redis的迁移,主要是刚开始我们redis是和别人混部,选择了一个上海的机房,由于整个服务几乎都部署在广深地区,所以需要迁回来,并且单独一个redis集群存储,不在混部。
当我们的应用升级时往往会伴随着数据库表结构的升级,此时就需要迁移数据库的表结构。一般我们会使用工具或者脚本来实现,手动操作毕竟有一定风险,要是能在应用启动时自动升级数据库表结构就好了!Flyway正是这么一款工具,通过Flyway和SpringBoot结合使用,在应用启动时就可以自动升级数据库表结构,非常方便,推荐给大家!
一面数据原有的技术架构是在线下机房中使用 CDH 构建的大数据集群。自公司成立以来,每年都保持着高速增长,业务的增长带来了数据量的剧增。
在星爷的《大话西游》中有一句非常出名的台词:“曾经有一份真挚的感情摆在我的面前我没有珍惜,等我失去的时候才追悔莫及,人间最痛苦的事莫过于此,如果上天能给我一次再来一次的机会,我会对哪个女孩说三个字:我爱你,如果非要在这份爱上加一个期限,我希望是一万年!”在我们开发人员的眼中,这个感情就和我们数据库中的数据一样,我们多希望他一万年都不改变,但是往往事与愿违,随着公司的不断发展,业务的不断变更,我们对数据的要求也在不断的变化,大概有下面的几种情况:
停机迁移包括停服迁移与非停服迁移,停服迁移是选择某一时间点流量最少时停止所有服务,并在最短时间内完成数据迁移,此时需要注意停服时间;非停服迁移,即停止所有写数据服务,查询服务并不停止,同样要注意停服时间,防止对生产环境有较大影响。停机迁移完成后,还需要进行数据核对,通常首先要校验迁移前后数据量是否一致,其次还可对迁移前后数据逐条进行校验,还可进行流量回放,保证迁移前后业务表现完全一致。
今天群里有人问起,刚好做过相关的工作,特此分享一下当时的工作内容和感受。 背景 大概说一下这个事情的背景。在2013年大概4月份,人人网打算做一次大规模的数据迁移——评论服务。所谓评论就是指各种资源下的“评论文字”,比如照片的评论、Blog的评论、分享的评论、音乐的评论…… 早期人人网的各个开发小组各自为政,每个团队几乎都实现了一个评论服务,有各自不同的功能和数据结构,但是大体上还算相似。当时,业务部门希望能够集中这些数据做一些统一的管理,比如权限管理(控制谁能看什么评论)、比如数据内容推荐(基于用户评论人
活动时间:2018年12月12日至2019年1月25日,每天两场秒杀,时间分别为:9:00-12:00,14:00-18:00。
在实际项目开发中,我们经常将Mysql作为业务数据库,ES作为查询数据库,用来实现读写分离,缓解Mysql数据库的查询压力,应对海量数据的复杂查询。
小红书是一个社区属性为主的产品,它涵盖了各个领域的生活社区,并存储海量的社交网络关系。
几年前我曾经服务过的一家电商公司,随着业务增长我们每天的订单量很快从30万单增长到了100万单,订单总量也突破了一亿。当时用的Mysql数据库。根据监控,我们的每秒最高订单量已经达到了2000笔(不包括秒杀,秒杀TPS已经上万了。秒杀我们有一套专门的解决方案,详见《秒杀系统设计~亿级用户》)。不过,直到此时,订单系统还是单库单表,幸好当时数据库服务器配置不错,我们的系统才能撑住这么大的压力。
flowable camunda activiti 三个框架都是从jbpm框架诞生出来的,先是有jbpm4,然后出来了一个activiti5,activiti5发展一段时间,又出来了一个Camunda。activiti5发展了4年,紧接着出来了一个flowable。本文重点对flowable camunda两个框架的功能对比。对比的camunda版本是7.10.0,flowable框架的版本是6.4.1.
计费组是为网易互娱产品提供统一登录和支付高效解决方案的公共支持部门,对内是互娱的各个游戏工作室,对外是国内外数百个渠道。由于业务场景的特殊性,我们为各个游戏产品部署了不同的应用服务,其中大产品环境独立,小产品集中部署。
转转二手交易网 —— 把家里不用的东西卖了变成钱,一个帮你赚钱的网站。由腾讯与 58 集团共同投资。为海量用户提供一个有担保、便捷的二手交易平台。转转是 2015 年 11 月 12 日正式推出的 APP,遵循“用户第一”的核心价值观,以“让资源重新配置,让人与人更信任”为企业愿景,提倡真实个人交易。
文章集中整理总结mysql分库分表开源产品,分布式数据库的设计,以及实际应用案例等相关内容,部分附上本文作者实际应用过程中的理解。
在进行版本升级时,Sql不兼容,数据库升级经常报错,需要重复对比哪里执行过了。这种问题如何解决?
零氪科技作为全球领先的人工智能与医疗大数据平台,拥有国内最大规模、体量的医疗大数据资源库和最具优势的技术支撑服务体系。多年来,零氪科技凭借在医疗大数据整合、处理和分析上的核心技术优势,依托先进的人工智能技术,致力于为社会及行业、政府部门、各级医疗机构、国内外医疗器械厂商、药企等提供高质量医疗大数据整体解决方案,以及人工智能辅助决策系统(辅助管理决策、助力临床科研、AI 智能诊疗)、患者全流程管理、医院舆情监控及品牌建设、药械研发、保险控费等一体化服务。
墨墨导读:本文是近期ScaleGrid发布的2019 PG趋势报告,从不同的角度解读了PostgreSQL如何在众多优秀的RDBMS中脱颖而出,原文:https://scalegrid.io/blog/2019-postgresql-trends-report-private-vs-public-cloud-migrations-database-combinations-top-reasons-used/(可复制在浏览器打开或点击“阅读原文”)。
因为我们的数据不是静态的,所以我们不能随便写个job迁移就好了。需要确保一些迁移上的标准
昨天做了一个数据迁移流程的优化,直到发生了一些严重的问题,才明显重视起来这个问题。
原文:http://www.enmotech.com/web/detail/1/758/1.html
随着近些年来内外部形势的剧烈变化及企业自身发展诉求,国内企业愈发重视基础软件的自主可控。特别是对于某些涉及国计民生的重点行业,监管层面也提出了非常明确的指导意见,在指定时间内完成技术改造。作为核心技术软件之一,数据库在其中无疑扮演着重要的角色,且具有非常高的复杂性。一方面是作为基础软件之一,数据库自身复杂度就比较高;另一方面近些年数据库技术发展迅猛,以分布式、多模、HTAP为代表新型数据库架构不断涌现。这些都会带来较高的复杂度,同时我们也看到国内数据库发展活跃、厂商产品能力参差不齐,用户在选型、研发、迁移、使用上面临诸多痛点。特别是在整体改造的最后阶段,涉及将系统从原有技术栈迁移到新技术栈,这其中蕴含了较多工作及风险。本文尝试从信创改造角度出发,重点谈在改造中往往处于最后改造的数据库部分,即所谓信创改造“最后一公里”所面临的痛点问题及可能解决思路。
MMM(Master-Master replication manager for MySQL)是一套支持双主故障切换和双主日常管理的脚本程序。MMM使用Perl语言开发,主要用来监控和管理MySQL Master-Master(双主)复制,可以说是mysql主主复制管理器。虽然叫做双主复制,但是业务上同一时刻只允许对一个主进行写入,另一台备选主上提供部分读服务,以加速在主主切换时刻备选主的预热,可以说MMM这套脚本程序一方面实现了故障切换的功能,另一方面其内部附加的工具脚本也可以实现多个slave的read负载均衡。MMMM是关于MySQL主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入)。这个套件也能对居于标准的主从配置的任意数量的从服务器进行读负载均衡,所以可以用它在一组居于复制的服务器启动虚拟IP,除此之外,它还有实现数据备份、节点之间重新同步功能的脚本。
1.上线同步程序:主要负责新老数据库之间的实时同步,分批同步,避免对线上数据库(新库)造成压力 ,验证数据一致,再进行下一步,否则(回滚策略是),修复同步程序,使其新旧库的数据一致
会员系统是一种基础系统,跟公司所有业务线的下单主流程密切相关。如果会员系统出故障,会导致用户无法下单,影响范围是全公司所有业务线。所以,会员系统必须保证高性能、高可用,提供稳定、高效的基础服务。
前言 MMM(Master-Master replication managerfor Mysql,Mysql主主复制管理器)是一套灵活的脚本程序,基于perl实现,用来对mysql replication进行监控和故障迁移,并能管理mysql Master-Master复制的配置(同一时间只有一个节点是可写的)。 MMM 优缺点 优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性。 缺点:Monitor节点是单点,可以结合Keepalived实现
MySQL数据库托管的一点感悟 开始之前,聊一点题外话,最近好像股市和基金都大跌,我自己买的股票和基金也都跌了。我本身没有这方面的经验,也是小白一个,但是感觉遇到了这种下跌,很容易让人崩溃。之前也有朋友买了很多,那天开玩笑对我说:中午跌的时候,他差点都跳楼了。😄 虽然是句玩笑话,但是从中能够感受到,大家还是很在意亏损的。 有调查显示,亏钱带来的厌恶是赚钱带来的快乐的2倍。举个例子就是:亏损1w块钱对你的影响需要你赚2w块钱才能抵消。我觉得普通人,如果不靠股市发财,就要做到对短期波动置之不理
每周六晚上我们几个小伙伴都会组织一个技术研讨会,就技术群里大家提出的几个有意思的问题做重点的讨论。主持人采用轮流主持的模式,本周由我负责组织和分享,这篇文章就是我们当时研习小组讨论的纪要。想要加入的小伙伴可以看文章最末尾的广告时间。
当我们在初创公司或者公司的一个新的业务线的初期,通常来说不会采用分库分表的,但是随着业务发展,就会有需要分库分表的情况产生。那么针对于之前单库表中的数据我们如何迁移到新的分库分表上呢?我们最先想到的方案应该就是发公告停机停服的数据迁移。 停机停服数据迁移 比如我们已经准备好某一天要进行数据迁移了,那么我会们在当天发布公告,比如通告一下用户,凌晨12点到早上6点系统升级,服务暂不可用。那么到了凌晨12点,所有服务停机,并观察数据库中是否还有数据写入变更删除等操作,如果发现现在数据库中的数据已经静止了,那么一部
领取专属 10元无门槛券
手把手带您无忧上云