本記事では、データをOceanBase Cloudに移行する方法について説明し、異なるデータソースに対して具体的なソリューションを提示します。
OceanBase Cloud:
データ移行とOBLOADERは大規模データ移行に使用されます。
標準SQLステートメント
LOAD DATAとINSERTは、簡単な小規模データインポートに使用されます。SQLステートメント
CREATE EXTERNAL TABLEは、外部データに対する柔軟なクエリに使用されます。
サードパーティ統合ツール:
Flink OceanBaseコネクタ、DataX OceanBase Writerプラグイン、Chunjun、Canal。
本記事では、各ソリューションの適用シナリオと、データファイル形式およびターゲットストレージシステムの特性に基づいて適切な移行方法を選択する方法について説明します。これにより、移行ツールと方法の全体像を理解し、データをOceanBase Cloudに移行して、その後のビジネス分析やアプリケーション開発を進めることができます。
データの移行
特長:
オンライン移行はダウンタイムなく、業務アプリケーションへの影響がありません。
高パフォーマンスで安全かつ信頼性の高いデータ移行。
ワンストップでの移行。
適用シナリオ:
- データ移行は、データベース間での大規模なデータ移行に適しています。
関連情報:
- データ移行の詳細については、データ移行ドキュメントを参照してください。
データ移行と評価プロセス
このセクションでは、OceanBase Cloudコンソールでデータ移行を実行する方法について説明します。
(オプション)互換性評価を実行します。
データ移行の前に、互換性評価タスクを作成してデータベースオブジェクトとSQLの使用状況を分析し、互換性評価レポートを生成できます。互換性評価サービスは自動化された改修計画を提供し、クラウド移行の難易度と改修コストを低減します。詳細については、互換性の評価を参照してください。
データ移行を開始します。
データ移行サービスを使用してデータベースのオンライン移行を行うには、数クリックするだけです。このサービスは、迅速かつ簡単なビジネス切り替えを提供します。詳細については、データの移行を参照してください。
(オプション)パフォーマンス評価を実行します。
データ移行後、切り替え前に包括的なパフォーマンス評価を実施するか、業務ワークロードを用いてトラフィックを再生し、事前にパフォーマンスリスクを特定できます。パフォーマンス評価サービスは最適化計画も提供し、ビジネスリスクの低減を支援します。詳細については、パフォーマンスの評価を参照してください。
OBLOADER
特長:
ローカルディスク、ネットワーク接続ストレージ(NAS)、Hadoop分散ファイルシステム(HDFS)、Alibaba Cloud OSS、Tencent Cloud COS、Huawei Cloud OBS、Apache Hadoop、Amazon S3からデータベースオブジェクト定義とテーブルデータをインポートできます。
mysqldumpでエクスポートされたINSERT SQL形式のファイルをインポートできます。
標準CSV、INSERT、SQL、Apache ORC、Apache Parquet形式のデータファイルをインポートできます。
データの事前処理ルールを設定し、ファイルとテーブル間のフィールドマッピングを構成できます。
インポート制限、メモリ枯渇防止、中断後の復旧、自動リトライなどの機能をサポートしています。
インポート中のエラーデータと競合データを格納するためのカスタムログディレクトリを指定できます。
大容量ファイルを自動的に分割し、追加のストレージ容量を消費しません。
コマンド内で指定されたデータベースアカウントとパスワード、クラウドストレージアカウントとパスワードなどの機密パラメータを暗号化できます。
OBLOADERは以下の書き込みモードをサポートしています:
クライアントモード:JDBCまたは直接ロードを介してOceanBase Cloudにデータを挿入できます。
サーバーモード:
LOAD DATAステートメントを使用してOceanBase Cloudにデータをインポートできます。
適用シナリオ:
- OBLOADERは大規模データのインポートに適しています。
関連情報:
- OBLOADERの詳細については、OBLOADERドキュメントを参照してください。
LOAD DATA
LOAD DATA LOCAL
特長:
ローカルファイルをOceanBase Cloudにインポートできます。ローカルファイルをネットワークストリームとしてインポートし、OceanBaseクラスタに挿入することができます。
一度に少量のデータをインポートすることをサポートします。
一度にファイルを1つのみインポートすることをサポートします。
CSV、SQL、Parquetファイルのインポートをサポートします。
適用シナリオ:
LOAD DATA LOCALステートメントは、小規模なデータインポートに適しています。
参照:
LOAD DATA LOCALの詳細については、LOAD DATAステートメントを使用したデータのインポートを参照してください。
LOAD DATA FROM OSS
特長:
ファイルをAlibaba Cloud OSSからOceanBase Cloudにインポートできます。
Alibaba Cloud OSSから一度に複数のファイルをインポートできます。
CSVファイルのインポートのみをサポートします。
適用シナリオ:
LOAD DATA FROM OSSステートメントは、大規模なデータインポートに適しています。
参照:
LOAD DATA FROM OSSの詳細については、LOAD DATA (Oracle互換モード)およびLOAD DATA (MySQL互換モード)を参照してください。
INSERT SQL
シナリオ:
INSERT INTO VALUESステートメントは、内部テーブルに少量のデータを書き込む場合に適しています。INSERT INTO SELECT FROM <table_name>ステートメントは、別の内部テーブルまたは外部テーブルのクエリ結果をターゲットテーブルに書き込む場合、つまりテーブル間のデータ移行に適しています。INSERT /*+ [APPEND |direct(need_sort,max_error,'full')] enable_parallel_dml parallel(N) */ INTO table_name select_sentenceステートメントは、全量および増分ダイレクトロードに適用されます。
参照:
- INSERTの詳細については、INSERT (Oracle互換モード)およびINSERT (MySQL互換モード)を参照してください。
CREATE EXTERNAL TABLE
シナリオ:
- 外部テーブルは、データベース管理システムにおける重要な機能です。一般的に、データベースのテーブルはデータベースのストレージ領域に格納されますが、外部テーブルのデータは外部ストレージサービスに保存されます。
参照:
- 外部テーブルの詳細については、概要 (Oracle互換モード)および概要 (MySQL互換モード)を参照してください。
Flink
シナリオ:
- Flink OceanBase Connectorは、Flinkからのデータのリアルタイムインポートに適しています。
参照:
Canal
シナリオ:
- Canalは、データをOceanBase Cloudにリアルタイムでインポートするのに適しています。
参照:
Kafka
シナリオ:
- Kafkaは、MySQL、Oracle、PostgreSQLなどのデータベースからOceanBaseデータベースへのデータ移行や同期に適しています。
参照:
DataX
適用シナリオ:
- DataXは、MySQL、OracleなどのリレーショナルデータベースやHDFS、Hiveなどのデータソースを含む、さまざまなデータソース間のデータ同期に適しています。DataXは毎回1つのテーブルのデータを移行でき、データ量に制限はなく、最大移行速度は60MB/sに達します。
関連情報:
CloudCanal
適用シナリオ:
- CloudCanalは、MySQL、Oracle、PostgreSQLデータベースのデータをOceanBase Cloudに移行または同期する場合に適しています。
参照:
SeaTunnel
シナリオ:
- SeaTunnelは、MySQL、Oracle、PostgreSQLなどのデータベースからOceanBaseデータベースへのデータ移行または同期に適しています。
参照:
インポートソリューションの選択
このセクションでは、一般的なデータソースでサポートされているインポートソリューションについて説明し、ビジネスシナリオに基づいて適切なインポートソリューションを迅速に選択できるようにします。
オブジェクトストレージサービス
クラウドベンダーのオブジェクトストレージサービスからOceanBase Cloudにデータをインポートする方法は、次の表のとおりです。
データソース |
サポートされているインポート方法 |
|---|---|
| Alibaba Cloud OSS |
|
| Tencent Cloud COS |
|
| Huawei Cloud OBS | |
| Amazon S3 |
|
| Azure Blob Storage | データをローカルまたはアクセス可能なサーバーにダウンロードし、MySQLコマンドラインツールまたはSQL管理ツールを使用してOceanBase Cloudにインポートします。MySQLコネクタライブラリを使用してスクリプトを作成し、SQLステートメントを実行してデータを一括挿入することもできます。 |
| Google Cloud Storage (GCS) | データをローカルまたはアクセス可能なサーバーにダウンロードし、MySQLコマンドラインツールまたはSQL管理ツールを使用してOceanBase Cloudにインポートします。MySQLコネクタライブラリを使用してスクリプトを作成し、SQLステートメントを実行してデータを一括挿入することもできます。 |
ファイルシステム
ローカルまたは分散ファイルシステムからOceanBase Cloudにデータをインポートする方法は、次の表のとおりです。
データソース |
サポートされているインポートソリューション |
|---|---|
| ローカルファイルシステム (NFS および NAS) |
|
| Hadoop分散ファイルシステム (HDFS) |
|
手順:
データの評価と準備を行います。
データ形式の理解:データは、CSV、JSON、XML、バイナリ、その他の形式でファイルシステムに保存されている可能性があります。
スキーマの定義:OceanBase Cloud内の対象テーブルのスキーマを指定し、移行するデータとデータ変換の必要性を確認します。
データを抽出します。
直接アクセス:OBServerノードがファイルシステムのマウントポイントに直接アクセスできる場合、SQLステートメント内にファイルパスを直接指定できます。例えば、
LOAD DATA INFILEを使用してCSVファイルをインポートする場合がこれに該当します。データの複製:OBServerノードがファイルシステムのマウントポイントに直接アクセスできない場合、ファイルデータをOBServerノードがアクセス可能なローカルディスクまたは一時ストレージにコピーします。
(オプション)データを変換します。
事前処理:OceanBase Cloud内の対象テーブルのスキーマに基づいてデータを事前処理します。例えば、スクリプトを作成するか、ETLツールを使用してデータ形式を変換したり、データをクリーニング(無効または不整合なレコードの削除)したり、日付と時刻の形式を変更したりできます。
変換ツール:Python、Pandasなどのスクリプト言語やETLツールを使用してデータを変換できます。
データをロードします。
LOAD DATA INFILE:OceanBase CloudのLOAD DATA INFILEステートメントを使用して、一度に大量のデータをインポートできます。指定されたファイルパスからデータを読み取る権限があることを確認してください。MySQLクライアント:mysql-connector-pythonクライアントを使用してプログラミングし、データの一括挿入を実現できます。
注意:
アクセス権限:NFSまたはNASデータベースからデータを読み取り、MySQLデータベースにデータを書き込む権限があることを確認してください。
データセキュリティ:データのセキュリティとプライバシーを確保し、移行プロセスで適用されるデータ保護規制および法律を遵守してください。
バックアップ:いかなる移行タスクを開始する前に、元のデータとターゲットデータベースをバックアップしてください。
ストリーミングメディアシステム
次の表は、ストリーミングメディアシステムからOceanBase Cloudにデータをインポートするためのソリューションを示しています。
データソース |
サポートされているインポートソリューション |
|---|---|
| Flink | |
| Canal | |
| Spark | JDBC |
データベース
他のデータベースからOceanBase Cloudにデータをインポートするソリューションは、次の表のとおりです。
データソース |
サポートされているインポートソリューション |
|---|---|
| MySQLデータベース |
|
| Oracleデータベース |
|
| PostgreSQLデータベース |
|
| TiDB |
|
| SQL Server |
|
| StarRocks | オフラインデータ移行:StarRocksからデータをダンプし、OBLOADERまたはLOAD DATAステートメントを使用して、データをOceanBase Cloudにインポートします。 |
| Doris | オフラインデータ移行:Dorisからデータをダンプし、OBLOADERまたはLOAD DATAステートメントを使用して、データをOceanBase Cloudにインポートします。 |
| HBase |
|
| MaxCompute | オフラインデータ移行:MaxComputeからデータをダンプし、OBLOADERまたはLOAD DATAステートメントを使用して、データをOceanBase Cloudにインポートします。 |
| Hologres | オフラインデータ移行:Hologresからデータをダンプし、OBLOADERまたはLOAD DATAステートメントを使用して、データをOceanBase Cloudにインポートします。 |