当前位置: 首页 > news >正文

海量数据迁移,亚马逊云科技云数据库服务为大库治理提供新思路

1.背景

 目前,文档型数据库由于灵活的schema和接近关系型数据库的访问特点,被广泛应用,尤其是游戏、互联网金融等行业的客户使用MongoDB构建了大量应用程序,比如游戏客户用来处理玩家的属性信息;又如股票APP用来存储与时间线相关的行情数据。随着时间的推移和业务的发展,MongoDB库越来越大,大库治理是必须面临的问题。

 一般来讲,大库治理有如下几种方案。一是做冷热数据隔离,将数据根据使用频率分为热、温、冷、冻级别,超过一定时间的冷数据,转储到另一个冷库或低成本存储的数据库;热库只保留近期访问频繁的数据;二是做垂直拆分,比如大系统有多个集合,按照模块进行垂直划分,把不同模块对应的集合拆分到不同库,实现数据量和访问量的垂直分离;三是做水平拆分,比如选择userid的哈希值,将大的集合水平拆分到多个库,实现整体存储和计算能力的扩展。第四,也有部分业务,它的历史数据的使命完成,走完生命周期,可以直接删除。这4种方案,各有利弊,且需要根据实际业务场景进行选型。而很多场景下,客户会选择水平sharding,主要原因如下:

  • 很多业务需要经常查询历史数据,水平sharding不需要删除或分离历史数据;

  • 长远来看,水平sharding的扩展性更好,可以支撑更大的业务规模。

 DocumentDB Elastic Cluster是亚马逊云科技提供的一个很好的支持水平sharding的云数据库服务。本文,主要针对客户从MongoDB副本集架构迁移到DocumentDB Elastic Cluster的过程中,如何进行海量数据迁移的问题,进行研究,并提供最佳实践。

2.可选迁移方案

 众所周知,含有大数据量的数据库的迁移,是比较有挑战性的问题。数据库在不断的读写,不仅需要在目标库完成当前全量数据的初始化,也需要把初始化期间的数据变化同步到新库。以下是迁移方案示意图:

 MongoDB记录文档变化的方式有两种:oplog和change stream。由于,oplog或change stream的存储空间是有限的,因此全量初始化阶段的迁移速度是必须要考虑的因素。另外,增量同步阶段的速度也必须大于源数据库的变化速度,这样才能实现新旧数据库的数据一致。这两个阶段,我们都需要依赖稳定、高效的工具来完成。尤其在大型数据库的迁移时,甚至要配合一定的数据迁移策略(比如并行、压缩;冷、热数据分别迁移;不同集合分别迁移等)。

亚马逊云科技有3种可行的迁移方案:

  • AWS DMS全量+增量迁移

  • Mongoshake全量+增量迁移

  • Mongodump/mongorestore+DMS增量迁

方案1:AWS DMS全量+增量

 DMS是亚马逊云科技的一项云服务,允许迁移关系数据库、MongoDB数据库和其他类型的数据存储。可以使用DMS执行一次性迁移,或复制源库正在进行的更改以保持源和目标同步。DMS在全量迁移阶段提供了Auto segmentation和Range segmentation的方式来并行加速迁移;在CDC增量阶段,3.5 bet版也支持并发方式写入DocumentDB。

方案2:Mongoshake全量+增量

 开源的Mongoshake,也支持迁移写入DocumentDB。由于它属于开源产品,优势是社区活跃,遇到问题可以定制开发解决,迁移速度较快;劣势是遇到问题可以获得的技术支持力度较低,用户需要自己定位或求助社区。

方案3:Mongodump/mongorestore+DMS增量

 mongodump是MongoDB官方提供的备份工具,它可以从MongoDB数据库读取数据,并生成BSON文件,然后通过mongorestore工具恢复到MongoDB。它也同样支持从DocuemntDB备份数据。而mongodb-database-tools的6.1版本也支持恢复到DocumentDB Elastic Cluster。这种方案的优势是稳定快速,缺点是增量同步能力不足。但是,可以借助DMS的增量同步能力。重点是需要选择好增量同步的起始位点,防止数据丢失。

以上三种方案,各有优缺点,如下表。

使用DMS托管服务,用户配置迁移任务最方便,整个迁移过程,日志清晰、速度直观,可观测性较好。Mongoshake在增量写入DocumentDB环节速度略慢,在TPS较高的场景不适用;而mongodump和mongorestore在MongoDB大数据库迁移场景上,速度比DMS full load更快。大库迁移是否成功的一个非常重要因素是迁移速度。

