PgSQL · 最佳实践 · 云上的数据迁移



title: PgSQL · 最佳实践 · 云上的数据迁移

author: 义从

背景

大多数使用云产品作为 IT 解决方案的客户同时使用多款云产品是一个普遍现象。
用户在多款云产品之间转移数据成为一个基础的需求。

例如

  • 1. 用户把线下机房中的 Oracle 数据库中的数据 迁移到云上 RDS PPAS 中。
  • 2. 使用 RDS MYSQL 做为数据库支撑交易型业务场景,同时使用 HybridDB for PostgreSQL 作数据仓库解决方案。
  • 3. 把 ODPS 中的大量数据导入到 HybridDB for PostgreSQL 进行实时分析。

上述场景都不可避免的需要进行云上的数据迁移。本文给大家聊聊这方面的一些解决方案,希望能帮助大家用好云产品。

一:关于硬件

在开始数据迁移之前,我们要对云相关的硬件有一些了解,这往往决定了我们能做到的最好情况,有助于我们选择最终解决方案。

1. 同一可用区

如果数据在云上,且在同一可用区间进行交换,那么恭喜你,这是最有效率的数据交换方式,也是我们最推荐的场景。数据应该尽量在一个可用区。

现阶段的云产品所配置的网络最差都是千兆网络,万兆网络基本普及。数据的迁移在一个可用区间经过的交换机最小,因此延迟低,带宽较大,可以做到比较理想的吞吐量。

因此,后端数据库、前端ECS和存放大量数据的 OSS 都应该在选择在同一个可用区。

2. 跨可用区、城市间可用区

部分有较高可用性要求的客户,会选择同城多可用区部署,甚至跨城市部署。进一步,阿里云有很多数据产品支持原生的多可用区部署方案。

阿里云在同城或跨城市的可用区间是通过专线网络连接。在这样的网络产品中交换数据效率虽然没有再同一可用区高,但依然能保证较高的网络质量。

从网络通讯效率角度,从高到低自然是:

同可用区 > 同城多可用区间 > 跨城多可用区间

例如:

(华东一 可用区B 内部) > (华东一 可用区B 和 华东一 可用区C 间) > (华东一 可用区B 和 华北一 可用区B 间)

3. 公网和 VPN 网络

这是效率最差的情况,也是背景章节中的数据上云场景的典型。因为该场景的物理通道是公共的且不可控。往往延迟较大,且质量有较大波动。

先天不足,自然需要用软件做适当的弥补,通常建议用户选取具有下列特性的软件或服务。

  • a: 支持重试机制,支持断点续传,大任务不能由于一个异常导致整个失败。
  • b: 支持并发机制,使用大并发增大吞吐量。
  • c: 使用增量数据迁移减少服务的停机时间。

接下来聊一聊数据交换中的数据格式问题。

二:关于数据格式

在不同数据产品间转移数据通常有两种方式

1. 不落地的数据迁移

软件或服务同时连接到源数据端和目的端,把数据从源端拉出来,转换成目的端识别的格式后立即写入到目的端。

该方法不需要数据中转空间,但要求的网络质量较高。如果数据量超大,如 TB 级,那么迁移时间也比较长。

阿里云开源产品 rds_dbsync, CDP(dataX, 云服务 DTS 都属于这类。

2. 通过通用文件格式的数据迁移

如果您的数据量较大,则建议使用离线迁移转移数据,例如几十 TB 的数仓数据。
离线迁移是指把全量数据导出成一种通用的数据格式,再导入到目的数据库。

相比不落地数据迁移,他有这些优势

  • 1)离线导出的数据通常都会进行压缩,压缩比一般在 1:2 到 1:5 之间,能较大节省网络开销,从而提升整体效率。
  • 2)离线方式很容易并行化,并行是提高效率的最有效手段。

基于文件的数据迁移,文件的格式是其中的关键。文件需要明确的交代数据的组织方式。

目前常用的文件格式有: TXT/CSV TSV ORC Parquet protobuf 等。
这里部分数据格式已经自带数据压缩,例如 ORC Parquet。 对于未压缩的格式,如 CSV 可以自由选择数据压缩格式,例如 gzip bzip2 snappy 等。

2.1 通过 TEXT/CSV 文件中转数据

  • 对于结构化数据,比较理想的数据格式是 CSV,CSV 是一种通用的数据格式标准,格式简单且透明,大家可以参考资料:CSV文件标准
  • PostgreSQL CSV 参数在资料2中。适用于社区和阿里云的 PostgreSQL 已经 Greenplum 和 HybridDB for PostgreSQL。
  • 任何符合 CSV 标准的文件都可以导入 PostgreSQL 系列产品。
    • PostgreSQL 推送式导入数据 COPY
    • HybridDB for PostgreSQL 推送式写数据 COPY

