首页
学习
活动
专区
圈层
工具
发布

使用Kafka,如何成功迁移SQL数据库中超过20亿条记录?

在这篇文章中,我将介绍我们的解决方案,但我还想提醒一下,这并不是一个建议:不同的情况需要不同的解决方案,不过也许有人可以从我们的解决方案中得到一些有价值的见解。 云解决方案会是解药吗?...将数据流到 BigQuery 通过分区来回收存储空间 我们将所有数据流到 Kafka(为了减少负载,我们使用了数据过滤),然后再将数据流到 BigQuery,这帮我们解决了查询性能问题,让我们可以在几秒钟内分析大量数据...不过,在我们的案例中,我们在迁移过程中不断地备份和删除旧分区,确保有足够的空间来存储新数据。 ?...将数据流到分区表中 通过整理数据来回收存储空间 在将数据流到 BigQuery 之后,我们就可以轻松地对整个数据集进行分析,并验证一些新的想法,比如减少数据库中表所占用的空间。...将数据流入新表 整理好数据之后,我们更新了应用程序,让它从新的整理表读取数据。我们继续将数据写入之前所说的分区表,Kafka 不断地从这个表将数据推到整理表中。

4K20

20亿条记录的MySQL大表迁移实战

在这篇文章中,我将介绍我们的解决方案,但我还想提醒一下,这并不是一个建议:不同的情况需要不同的解决方案,不过也许有人可以从我们的解决方案中得到一些有价值的见解。 云解决方案会是解药吗?...将数据从 MySQL 流到 Kafka 关于如何将数据从 MySQL 流到 Kafka,你可能会想到 Debezium(https://debezium.io)或 Kafka Connect。...将数据流到BigQuery 通过分区来回收存储空间 我们将所有数据流到 Kafka(为了减少负载,我们使用了数据过滤),然后再将数据流到 BigQuery,这帮我们解决了查询性能问题,让我们可以在几秒钟内分析大量数据...不过,在我们的案例中,我们在迁移过程中不断地备份和删除旧分区,确保有足够的空间来存储新数据。...将数据流到分区表中 通过整理数据来回收存储空间 在将数据流到 BigQuery 之后,我们就可以轻松地对整个数据集进行分析,并验证一些新的想法,比如减少数据库中表所占用的空间。

5.5K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    云原生数据库设计新思路

    如果业务在特别简单的情况下,比如说写入或者读取基本能退化成在一个分片上完成,在应用层做充分适配以后,延迟还是比较低的,而整体上,如果 workload 是随机的,业务的 TPS 也能做到线性扩展。...对于一些比较复杂的业务,特别是一些跨分片的操作,比如说查询或者写入要保持跨分片之间的数据强一致性的时候就比较麻烦。...最终,在这个思路下就诞生出了两个流派,一个是 Spanner,一个是 Aurora,两个都是顶级的互联网公司在面临到这种问题时做出的一个选择。...从纯技术的角度来去说一个核心的要点,这类系统的计算与存储是彻底分离的,计算节点与存储节点跑在不同机器上,存储相当于把一个 MySQL 跑在云盘上的感觉,我个人认为类似 Aurora 或者 PolarDB...的 database 可能只需要从客户端的一次 rpc,但是对于计算与存储分离的架构,中间无论如何要走两次网络,这是一个核心的问题。

    1.5K10

    弃用 Lambda,Twitter 启用 Kafka 和数据流新架构

    实时数据存储在 Twitter Nighthawk 分布式缓存中,而批处理数据存储在 Manhattan 分布式存储系统中。...我们对内部的 Pubsub 发布者采用了几乎无限次的重试设置,以实现从 Twitter 数据中心向谷歌云发送消息的至少一次。...我们通过同时将数据写入 BigQuery 并连续查询重复的百分比,结果表明了高重复数据删除的准确性,如下所述。最后,向 Bigtable 中写入包含查询键的聚合计数。...第一步,我们创建了一个单独的数据流管道,将重复数据删除前的原始事件直接从 Pubsub 导出到 BigQuery。然后,我们创建了用于连续时间的查询计数的预定查询。...第二步,我们创建了一个验证工作流,在这个工作流中,我们将重复数据删除的和汇总的数据导出到 BigQuery,并将原始 TSAR 批处理管道产生的数据从 Twitter 数据中心加载到谷歌云上的 BigQuery

    2.2K20

    云原生数据库设计新思路

    如果业务在特别简单的情况下,比如说写入或者读取基本能退化成在一个分片上完成,在应用层做充分适配以后,延迟还是比较低的,而整体上,如果 workload 是随机的,业务的 TPS 也能做到线性扩展。...对于一些比较复杂的业务,特别是一些跨分片的操作,比如说查询或者写入要保持跨分片之间的数据强一致性的时候就比较麻烦。...在这个思路下就诞生出了两个流派,一个是 Spanner,一个是 Aurora,两个都是顶级的互联网公司在面临到这种问题时做出的一个选择。...从纯技术的角度来去说一个核心的要点,这类系统的计算与存储是彻底分离的,计算节点与存储节点跑在不同机器上,存储相当于把一个 MySQL 跑在云盘上的感觉,我个人认为类似 Aurora 或者 PolarDB...BigQuery 的数据存储在谷歌内部的分布式文件系统 Colossus 上面,Jupiter 是内部的一个高性能网络,上面这个是谷歌的计算节点。

    1.9K10

    详细对比后,我建议这样选择云数据仓库

    本文介绍了每种云数据仓库的优缺点,并深入探讨了在选择云数据仓库时需要考虑的因素。 什么是数据仓库? 数据仓库是一种将来自不同来源的数据带到中央存储库的系统,以便为快速检索做好准备。...你可以将历史数据作为单一的事实来源存储在统一的环境中,整个企业的员工可以依赖该存储库完成日常工作。 数据仓库也能统一和分析来自 Web、客户关系管理(CRM)、移动和其他应用程序的数据流。...其中,从多种来源提取数据、把数据转换成可用的格式并存储在仓库中,是理解数据的关键。 此外,通过存储在仓库中的有价值的数据,你可以超越传统的分析工具,通过 SQL 查询数据获得深层次的业务洞察力。...例如,有些公司可能需要实时检测欺诈或安全问题,而另一些公司可能需要处理大量的流式物联网数据来进行异常检测。在这些情况下,评估不同的云数据仓库如何处理流数据摄取是很重要的。...举例来说,加密有不同的处理方式:BigQuery 默认加密了传输中的数据和静态数据,而 Redshift 中需要显式地启用该特性。 计费提供商计算成本的方法不同。

    6.6K10

    E往无前 | 腾讯云大数据ES日志轻接入和免运维最佳实践

    日志的存储一般具有明显的冷热属性,在最近几天的日志查询量最大,近几星期的日志查询量较小,而一个月以前的历史日志基本没有查询,因此在日志存储时需要根据这个特性考虑日志的存储生命周期,提高热数据的查询性能、...2.如何设置主分片数量,既能应对写入拒绝,又能收敛分片数?...同样的,在日志字段数量较多的场景中,日志字段的频繁变更导致mappings的频繁更新,也会阻塞写入的任务。 4.如何提高日志写入吞吐?...但日志场景往往数据量较大,从成本考虑会将索引设置为0副本,这样虽然降低了成本,但是遇到分片所在节点硬件故障时,写入会失败。...图五、自治索引创建流程 (2) 如何设置主分片数量,既能应对写入拒绝,又能收敛分片数 运维索引最头疼的问题就是如何设置索引主分片数量,因为这个参数在创建时设置完,后续是不能修改的。

    48060

    腾讯云ES:日志轻接入和免运维最佳实践

    日志的存储一般具有明显的冷热属性,在最近几天的日志查询量最大,近几星期的日志查询量较小,而一个月以前的历史日志基本没有查询,因此在日志存储时需要根据这个特性考虑日志的存储生命周期,提高热数据的查询性能、...如何设置主分片数量,既能应对写入拒绝,又能收敛分片数?...但日志场景往往数据量较大,从成本考虑会将索引设置为0副本,这样虽然降低了成本,但是遇到分片所在节点硬件故障时,写入会失败。针对上面的使用和运维痛点,腾讯云ES提供了独家的索引管理解决方案——自治索引。...如何设置主分片数量,既能应对写入拒绝,又能收敛分片数运维索引最头疼的问题就是如何设置索引主分片数量,因为这个参数在创建时设置完,后续是不能修改的。...如何应对0副本ES集群的硬件故障导致的写入失败自治索引基于data stream后备索引的结构,在没有设置分片副本的情况下,当监测到索引分片所在的某个节点故障导致索引red或者写入异常时,自治索引会自动滚动出新的后备索引

    1.4K70

    对话Apache Hudi VP,洞悉数据湖的过去现在和未来

    VC:那么让我们从云数据仓库开始,实际上我会将Redshift放在前面,我会将Redshift,BigQuery和Snowflake视为云数仓。它们都有一些非常共同的特征,如都有很多类似数据库的参数。...如果拉回到今天,我会说云仓库在解决我说过的老式数据仓库中的数据规模问题方面做得很好,它们的存储位于S3上而不在本地设备上,它们确实解决了数据存储扩展问题。...然后财务团队成员写的查询无法与欺诈团队中的某人核对数据,然后需要给财务团队中的某人(而不是欺诈团队)一个类似的、不同种类的生产数据访问控制,使得人们抱怨在使用数据湖的痛苦,我认为要解决的首要问题是在原始环境中将大量上游系统复制到数据湖中...Hudi将类似的数据组织在Apache Parquet或Apache Avro文件中,并且提供了很多元数据,还跟踪有关在云存储上对该逻辑数据集进行的写入和更改的大量元数据,然后所有查询引擎(例如Hive...服务清理和清除旧文件,所有这些服务彼此协调,这是Hudi的核心设计,而不是像其他系统那样,Hudi有大量的上层服务,就像有一个提取服务一样,它可以从Kafka中获取数据,将其转换为本质上是流,而不只是在

    86620

    直面海量数据集成挑战,驱动企业智能决策

    大规模数据集成的核心挑战 挑战1:上亿的库表量级,单个表数据量大 SaaS服务商会为每个客户都设置一套独立的库表,随着客户数的不断增多,总的库表数量也会线性增加,导致库表数量非常庞大。...腾讯云WeData数据集成方案 WeData数据集成源于腾讯内部业务孵化,经过百万亿级别的数据接入和处理验证,支持数据采集、汇聚、存储、分拣数据处理全流程,在跨云跨网环境下提供可靠、安全、敏捷的全场景异构数据源集成能力...此外,分片的大小需要进行仔细的设置,如果单个分片较大,那么分片的读取时容易内存溢出,如果分片较小,那么分片的数量过多,维护所有分片的信息也容易导致内存溢出。...WeData实时集成引入了大分片的模式,每张表只需要划分为一个或几个大的分片,单个分片的数据一次性读取完成而不需要在内存中堆积,全量阶段同步性能可以有10倍以上的性能提升,并且客户无需关注分片大小,从而极大优化了用户的使用体验...湖仓写入一般通过数据缓冲来增加数据写入的批次,从而提升写入的性能,在整库同步中如果每张表单独维护缓冲区,很难控制总内存的使用从而导致内存溢出。

    17310

    MQ - 闲聊MQ一二事儿 (Kafka、RocketMQ 、Pulsar )

    ,我们上面讲过,当消息来的时候,底层数据使用追加写入的方式,顺序写盘,使得整体的写性能大大提高,但这并不能代表所有情况,当我们 topic 数量从几个变成上千个的时候,情况就有所不同了 左图代表了,队列中从头到尾的信息为...RocketMQ 追求极致的消息写,将所有 topic 消息存储在同一个文件中,确保消息发送时按顺序写文件,提高可用性和吞吐量。...分片 : 这种将存储从消息服务中抽离出来,使用更细粒度的分片(Segment)替代粗粒度的分区(Partition),为 Pulsar 提供了更高的可用性,更灵活的扩展能力 ---- 服务层设计 Broker...在写入数据时通过路有算法优先写入资源充足的节点,使得整体的资源利用力达到一个平衡的状态,如图所示。...以下是一张 kafka 分区和 pulsar 分片的一张对比图,左图是 kafka 的数据存储特点,因为数据和分区的强绑定,导致了第三艘小船没有任何的数据,而相比 pulsar,数据不和任何存储节点绑定

    97710

    Elasticsearch集群性能优化实践

    简介 典型的几种集群规划问题: 节点规格规划问题:集群数量很大,但是每个节点的配置很低; 索引分片规划问题:索引很小,但是设置了几十个分片,或者索引很大,只设置了两三个分片; 分片数量规划问题:集群中包含...如何设置索引主分片数:云上的索引主分片数默认是5个,具体的大小则需要业务根据具体的场景及数据量来优化。...因为对于这种节点数量和总分片数量都很大的集群来说,更新元数据是一个非常消耗性能的操作;对于总分片数超过 10W 的问题,这种一般在日志分析场景中较为常见,如果历史数据不是很重要,则可定期删除历史索引即可...而对于历史数据较为重要,任何数据都不能删除的场景,则可通过冷热分离架构+索引生命周期管理功能,将7天之前的数据存储到温节点,且在索引数据从热节点迁移到温节点时,通过 Shrink 来将主分片个数降低到一个较小的值...,并且可将温节点数据通过快照方式备份到腾讯云COS中,然后将温节点上索引的副本设置为0,这样便可进一步降低集群中的总分片数量。

    2.6K11

    腾讯云Elasticsearch集群规划及性能优化实践

    1000 个分片 索引分片数量建议和节点数量保持一致 集群规模较大时建议设置专用主节点 专用主节点配置建议在 8C16G 以上 如果是时序数据,建议结合冷热分离+ILM 索引生命周期管理 特别需要说明的是集群分片总数的大小控制上...因为对于这种节点数量和总分片数量都很大的集群来说,更新元数据是一个非常消耗性能的操作;对于总分片数超过 10W 的问题,这种一般在日志分析场景中较为常见,如果历史数据不是很重要,则可定期删除历史索引即可...而对于历史数据较为重要,任何数据都不能删除的场景,则可通过冷热分离架构+索引生命周期管理功能,将7天之前的数据存储到温节点,且在索引数据从热节点迁移到温节点时,通过 Shrink 来将主分片个数降低到一个较小的值...,并且可将温节点数据通过快照方式备份到腾讯云COS中,然后将温节点上索引的副本设置为0,这样便可进一步降低集群中的总分片数量。...因此出现这种异常,通常是由于我们的索引分片设置的不是很合理。 解决方法: 切换写入到新索引,并修改索引模版,合理设置主分片数,。

    1.6K30

    腾讯云Elasticsearch集群规划及性能优化实践

    1000 个分片 索引分片数量建议和节点数量保持一致 集群规模较大时建议设置专用主节点 专用主节点配置建议在 8C16G 以上 如果是时序数据,建议结合冷热分离+ILM 索引生命周期管理 特别需要说明的是集群分片总数的大小控制上...因为对于这种节点数量和总分片数量都很大的集群来说,更新元数据是一个非常消耗性能的操作;对于总分片数超过 10W 的问题,这种一般在日志分析场景中较为常见,如果历史数据不是很重要,则可定期删除历史索引即可...而对于历史数据较为重要,任何数据都不能删除的场景,则可通过冷热分离架构+索引生命周期管理功能,将7天之前的数据存储到温节点,且在索引数据从热节点迁移到温节点时,通过 Shrink 来将主分片个数降低到一个较小的值...,并且可将温节点数据通过快照方式备份到腾讯云COS中,然后将温节点上索引的副本设置为0,这样便可进一步降低集群中的总分片数量。...因此出现这种异常,通常是由于我们的索引分片设置的不是很合理。 解决方法: 切换写入到新索引,并修改索引模版,合理设置主分片数,。

    7.7K120104

    PB级大规模Elasticsearch集群运维与调优实践 bellen

    你们能不能给我们提供一个 API , 让老的索引数据虽然存储在 COS 里,但是通过这个 API 依然可以查询到数据,而不是先恢复到 ES , 再进行查询?...云盘切换为本地盘,是通过调用云服务后台的 API 自动实施的。在实施之后,触发了数据从旧节点迁移到新节点的流程。...应该是之前在执行纵向扩容集群时,为了加快分片迁移速度人为修改了这个值。因为集群一开始节点数量没有很多,索引同时迁移中的分片也不会太多,所以创建新索引不会被阻塞。 4. ...有以下几种方式解决分片数量过多的问题: 可以在 ILM 的 warm phase 中开启 shrink 功能,对老的索引从 60 分片 shrink 到 5 分片,分片数量可以降低 12 倍; 业务可以把每小时创建索引修改为每两个小时或者更长...,可以根据每个分片数量最多支持 50GB 的数据推算多长时间创建新索引合适; 对老的索引设置副本为 0,只保留主分片,分片数量能够再下降近一倍,存储量也下降近一倍; 定期关闭最老的索引,执行 {index

    37320

    Elasticsearch 可搜索快照技术原理及最佳实践

    )到集群中,而不是直接通过API去Search快照中的数据。...,在恢复前还需要先将该red的索引删除,而通过mount挂载下来的索引,则自动从快照中恢复损坏的分片。...部分挂载的分片只会分配在Frozen层。因此集群中Frozen层节点不存储快照数据,只存储索引分片的元数据信息,原始数据存储在COS的快照仓库中。...二、可搜索快照操作实践 下面我们基于腾讯云COS来逐步演示如何一步步搭建可搜索快照集群,我们要实现的效果是通过压测程序持续向集群中写入数据,索引在10分钟或者达到10mb后开始滚动,滚动完成后1小时开始迁移到冷节点上...从Kibana上我们可以看到,该类索引名称是以partial-*开头,其Docs 数量是7413000,但是Storage size大小为0,这说明该索引在集群上是不占用存储空间的,只有索引的元数据信息

    76020

    Elasticsearch核心应用场景-日志优化实践

    这个过程中,副本分片的 Lucene 写入是冗余的,因为这个写入栈在 Primary 上进行了一遍,在 Replica 上会完整的再来一遍,开销非常高。...海量的数据流入到 ES 之后,存储是另一大挑战,接下来我们来探讨一下海量存储场景如何进行成本优化,我们先来看看背景。 低成本存储 存储成本的影响面主要分为三个层面: 云原生环境下分布式架构层。...4.2 混合存储引擎 前面主要介绍了通过压缩编码优化降低单位文档存储成本,而单位文档的存储优化是有极限的。另一个方向是从存储架构层面进行优化。在云原生的背景下,我们引入了自研混合存储引擎方案。...高性能查询 5.1 查询性能影响面 前面我们分析了日志场景的海量存储成本优化。数据存储降本之后,接下来要考虑的是数据流出,如何解决用户查询性能问题。...索引分片级时序裁剪 在日志场景,索引一般是按照一定的时间周期进行滚动,腾讯自研了自治索引,帮助用户托管索引分片的管理,用户无需关心底层分片的数量、大小、分布配置。简化数据接入门槛。

    88830

    消息队列20年:腾讯专家沉淀的MQ设计精要

    腾小云导读 作者是腾讯 TDMQ 初创团队的成员,在多年的业务中台的实践中,也频繁地使用到了 MQ,比如最常见的消息推送,异常信息的重试等等,对消息队列有深刻的了解。...数量很大时,Kafka 的性能会急剧下降了。...Commitlog:从物理结构上来看,所有的消息都存储在CommitLog里面,单个CommitLog文件大小默认1G,文件名长度为20位,左边补零,剩余为起始偏移量。...分片:这种将存储从消息服务中抽离出来,使用更细粒度的分片(Segment)替代粗粒度的分区(Partition),为 Pulsar 提供了更高的可用性,更灵活的扩展能力。...以下是一张 Kafka 分区和 pulsar 分片的一张对比图,左图是 Kafka 的数据存储特点,因为数据和分区的强绑定,导致了第三艘小船没有任何的数据,而相比 pulsar,数据不和任何存储节点绑定

    99541

    PB 级大规模 Elasticsearch 集群运维与调优实践

    你们能不能给我们提供一个 API, 让老的索引数据虽然存储在 COS 里,但是通过这个 API 依然可以查询到数据,而不是先恢复到 ES, 再进行查询? bellen:呃,这个可以做,但是需要时间。...所以一般新客户接入使用 ES 时,必须要事先评估好节点配置和集群规模,可以从以下几个方面进行评估: 存储容量:要考虑索引副本数量、数据膨胀、ES 内部任务额外占用的磁盘空间(比如 segment merge...有以下几种方式解决分片数量过多的问题: 可以在 ILM 的 warm phase 中开启 shrink 功能,对老的索引从 60 分片 shrink 到 5 分片,分片数量可以降低 12 倍; 业务可以把每小时创建索引修改为每两个小时或者更长...,可以根据每个分片数量最多支持 50GB 的数据推算多长时间创建新索引合适; 对老的索引设置副本为 0,只保留主分片,分片数量能够再下降近一倍,存储量也下降近一倍; 定期关闭最老的索引,执行{index...场景 7:自己实现 SLM 上文介绍了 10w 个分片会给集群带来的影响和通过开启 shrink 来降低分片数量,但是仍然有两个需要重点解决的问题: 索引不断新建,如何保证一年内,集群总的分片数量不高于

    64310
    领券