原标题:大型MongoDB数据库迁移到DocumentDB Elastic Cluster的最佳实践

原链接:https://aws.amazon.com/cn/blogs/china/best-practices-for-migrating-large-mongodb-databases-to-documentdb-elastic-cluster/

相关文章:

海量数据迁移,亚马逊云科技云数据库服务为大库治理提供新思路

1.背景 目前,文档型数据库由于灵活的schema和接近关系型数据库的访问特点,被广泛应用,尤其是游戏、互联网金融等行业的客户使用MongoDB构建了大量应用程序,比如游戏客户用来处理玩家的属性信息;又如股票APP用来存储与时…...

DevOps系列文章之 GitlabCICD自动化部署SpringBoot项目

一、概述 本文主要记录如何通过Gitlab CI/CD自动部署SpringBoot项目jar包。 二、前期准备 准备三台 CentOS7服务器,分别部署以下服务: 序号系统IP服务1CentOS7192.168.56.10Gitlab2CentOS7192.168.56.11Runner (安装Docker)3Cen…...

汽车租赁管理系统/汽车租赁网站的设计与实现

摘 要 租赁汽车走进社区,走进生活,成为当今生活中不可缺少的一部分。随着汽车租赁业的发展,加强管理和规范管理司促进汽车租赁业健康发展的重要推动力。汽车租赁业为道路运输车辆一种新的融资服务形式、广大人民群众一种新的出行消费方式和…...

语句覆盖、条件覆盖、判定覆盖、条件-判定覆盖、路径覆盖

白盒测试是结构测试&#xff0c;主要对代码的逻辑进行验证。 逻辑覆盖率&#xff1a;语句覆盖<条件覆盖<判定覆盖<条件-判定覆盖<组合覆盖<路径覆盖 例子 一、语句覆盖 最基础的覆盖&#xff0c;只要每一个执行处理框内的语句都能执行就可&#xff0c;不用关注…...

二进制逻辑运算符

运算的优先级&#xff1a;非>与>或 1.逻辑与&#xff1a;“ ∧ \wedge ∧“&#xff0c;“ ⋅ \cdot ⋅“&#xff0c;and 在逻辑问题中与是所有的都是真结果才是真&#xff0c;比如&#xff1a; 1010101011 1010101011 1010101011和 1010110010 1010110010 1010110010…...

Bug日记-webstorm运行yarn 命令报错

在windows中输入yarn -v正确输出&#xff0c;在webstrom终端中运行yarn命令输出错误 问题&#xff1a;可能是由于 WebStorm 配置问题导致的。 解决方案&#xff1a; 检查 WebStorm 的终端配置&#xff1a;在 WebStorm 中&#xff0c;点击菜单栏的 “File”&#xff08;文件&am…...

C++11并发与多线程笔记(9) async、future、packaged_task、promise

C11并发与多线程笔记&#xff08;9&#xff09; async、future、packaged_task、promise 1、std::async、std::future创建后台任务并返回值2、std::packaged_task&#xff1a;打包任务&#xff0c;把任务包装起来3、std::promise3、小结 1、std::async、std::future创建后台任务…...

Mr. Cappuccino的第63杯咖啡——Spring之AnnotationConfigApplicationContext源码分析

Spring之AnnotationConfigApplicationContext源码分析 源码分析 源码分析 以上一篇文章《Spring之Bean的生命周期》的代码进行源码分析 AnnotationConfigApplicationContext applicationContext new AnnotationConfigApplicationContext(SpringConfig02.class); LifeCycleBe…...

opencv直方图与模板匹配

import cv2 #opencv读取的格式是BGR import numpy as np import matplotlib.pyplot as plt#Matplotlib是RGB %matplotlib inline def cv_show(img,name):cv2.imshow(name,img)cv2.waitKey()cv2.destroyAllWindows() 直方图 cv2.calcHist(images,channels,mask,histSize,ran…...

Apache Doris 入门教程31:计算节点

需求场景​ 目前Doris是一个典型Share-Nothing的架构, 通过绑定数据和计算资源在同一个节点获得非常好的性能表现. 但随着Doris计算引擎性能持续提高, 越来越多的用户也开始选择使用Doris直接查询数据湖数据. 这类场景是一种Share-Disk场景, 数据往往存储在远端的HDFS/S3上, 计…...