CSV 相对简单的文本格式的优势是定义了清楚的语意,用于很容易处理一些复杂的场景

  • CSV 行分割符号是 ‘\n’ ,也就是换行符
  • DELIMITER 用于定义列的分割符
    • 当用户数据中包括 DELIMITER 时,则需要配合 QUOTE 参数。
    • 推荐的列分割符有 ‘,’、‘\t‘ 、‘|’ 或一些不常出现的字符。
  • QUOTE 以列为单位包裹有特殊字符的用户数据
    • 用户包含有特殊字符的字符串会被 QUOTE 包裹,用于区分用户数据和控制字符。
    • 如果不必要,例如整数,数据不会被 QUOTE 包裹(用于优化效率)。
    • QUOTE 不能和 DELIMITER 相同,默认 QUOTE 是双引号。
    • 当用户数据中包含了 QUOTE 字符,则需要使用转义字符 ESCAPE 加以区分。
  • ESCAPE 特殊字符转义
    • 转义字符出现在需要转义的特殊字符前,表示它不是一个特殊字符
    • ESCAPE 默认和 QUOTE 相同,也就是双引号。
    • 也支持设置成 ‘\’(MySQL 默认的转义字符)或别的字符。
这是典型的 TEXT 和 CSV 文件中默认的控制字符
控制字符 \ 格式 TEXT CSV
DELIMITER(列分割符) \t (tab) , (comma)
QUOTE(摘引) " (double-quote) "(double-quote)
ESCAPE(转义) (不适用) 和 QUOTE 相同
NULL(空值) \N (backslash-N) (无引号的空字符串)

所有的控制字符都必须是单字节字符

2.2 用 OSS 中专数据

OSS 和 AWS 的 S3 一样,是云上廉价的存储服务,它打通了几乎所有的云产品。我们推荐用户使用它来中专大容量数据。

OSS 支持跨可用区数据转储数据(跨区域复制),用户可以很高效的把大量数据转移到另一个可用区。

目前,云裳的 PostgreSQL 和 HybridDB for PostgreSQL 都支持 OSS 数据源的读写。

  • PostgreSQL + OSS 读写外部数据源 oss_fdw
  • HybridDB for PostgreSQL + OSS 并行的导入导出数据 oss_ext

总结

本期分享了云上和数据转移相关的几个简单技巧,希望能帮到大家用好云。我们的产品在快速迭代,也请大家多反馈问题,帮助我们进步。

参考资料

  1. CSV 格式标准
  2. PostgreSQL COPY
  3. PostgreSQL + OSS oss_fdw
  4. HybridDB for PostgreSQL COPY
  5. HybridDB for PostgreSQL + OSS oss_ext
  6. 阿里云开源软件 rds_dbsync
  7. SLS 支持投递 CSV 格式的数据到 OSS
时间: 2024-12-26 02:40:55

PgSQL · 最佳实践 · 云上的数据迁移的相关文章

PgSQL · 最佳实践 · 从 MaxCompute (ODPS) 迁移数据到 HybridDB

title: PgSQL · 最佳实践 · 从 ODPS 迁移数据到 HybridDB author: 曾文旌(义从) 背景 最近,不少用户在尝试使用 HybridDB 的过程中,询问我们如何把之前在 ODPS 中的数据迁移到 HybridDB.今天就跟大家介绍一种效率较高的方法. 一:原理 ODPS 和 HybridDB 都是多数据节点组合成的集群架构,这样的架构如果要做到效率较高的数据吞吐,需要驱动数据节点主动推送数据.幸运的是 ODPS 和 HybridDB 都支持用该方式向 OSS 读写

SQL Server - 最佳实践 - SSMS配合BCP迁移SQL Server数据库上阿里云

本文讨论的主题是使用SSMS(SQL Server Management Studio)配合BCP命令行的方式来迁移SQL Server数据库.使用SSMS做数据库结构迁移,使用BCP命令做全量数据迁移,此方案是以本地SQL Server数据库迁移到阿里云RDS SQL Server 2012为例. 如果你觉得读取文章不够直观,请点击观看Youku视频,近25分钟的视频详细介绍来如何使用SSMS + BCP迁移SQL Server数据库上阿里云RDS SQL Server.使用SSMS+BCP迁

PgSQL · 最佳实践 · 双十一数据运营平台订单Feed数据洪流实时分析方案

