首批通过分布式安全可靠测评,为关键业务系统打造
导出数据
更新时间:2024-08-29 14:30:47
数据流动是面向分析的业务场景中最关键的环节之一。本文介绍如何将 OceanBase 数据库的数据导出到中文件系统或对象存储中。针对不同的数据来源,本文提供以下各种数据导出方案。
obdumper
obdumper 是一款用 Java 开发,专为 OceanBase 数据库设计的客户端工具,可将数据库对象和表数据导出到至本地磁盘、Aliyun OSS、Amazon S3、Tencent COS 和 Huawei OBS。您可以使用 obdumper 命令将数据导出为 CSV、Delimited Text、Fixed Length、SQL、Apache ORC 和 Apache Parquet。
基本特性:
obdumper 特性如下:
- 支持指定分区名,仅导出指定的表分区内的数据。
- 支持指定全局的过滤条件,仅导出满足条件的数据。
- 支持指定自定义的查询语句,仅导出该查询语句的结果集。
- 支持指定 SCN 或者 TIMESTAMP,仅导出有效事务点或者时间点的历史快照数据。
适用场景:
- 适用于需要高效导出大规模数据的场景,比如计算型集群、分析型集群的备份等。也适用于对数据进行预处理,例如脱敏或加密。
使用参考:
- 更多信息,参考 什么是 obdumper。
OUTFILE
您可以使用 SELECT INTO OUTFILE 语句将查询结果导出到文件。SELECT INTO OUTFILE 语句能够对需要导出的字段做出限制,因此适用于某些不需要导出主键字段的场景。
基本特性:
- 可以选择输出为 TXT、SQL、CSV、固定长度文件、XML 和 JSON。
- 可以限制需要导出的字段,适用于排除主键字段等特定场景。
适用场景:
- 适用于小规模数据的导出,例如简单的备份和迁移。
使用参考:
- 更多信息,参考 使用 OUTFILE 语句导出数据。
mysqldump
基本特性:
- mysqldump 可以将整个数据库、特定表或者查询结果备份到一个 SQL 脚本文件中。
- mysqldump 支持将备份数据导出到文件系统,以供后续恢复或迁移使用。
适用场景:
- mysqldump 适用于中小规模的数据迁移。
使用参考:
- 使用 mysqldump 工具可以备份整个数据库,命令示例:
mysqldump -u <username> -p<password> <database_name> > backup.sql。更多信息,参考 mysqldump 文档。
mydumper
基本特性:
- 并行备份:mydumper 能够以并行方式备份数据。
- 备份压缩:支持备份数据的压缩。
- 备份恢复:能够快速恢复备份数据到数据库系统。
适用场景:
- mydumper 适用于大规模数据库,对备份速度和存储空间有较高要求的场景。
使用参考:
- 全量备份:mydumper -u
-p -B <database_name> -o <backup_dir>。更多信息,参考 mydumper 文档。
DataX
基本特性:
- 高效传输
- 支持多种数据源
- 配置灵活
适用场景:
- DataX 适用于从几十 GB 到几 TB 甚至更大规模的数据迁移任务。
使用参考:
- 更多信息,参考 DataX 文档。
导出方案选择
| 对比项 | obdumper | OUTFILE | mysqldump | mydumper | DataX |
|---|---|---|---|---|---|
| 场景推荐 | 数据逻辑备份 数据处理 数据高压缩 |
简单数据导出 | 全量备份 | 全量和增量备份 | 提供强大的数据源支持。数据源可以是运行中的数据库,消息队列等。可用于数据库离线迁移。 |
| 数据源 | 静态文件 | 静态文件 | 静态文件 | 静态文件 | 结构化和非结构化数据源 |
| 格式 | 文本格式:CSV(RFC-4180),INSERT SQL,Delimited Text, Fixed Length。 二进制格式:Apache ORC,Apaceh Parquet,Apache Avro。 |
文本文件 | SQL 文件、Delimited Text | SQL 文件、文本文件 | 各关系型数据库,文本,Hbase,Kafka 等。 |
| 性能 | 高 | 一般 | 低 | 高 | 高 |
| 是否支持压缩 | 是 | 否 | 是 | 是 | 是 |
| 是否支持带条件导出 | 是 | 否 | 是 | 是 | 是 |
| DDL | 是 | 否 | 是 | 是 | 否 |
| 数据预处理 | 是 | 是 | 是 | 否 | 否 |
| 实时监控 | 是 | 否 | 否 | 否 | 否 |
| 文件编码 | 可指定,只要系统支持的都可以 | 系统默认编码 | UTF-8 | 支持的文件编码格式与文本文件编码的支持情况相关 | UTF-8 |