Nacos和GateWay路由转发NotFoundException: 503 SERVICE_UNAVAILABLE “Unable to find

问题再现&#xff1a; 2023-08-15 16:51:16,151 DEBUG [reactor-http-nio-2][CompositeLog.java:147] - [dc73b32c-1] Encoding [{timestampTue Aug 15 16:51:16 CST 2023, path/content/course/list, status503, errorService Unavai (truncated)...] 2023-08-15 16:51:16,17…...

2021年9月全国计算机等级考试真题(二级C语言)

2021年9月全国计算机等级考试真题&#xff08;二级C语言&#xff09; 第1题 下列叙述中正确的是&#xff08; &#xff09;。 A. 算法的复杂度是指算法所处理的数据量 B. 算法的复杂度是指算法程序中指令的数量 C. 算法的复杂度是指算法控制结构的复杂程度 D. 算法的复杂度包…...

串口通讯

USART是全双工同步通讯 在同步通信中&#xff0c;数据信号所传输的内容绝大多数属于有效数据&#xff0c;而异步通信中包含了各种帧的标识符&#xff0c;所以同步通讯的效率更高。但是同步通信对时钟要求苛刻&#xff0c;允许的误差小。而异步通信则允许双方的误差较大 比特率…...

自动拉取 GitHub 仓库更新的脚本

更好的阅读体验 \huge{\color{red}{更好的阅读体验}} 更好的阅读体验 由于将 HAUE-CS-WIKI 部署到了我自己的服务器上作为国内镜像站&#xff0c;每次在源站更新后都需要手动拉取镜像站的更新实在是太麻烦了&#xff0c;因此产生了编写该脚本的需求&#xff08; 读者可根据该…...

如何获得Android 14复活节彩蛋

每个新的安卓版本都有隐藏复活节彩蛋的悠久传统&#xff0c;可以追溯到以前&#xff0c;每个版本都以某种甜食命名。安卓14也不例外&#xff0c;但这一次的主题都是围绕太空构建的——还有一个复活节彩蛋。 安卓14复活节彩蛋实际上是一款很酷的小迷你游戏&#xff0c;你可以乘…...

国产32位单片机XL32F001,带1 路 12bit ADC,I2C、SPI、USART 等外设

XL32F001 系列单片机采用高性能的 32 位 ARM Cortex-M0内核&#xff0c;宽电压工作范围的 MCU。嵌入 24KbytesFlash 和 3Kbytes SRAM 存储器&#xff0c;最高工作频率 24MHz。包含多种不同封装类型多款产品。芯片集成 I2C、SPI、USART 等通讯外设&#xff0c;1 路 12bit ADC&am…...

typescript基础之null和undefined

TypeScript是一种基于JavaScript的编程语言&#xff0c;它支持静态类型检查和面向对象的特性。TypeScript中的null和undefined是两种基本类型&#xff0c;它们分别表示空值或未定义的值。在本文中&#xff0c;我将介绍TypeScript中null和undefined的含义、区别、检查方法和使用…...

php_mb_strlen指定扩展

1 中文在utf-字符集下占3个字节,所以计算出来长度为9。 2 可以引入php多字节字符的扩展&#xff0c;默认是没有的&#xff0c;需要自己配置这个函数 3 找到php.ini文件&#xff0c;去掉;extension mbstring的注释&#xff0c;接着重启apache服务 可以看到准确输出的中文的长度…...

利用OpenCV光流算法实现视频特征点跟踪

光流简介 光流&#xff08;optical flow&#xff09;是运动物体在观察成像平面上的像素运动的瞬时速度。光流法是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系&#xff0c;从而计算出相邻帧之间物体的运动信息的一种方法。…...

探索无限创造力的星辰大道,画出想象的浩瀚宇宙!-turtle

介绍 视频教程地址在此&#xff1a;https://www.bilibili.com/video/BV1Pm4y1H7Tb/ 大家好&#xff0c;欢迎来到本视频&#xff01;今天&#xff0c;我们将一同探索Python编程世界中的一个有趣而创意的库——Turtle库。无需专业绘画技能&#xff0c;你就可以轻松地用代码绘制…...

如何快速掌握MegSpot:免费跨平台视觉分析工具的终极指南