摘要 2017年的双十一又一次刷新了记录,交易创建峰值32.5万笔/秒.支付峰值25.6万笔/秒.而这样的交易和支付等记录,都会形成实时订单Feed数据流,汇入数据运营平台的主动服务系统中去. 数据运营平台的主动服务,根据这些合并后的数据,实时的进行分析,进行实时的舆情展示,实时的找出需要主动服务的对象等,实现一个智能化的服务运营平台. 通过阿里云RDS PostgreSQL和HybridDB for PGSQL实时分析方案: - 承受住了几十万笔/s的写入吞吐并做数据清洗,是交易的数倍 - 实

ADO.NET最佳实践(上)

ado     概述:     本文在微软站点资源的基础上加工整理而成,意在介绍在你的ADO.NET应用程序中执行和完成性能优化.稳定性和功能性方面提供最佳的解决方案:同时也包含在ADO.NET中运用已有的数据对象进行开发的最佳实践和帮助你怎样设计ADO.NET应用程序提供建议.     本文包含以下内容:     1..NET框架中的data providers:     2.对照DataSet和DataReader,分别介绍他们的最佳用途:     3.如何使用DataSet.Command

十条绿色IT最佳实践共建高效节能数据中心

在过去几年里,"绿色IT"几乎成为了节能硬件的同义词,这些硬件较之之前几代类似的设备或组件更加高效.节能.例如,这些节能硬件设备在设计时具备节能模式或配有高级电源管理技术,这样在设备停机或不工作时可以消耗少量的能源.还有一个例子就是更加智能的数据中心冷却技术,尽管数据中心具有高机架密度,但这一智能冷却技术同样可以减少数据中心的能源消耗.当然,包括服务器.存储设备.打印机.笔记本和台式机等在内的硬件设备目前也都进行了改进,以减少能源的消耗. 坦白说,全球范围内的ICT能源消耗曲线目前还处

Greenplum在企业生产中的最佳实践(上)

本文章转自Pivotal公众号,在此感谢任振中和Pivotal公司的分享,希望对更多的朋友有帮助- 一.GP搭建过程当中硬件的选择和部署建议 GP是一个分布式X86架构,是把多台X86服务器组合成一起做一个大的集群.相比传统单机版的Oracle和MySQL,它的特点是使用比较多的服务器做海量数据处理. 一般在企业客户中,把X86服务器采集过来后会做上机安装,如果企业使用的集群规模比较大,比如国内客户最大的有将近128个节点,数据量有1PB.在部署的时候,X86的服务器会非常多,有超过100台的服

机器学习43条军规:解密谷歌机器学习工程最佳实践(上)

本文译者张相於,首发于微信公号ResysChina(resyschina),「AI早餐汇」经授权转载.以下为注解和编译的内容: 本文是对<Rules of Machine Learning: Best Practices for ML Engineering>一文的翻译+解读.看过我翻译文章的同学知道我翻译文章一般都不太老实,没有那么"忠于原著".本篇对于原文的解读大概有三种形式. 原文翻译.对于作者本身阐述的比较好,而我也没什么可补充的部分,基本会原文翻译. 半翻译半解读

PgSQL · 最佳实践 · pg_rman源码浅析与使用

背景 对于商业数据库来说,备份的功能一般都非常的全面. 比如Oracle,它的备份工具rman是非常强大的,很多年前就已经支持全量.增量.归档的备份模式,支持压缩等. 还支持元数据存储到数据库中,管理也非常的方便,例如保留多少归档,备份集的管理也很方便,例如要恢复到什么时间点,将此前的备份清除等等. 对于开源数据库来说,支持向商业版本这么丰富功能的比较少,PostgreSQL算是非常完善的一个. PostgreSQL作为最高级的开源数据库,备份方面已经向商业数据库看齐. 目前PostgreSQL

PgSQL · 最佳实践 · CPU满问题处理

前言 在数据库运维当中,一个DBA比较常遇到又比较紧急的问题,就是突发的CPU满(CPU利用率达到100%),导致业务停滞.DBA不一定非常熟悉业务实现逻辑,也不能掌控来自应用的变更或负载变化情况. 所以,遇到CPU满,往往只能从后端数据库开始排查,追溯到具体SQL,最终定位到业务层.这里我们总结下这个问题具体的处理方法. 查看连接数变化 CPU利用率到达100%,首先怀疑,是不是业务高峰活跃连接陡增,而数据库预留的资源不足造成的结果.我们需要查看下,问题发生时,活跃的连接数是否比平时多很多.对