如何快速掌握MegSpot&#xff1a;免费跨平台视觉分析工具的终极指南 【免费下载链接】MegSpot MegSpot是一款高效、专业、跨平台的图片&视频对比应用 项目地址: https://gitcode.com/gh_mirrors/me/MegSpot 你是否经常需要在不同设备上对比图片色彩差异&#xff1f;…...

IRISMAN:解锁PS3游戏管理的全能备份管理器,如何让它成为你的终极游戏管家?

IRISMAN&#xff1a;解锁PS3游戏管理的全能备份管理器&#xff0c;如何让它成为你的终极游戏管家&#xff1f; 【免费下载链接】IRISMAN All-in-one backup manager for PlayStation3. Fork of Iris Manager. 项目地址: https://gitcode.com/gh_mirrors/ir/IRISMAN IRIS…...

STM32CubeMX实战:5分钟搞定MAX31865 PT100测温,从SPI配置到温度读取全流程

STM32CubeMX实战&#xff1a;5分钟搞定MAX31865 PT100测温&#xff0c;从SPI配置到温度读取全流程 在工业测温领域&#xff0c;PT100凭借其优异的线性度和稳定性成为温度测量的黄金标准。而MAX31865作为专为RTD传感器设计的信号调理器&#xff0c;极大简化了前端电路设计。本文…...

【ElevenLabs尼泊尔文语音实战指南】:20年AI语音工程师亲授7大避坑要点与本地化部署全流程

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs尼泊尔文语音技术概览与核心价值 ElevenLabs 自 2023 年起逐步扩展其多语言语音合成能力&#xff0c;尼泊尔文&#xff08;Nepali, ISO 639-1: ne&#xff09;作为首批支持的南亚语系之一&am…...

Spectator:云原生可观测性数据采集库的设计与实战

1. 项目概述&#xff1a;从“观众”到“洞察者”的转变在分布式系统和微服务架构成为主流的今天&#xff0c;我们每天面对的不再是单一的、庞大的单体应用&#xff0c;而是由数十甚至上百个服务节点组成的复杂网络。每个服务都在持续地产生日志、指标和追踪数据&#xff0c;这些…...

SpeexDSP音频处理库深度解析:3种核心算法实现与40%性能优化实战

SpeexDSP音频处理库深度解析&#xff1a;3种核心算法实现与40%性能优化实战 【免费下载链接】speexdsp Speex audio processing library - THIS IS A MIRROR, DEVELOPMENT HAPPENS AT https://gitlab.xiph.org/xiph/speexdsp 项目地址: https://gitcode.com/gh_mirrors/sp/sp…...

从CenterFusion到车道线检测:聊聊DLAseg模型里可变形卷积的实战调优心得

从CenterFusion到车道线检测&#xff1a;DLAseg模型中可变形卷积的工程实践与调优策略 在自动驾驶和计算机视觉领域&#xff0c;特征提取网络的设计直接影响着感知系统的性能上限。Deep Layer Aggregation (DLA) 作为特征融合的经典方法&#xff0c;通过层级聚合机制实现了多尺…...

阿里云百炼 + OpenClaw 打造超强自动化 AI

前置准备 已安装并可正常打开 OpenClaw Windows 版本 OpenClaw 部署包获取&#xff1a;https://xiake.yun/api/download/package/14?promoCodeIVD643FDE29AOpenClaw 顶部 Gateway 状态显示为在线准备好可正常登录的阿里云账号可正常访问阿里云百炼控制台地址确认账号已开通百…...

【大白话说Java面试题 第55题】【JVM篇】第15题:JVM有哪些垃圾收集算法?

&#x1f4cc; PDF&#xff1a;大白话说Java面试题 — 02-JVM篇 第15题&#xff1a;JVM有哪些垃圾收集算法 &#x1f4da; 回答&#xff1a; 核心概念&#xff1a; JVM 的垃圾收集算法是垃圾回收的核心机制&#xff0c;决定了如何高效地标记和回收内存中的垃圾对象。常见的垃…...

高性能JSXBIN解码器架构设计:3大核心技术优势深度解析

高性能JSXBIN解码器架构设计&#xff1a;3大核心技术优势深度解析 【免费下载链接】jsxer A fast and accurate JSXBIN decompiler. 项目地址: https://gitcode.com/gh_mirrors/js/jsxer Jsxer是一个快速且准确的JSXBIN反编译器&#xff0c;专门用于将Adobe ExtendScrip…...