本記事では、OceanBaseデータ移行ツールを使用して、OceanBaseデータベースのOracleテナントからMySQLテナントへデータを移行する方法について説明します。
OceanBaseデータエクスポート・インポートツールの概要
OceanBaseデータエクスポート・インポートツールには、エクスポートツールobdumperとインポートツールobloaderが含まれます。
obdumperは、Javaで開発されたクライアントエクスポートツールです。このツールを使用して、OceanBaseデータベース内で定義されたオブジェクトとデータをファイルにエクスポートできます。obdumperの詳細については、obdumperの概要を参照してください。
obloaderは、Javaで開発されたクライアントインポートツールです。このツールは非常に柔軟なコマンドラインオプションを提供しており、さまざまな複雑なシナリオで定義とデータをOceanBaseにインポートできます。obloaderの詳細については、obloaderの概要を参照してください。
操作手順
obdumperとobloaderの実行環境を準備します。環境の準備およびツールのダウンロードを参照してください。
エクスポートデータを格納するディレクトリを作成します。
テーブル構造/データをエクスポートします。
[xxx@xxx /ob-loader-dumper-4.0.0-RELEASE/bin] $./obdumper -h <ホストIP> -P <ポート> -u <ユーザー> -p <パスワード> [--sys-user <sysテナント内のユーザー名> --sys-password <sysテナント内の特定ユーザーのパスワード>] -c <クラスタ名> -t <テナント> -D <スキーマ名> [--ddl] [--csv|--sql] [--all|--table 'テーブル名'] -f <データファイルまたはディレクトリ>説明
- OceanBase物理ノードのホストアドレスとポートを使用してデータをエクスポートする場合、
-cオプションを指定する必要はありません。 - obdumperコマンドラインオプションの詳細については、コマンドラインオプションを参照してください。
- OceanBase物理ノードのホストアドレスとポートを使用してデータをエクスポートする場合、
テーブル構造/データをインポートします。
[xxx@xxx /ob-loader-dumper-4.0.0-RELEASE/bin] $./obloader -h <ホストIP> -P <ポート> -u <ユーザー> -p <パスワード> --sys-user <sysテナント内のrootユーザーまたはproxyroユーザー> --sys-password <sysテナント内のユーザーのパスワード> -c <クラスタ> -t <テナント> -D <スキーマ名> [--ddl] [--csv|--sql] [--all|--table 'テーブル名'] -f <データファイルまたはディレクトリ>説明
- OceanBase物理ノードのホストアドレスとポートを使用してデータをインポートする場合、
-cオプションを指定する必要はありません。 - obloaderコマンドラインオプションの詳細については、コマンドラインオプションを参照してください。
- OceanBase物理ノードのホストアドレスとポートを使用してデータをインポートする場合、
データのエクスポートとインポートの例
以下の表は、例で使用されるデータベース情報です。
| データベース情報 | サンプル値 |
|---|---|
| クラスタ名 | test4000 |
| OceanBase DataBase Proxy (ODP) ホストアドレス | xxx.xxx.xxx.xxx |
| OceanBase DataBase Proxy (ODP) ポート番号 | 2883 |
| sysテナントのrootユーザーのパスワード | ****** |
| ソーステナント名(Oracleモード) | oracle001 |
| テナントoracle001のユーザーアカウント(読み書き権限が必要) | obdumper_user01 |
| テナントoracle001のユーザーobdumper_user01のパスワード | ****** |
| テナントoracle001のSchemaデータベース名 | OBDUMPER_USER01 |
| ターゲットテナント名(MySQLモード) | mysql001 |
| テナントmysql001のユーザーアカウント(読み書き権限が必要) | obloader_user01 |
| テナントmysql001のユーザーobloader_user01のパスワード | ****** |
| テナントmysql001のSchemaデータベース名 | test_data |
テーブル構造の移行
obdumperとobloaderを使用してテーブル構造を移行する際には、--sys-userおよび--sys-passwordオプションを指定して、テーブル構造メタデータ情報を取得する必要があります。これらのオプションを指定しない場合、エクスポート/インポート機能およびパフォーマンスに大きな影響を与える可能性があります。
説明
--sys-userオプションは、sysテナント内で特定の権限を持つユーザーに接続するために使用されます。エクスポート時にこの--sys-userオプションを指定しない場合、デフォルトでは--sys-user rootが指定されます。
DDL定義ファイルのエクスポート
シナリオの説明:クラスタtest4000のテナントoracle001内のスキーマOBDUMPER_USER01から、サポートされているすべてのオブジェクト定義ステートメントを/home/admin/test_migrate_data/ddl_dataディレクトリにエクスポートします。
サンプルステートメントは以下のとおりです。
[xxx@xxx /ob-loader-dumper-4.0.0-RELEASE/bin] $./obdumper -h xxx.xxx.xxx.xxx -P 2883 -u obdumper_user01 -p ****** -c test4000 -t oracle001 -D obdumper_user01 --sys-user root --sys-password ****** --ddl --all -f /home/admin/test_migrate_data/ddl_data 2022-12-26 18:41:07 [INFO] Parsed args: [--ddl] true [--file-path] /home/admin/test_migrate_data/ddl_data [--host] xxx.xxx.xxx.xxx [--port] 2883 [--user] obdumper_user01 [--tenant] oracle001 [--cluster] test4000 [--password] ****** [--database] obdumper_user01 [--sys-user] root [--sys-password] ****** [--all] true 2022-12-26 18:41:07 [INFO] Load jdbc driver class: "com.oceanbase.jdbc.Driver" finished 2022-12-26 18:41:07 [INFO] The manifest file: "/home/admin/test_migrate_data/ddl_data/data/MANIFEST.bin" has been saved 2022-12-26 18:41:07 [INFO] Query column metadata for the table: "TEST_TBL1" finished 2022-12-26 18:41:07 [INFO] Query column metadata for the table: "TEST_TBL2" finished 2022-12-26 18:41:07 [INFO] Found 2 empty tables before dump out records. Elapsed: 11.61 ms 2022-12-26 18:41:07 [WARN] No views are exist in the schema: "OBDUMPER_USER01" 2022-12-26 18:41:07 [WARN] No triggers are exist in the schema: "OBDUMPER_USER01" 2022-12-26 18:41:07 [WARN] No functions are exist in the schema: "OBDUMPER_USER01" 2022-12-26 18:41:07 [WARN] No procedures are exist in the schema: "OBDUMPER_USER01" 2022-12-26 18:41:07 [WARN] No types are exist in the schema: "OBDUMPER_USER01" 2022-12-26 18:41:07 [WARN] No type bodies are exist in the schema: "OBDUMPER_USER01" 2022-12-26 18:41:07 [WARN] No packages are exist in the schema: "OBDUMPER_USER01" 2022-12-26 18:41:07 [WARN] No package bodies are exist in the schema: "OBDUMPER_USER01" 2022-12-26 18:41:07 [WARN] No synonyms are exist in the schema: "OBDUMPER_USER01" 2022-12-26 18:41:07 [WARN] No public synonyms are exist in the schema: "OBDUMPER_USER01" 2022-12-26 18:41:07 [WARN] No sequences are exist in the schema: "OBDUMPER_USER01" 2022-12-26 18:41:07 [WARN] No table groups are exist in the tenant: "oracle001" 2022-12-26 18:41:07 [INFO] Generate 1 dump tasks finished. Total Elapsed: 3.876 ms 2022-12-26 18:41:07 [INFO] Start 3 schema dump threads for 1 dump tasks finished. 2022-12-26 18:41:07 [INFO] Build direct com.alibaba.druid.pool.DruidDataSource finished 2022-12-26 18:41:07 [INFO] No need to acquire DataSource for xxx@sys, as observer is 4.0.0.0 2022-12-26 18:41:07 [INFO] Return the latest compatible version: 4.0.0.0 -> 4.0.0.0 2022-12-26 18:41:07 [INFO] Dump create objects success. DbType: OBORACLE Version: 4.0.0.0 2022-12-26 18:41:07 [INFO] ObOracle(4.0.0.0) is older than 4.0.0.0 ? false 2022-12-26 18:41:07 [INFO] Load meta/oboracle/oboracle22x.xml, meta/oboracle/oboracle40x.xml successed 2022-12-26 18:41:07 [INFO] Query 0 dependencies elapsed 41.82 ms 2022-12-26 18:41:08 [INFO] Query table: "TEST_TBL1" attr finished. Remain: 0 2022-12-26 18:41:08 [INFO] Query table: "TEST_TBL2" attr finished. Remain: 0 2022-12-26 18:41:08 [INFO] Query 2 tables elapsed 285.4 ms 2022-12-26 18:41:08 [INFO] Dump [TABLE] TEST_TBL1 to "/home/admin/test_migrate_data/ddl_data/data/OBDUMPER_USER01/TABLE/TEST_TBL1-schema.sql " finished 2022-12-26 18:41:08 [INFO] Dump [TABLE] TEST_TBL2 to "/home/admin/test_migrate_data/ddl_data/data/OBDUMPER_USER01/TABLE/TEST_TBL2-schema.sql " finished 2022-12-26 18:41:08 [INFO] No.1 It has dumped 2 TABLEs finished. Remain: 0 2022-12-26 18:41:08 [INFO] Total dumped 2 TABLEs finished. Elapsed: 376.1 ms 2022-12-26 18:41:08 [INFO] Dump the ddl of schema: "OBDUMPER_USER01" finished 2022-12-26 18:41:08 [INFO] Close connection count: 19 of the DataSource. Key: xxx.xxx.xxx.xxx_11532_840547833_obdumper_user01 2022-12-26 18:41:08 [INFO] Shutdown task context finished 2022-12-26 18:41:08 [INFO] ---------- Finished Tasks: 1 Running Tasks: 0 Progress: 100.00% ---------- 2022-12-26 18:41:08 [INFO] All Dump Tasks Finished: ---------------------------------------------------------------------------------------------------------------------------- No.# | Type | Name | Count | Status ---------------------------------------------------------------------------------------------------------------------------- 1 | TABLE | TEST_TBL2 | 1 | SUCCESS 2 | TABLE | TEST_TBL1 | 1 | SUCCESS ---------------------------------------------------------------------------------------------------------------------------- Total Count: 2 End Time: 2022-12-26 18:41:08 2022-12-26 18:41:08 [INFO] Dump schema finished. Total Elapsed: 1.070 s 2022-12-26 18:41:08 [INFO] Unnecessary to upload the data files to the remote cloud storage service 2022-12-26 18:41:08 [INFO] System exit 0エクスポートディレクトリ構造は以下のとおりです。
[xxx@xxx /ob-loader-dumper-4.0.0-RELEASE/bin] $tree /home/admin/test_migrate_data/ddl_data /home/admin/test_migrate_data/ddl_data ├── data │ ├── CHECKPOINT.bin │ ├── MANIFEST.bin │ └── OBDUMPER_USER01 │ └── TABLE │ ├── TEST_TBL1-schema.sql │ └── TEST_TBL2-schema.sql └── logs ├── ob-loader-dumper.error ├── ob-loader-dumper.info └── ob-loader-dumper.warn 4 directories, 7 filesエクスポート結果ファイルを確認します。
[xxx@xxx /ob-loader-dumper-4.0.0-RELEASE/bin] $cat /home/admin/test_migrate_data/ddl_data/data/OBDUMPER_USER01/TABLE/TEST_TBL1-schema.sql CREATE TABLE "TEST_TBL1" ( "COL1" NUMBER(11,0) NOT NULL, "COL2" VARCHAR2(20 BYTE), "COL3" NUMBER(11,0), CONSTRAINT "TEST_TBL1_OBPK_1672051192536124" PRIMARY KEY ("COL1") );
DDL定義ファイルのインポート
シナリオの説明:クラスタtest4000のテナントoracle001にあるSchemaOBDUMPER_USER01から、サポートされているすべての定義情報を/home/admin/test_migrate_data/ddl_dataディレクトリにエクスポートし、クラスタtest4000のテナントmysql001にあるSchematest_dataにインポートします。
注意
OracleテナントからエクスポートされたDDLファイルはMySQLテナントの構文要件に適合していないため、OracleテナントからエクスポートされたDDLファイルを、まずMySQLテナントの構文要件に適合するDDLファイルに変更した後、MySQLテナントにインポートします。
例えば、テナントoracle001からエクスポートされたDDLファイルの変更ルールは以下のとおりです:
- データ型をMySQLモードで共通するデータ型に変更します:
NUMBER(11,0)をint(11)に変更します。VARCHAR2(20 BYTE)をvarchar(20)に変更します。
CONSTRAINT "TEST_TBL1_OBPK_1672051192536124"パラメータを削除します。- すべてのダブルクォーテーションマークを削除します。
MySQLモードのデータ型の詳細については、データ型の概要を参照してください。
サンプルステートメントは以下のとおりです。
[xxx@xxx /ob-loader-dumper-4.0.0-RELEASE/bin] $./obloader -h xxx.xxx.xxx.xxx -P 2883 -u obloader_user01 -p ****** --sys-user root --sys-password ****** -c test4000 -t mysql001 -D test_data --ddl --all -f /home/admin/test_migrate_data/ddl_data 2022-12-27 11:00:35 [INFO] Parsed args: [--ddl] true [--file-path] /home/admin/test_migrate_data/ddl_data [--host] xxx.xxx.xxx.xxx [--port] 2883 [--user] obloader_user01 [--tenant] mysql001 [--cluster] test4000 [--password] ****** [--database] test_data [--sys-user] root [--sys-password] ****** [--all] true 2022-12-27 11:00:35 [INFO] Load jdbc driver class: "com.oceanbase.jdbc.Driver" finished 2022-12-27 11:00:35 [INFO] The manifest file: "/home/admin/test_migrate_data/ddl_data/data/MANIFEST.bin" has been saved 2022-12-27 11:00:35 [INFO] Init writer thread pool finished 2022-12-27 11:00:35 [WARN] The object type : "SEQUENCE" doesn't exist in the -schema.sql files 2022-12-27 11:00:35 [WARN] The object type : "TABLE_GROUP" doesn't exist in the -schema.sql files 2022-12-27 11:00:35 [INFO] Start 128 schema file loader threads successed 2022-12-27 11:00:36 [INFO] No.1 sql of the file: "/home/admin/test_migrate_data/ddl_data/data/OBDUMPER_USER01/TABLE/TEST_TBL1-schema.sql" exec success. Elapsed: 70.51 ms 2022-12-27 11:00:36 [INFO] Load file: "TEST_TBL1-schema.sql" succeeded 2022-12-27 11:00:36 [INFO] No.1 sql of the file: "/home/admin/test_migrate_data/ddl_data/data/OBDUMPER_USER01/TABLE/TEST_TBL2-schema.sql" exec success. Elapsed: 118.7 ms 2022-12-27 11:00:36 [INFO] Load file: "TEST_TBL2-schema.sql" succeeded 2022-12-27 11:00:36 [WARN] The object type : "VIEW" doesn't exist in the -schema.sql files 2022-12-27 11:00:36 [WARN] The object type : "FUNCTION" doesn't exist in the -schema.sql files 2022-12-27 11:00:36 [WARN] The object type : "PROCEDURE" doesn't exist in the -schema.sql files 2022-12-27 11:00:36 [WARN] The object type : "TRIGGER" doesn't exist in the -schema.sql files 2022-12-27 11:00:36 [WARN] The object type : "PACKAGE" doesn't exist in the -schema.sql files 2022-12-27 11:00:36 [WARN] The object type : "TYPE" doesn't exist in the -schema.sql files 2022-12-27 11:00:36 [WARN] The object type : "PACKAGE_BODY" doesn't exist in the -schema.sql files 2022-12-27 11:00:36 [WARN] The object type : "TYPE_BODY" doesn't exist in the -schema.sql files 2022-12-27 11:00:36 [WARN] The object type : "SYNONYM" doesn't exist in the -schema.sql files 2022-12-27 11:00:36 [WARN] The object type : "PUBLIC_SYNONYM" doesn't exist in the -schema.sql files 2022-12-27 11:00:36 [WARN] The object type : "FILE" doesn't exist in the -schema.sql files 2022-12-27 11:00:37 [INFO] Close connection count: 1 of the DataSource. Key: xxx.xxx.xxx.xxx_11532_332378361_test_data 2022-12-27 11:00:37 [INFO] Shutdown task context finished 2022-12-27 11:00:37 [INFO] ---------- Finished Tasks: 2 Running Tasks: 0 Progress: 100.00% ---------- 2022-12-27 11:00:37 [INFO] All Load Tasks Finished: ---------------------------------------------------------------------------------------------------------------------------- No.# | Type | Name | Count | Status ---------------------------------------------------------------------------------------------------------------------------- 1 | TABLE | TEST_TBL2 | 1 -> 1 | SUCCESS 2 | TABLE | TEST_TBL1 | 1 -> 1 | SUCCESS ---------------------------------------------------------------------------------------------------------------------------- Total Count: 2 End Time: 2022-12-27 11:00:37 2022-12-27 11:00:37 [INFO] Load schema finished. Total Elapsed: 1.073 s 2022-12-27 11:00:37 [INFO] System exit 0インポートされたテーブル構造を確認します。
obclient [test_data]> SHOW CREATE TABLE test_tbl1\G *************************** 1. row *************************** Table: test_tbl1 Create Table: CREATE TABLE `test_tbl1` ( `COL1` int(11) NOT NULL, `COL2` varchar(20) DEFAULT NULL, `COL3` int(11) DEFAULT NULL, PRIMARY KEY (`COL1`) ) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC COMPRESSION = 'zstd_1.3.8' REPLICA_NUM = 3 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0 1 row in set
テーブルデータの移行
以下では、CSVデータファイルのエクスポートとインポートを例に、obdumperおよびobloaderを使用したテーブルデータの移行方法を説明します。
CSVデータファイルのエクスポート
ファイルタイプの定義:CSVデータファイル(拡張子.csv)は、カンマ区切り値ファイル形式であり、CSVデータファイルはテキスト形式でテーブルデータを格納しており、テキストエディタなどのツールやExcelで開くことができます。
シナリオの説明:クラスタtest4000のテナントoracle001内のスキーマOBDUMPER_USER01から、サポートされているすべてのオブジェクトのデータをCSV形式で/home/admin/test_migrate_data/csv_dataディレクトリにエクスポートします。
サンプルステートメントは以下のとおりです。
[xxx@xxx /ob-loader-dumper-4.0.0-RELEASE/bin] $./obdumper -h xxx.xxx.xxx.xxx -P 2883 -u obdumper_user01 -p ****** -c test4000 -t oracle001 -D obdumper_user01 --sys-user root --sys-password ****** --csv --table '*' -f /home/admin/test_migrate_data/csv_data 2022-12-27 10:02:20 [INFO] Parsed args: [--csv] true [--file-path] /home/admin/test_migrate_data/csv_data [--host] xxx.xxx.xxx.xxx [--port] 2883 [--user] obdumper_user01 [--tenant] oracle001 [--cluster] test4000 [--password] ****** [--database] obdumper_user01 [--sys-user] root [--sys-password] ****** [--table] [*] 2022-12-27 10:02:20 [INFO] Load jdbc driver class: "com.oceanbase.jdbc.Driver" finished 2022-12-27 10:02:21 [INFO] The manifest file: "/home/admin/test_migrate_data/csv_data/data/MANIFEST.bin" has been saved 2022-12-27 10:02:21 [INFO] Query column metadata for the table: "TEST_TBL1" finished 2022-12-27 10:02:21 [INFO] Query column metadata for the table: "TEST_TBL2" finished 2022-12-27 10:02:21 [INFO] Query partition names for table: "TEST_TBL1" success. (Non-partitioned) 2022-12-27 10:02:21 [INFO] Query partition names for table: "TEST_TBL2" success. (Non-partitioned) 2022-12-27 10:02:21 [INFO] Query primary key for table: "TEST_TBL1" success. Elapsed: 160.8 ms 2022-12-27 10:02:21 [INFO] Query primary key for table: "TEST_TBL2" success. Elapsed: 160.8 ms 2022-12-27 10:02:21 [INFO] Query table entry for table: "TEST_TBL2" success. Remain: 0. Elapsed: 4.120 ms 2022-12-27 10:02:21 [INFO] Query table entry for table: "TEST_TBL1" success. Remain: 0. Elapsed: 4.203 ms 2022-12-27 10:02:21 [INFO] Query all table entries success. Total: 2. Elapsed: 208.0 ms 2022-12-27 10:02:21 [INFO] ....Splitting rows for non-partitioned table: "TEST_TBL2" success. Batch: 1 2022-12-27 10:02:21 [INFO] ....Splitting rows for non-partitioned table: "TEST_TBL1" success. Batch: 1 2022-12-27 10:02:21 [INFO] ....Splitting rows for non-partitioned table: "TEST_TBL2" success. Batch: 2 2022-12-27 10:02:21 [INFO] ....Splitting rows for non-partitioned table: "TEST_TBL1" success. Batch: 2 2022-12-27 10:02:21 [INFO] Split rows for non-partitioned table(with primary key): "TEST_TBL2" success. Ranges: 2. Elapsed: 48.60 ms 2022-12-27 10:02:21 [INFO] Split rows for non-partitioned table(with primary key): "TEST_TBL1" success. Ranges: 2. Elapsed: 48.60 ms 2022-12-27 10:02:21 [INFO] Generate 4 dump tasks finished. Total Elapsed: 62.72 ms 2022-12-27 10:02:21 [INFO] Start 128 record dump threads for 4 dump tasks finished 2022-12-27 10:02:21 [INFO] Dump 5 rows OBDUMPER_USER01.TEST_TBL2 to "/home/admin/test_migrate_data/csv_data/data/OBDUMPER_USER01/TABLE/TEST_TBL2.1.*.csv" finished 2022-12-27 10:02:21 [INFO] Dump 5 rows OBDUMPER_USER01.TEST_TBL1 to "/home/admin/test_migrate_data/csv_data/data/OBDUMPER_USER01/TABLE/TEST_TBL1.1.*.csv" finished 2022-12-27 10:02:22 [INFO] Close connection count: 12 of the DataSource. Key: xxx.xxx.xxx.xxx_11532_840547833_obdumper_user01 2022-12-27 10:02:22 [INFO] Shutdown task context finished 2022-12-27 10:02:22 [INFO] ---------- Finished Tasks: 4 Running Tasks: 0 Progress: 100.00% ---------- 2022-12-27 10:02:22 [INFO] All Dump Tasks Finished: ---------------------------------------------------------------------------------------------------------------------------- No.# | Type | Name | Count | Status ---------------------------------------------------------------------------------------------------------------------------- 1 | TABLE | TEST_TBL2 | 5 | SUCCESS 2 | TABLE | TEST_TBL1 | 5 | SUCCESS ---------------------------------------------------------------------------------------------------------------------------- Total Count: 10 End Time: 2022-12-27 10:02:22 2022-12-27 10:02:22 [INFO] Unnecessary to merge the data files. As --file-name is missing 2022-12-27 10:02:22 [INFO] Dump record finished. Total Elapsed: 1.356 s 2022-12-27 10:02:22 [INFO] Unnecessary to upload the data files to the remote cloud storage service 2022-12-27 10:02:22 [INFO] System exit 0エクスポートディレクトリ構造は以下のとおりです。
[xxx@xxx /ob-loader-dumper-4.0.0-RELEASE/bin] $tree /home/admin/test_migrate_data/csv_data /home/admin/test_migrate_data/csv_data ├── data │ ├── CHECKPOINT.bin │ ├── MANIFEST.bin │ └── OBDUMPER_USER01 │ └── TABLE │ ├── TEST_TBL1.1.0.csv │ └── TEST_TBL2.1.0.csv └── logs ├── ob-loader-dumper.error ├── ob-loader-dumper.info └── ob-loader-dumper.warn 4 directories, 7 filesエクスポート結果ファイルを確認します。
[xxx@xxx /ob-loader-dumper-4.0.0-RELEASE/bin] $cat /home/admin/test_migrate_data/csv_data/data/OBDUMPER_USER01/TABLE/TEST_TBL1.1.0.csv 'COL1','COL2','COL3' 1,'China',86 2,'Taiwan',886 3,'Hong Kong',852 4,'Macao',853 5,'North Korea',850
CSVデータファイルのインポート
シナリオの説明:クラスタtest4000のテナントoracle001にあるスキーマOBDUMPER_USER01から、サポートされているすべてのCSVデータファイルを/home/admin/test_migrate_data/csv_dataディレクトリにエクスポートし、クラスタtest4000のテナントmysql001にあるスキーマtest_dataにインポートします。
注意
- テナント
oracle001のスキーマOBDUMPER_USER01をエクスポートするディレクトリ/home/admin/test_migrate_data/csv_data/data/のOBDUMPER_USER01名をtest_dataに変更する必要があります。 - エクスポートされたCSVファイル名のテーブル名の英字を小文字に変更します。
例文は以下のとおりです:
[root@xxx /home/admin/test_migrate_data/csv_data/data]# mv OBDUMPER_USER01 test_data
[root@xxx /home/admin/test_migrate_data/csv_data/data]# cd test_data/TABLE
[root@xxx /home/admin/test_migrate_data/csv_data/data/test_data/TABLE]# ls
TEST_TBL1.1.0.csv TEST_TBL2.1.0.csv
[root@xxx /home/admin/test_migrate_data/csv_data/data/test_data/TABLE]# mv TEST_TBL1.1.0.csv test_tbl1.1.0.csv
[root@xxx /home/admin/test_migrate_data/csv_data/data/test_data/TABLE]# mv TEST_TBL2.1.0.csv test_tbl2.1.0.csv
例文は以下のとおりです。
[xxx@xxx /ob-loader-dumper-4.0.0-RELEASE/bin] $./obloader -h xxx.xxx.xxx.xxx -P 2883 -u obloader_user01 -p ****** --sys-user root --sys-password ****** -c test4000 -t mysql001 -D test_data --csv --table '*' -f /home/admin/test_migrate_data/csv_data 2022-12-27 11:17:21 [INFO] Parsed args: [--csv] true [--file-path] /home/admin/test_migrate_data/csv_data [--host] xxx.xxx.xxx.xxx [--port] 2883 [--user] obloader_user01 [--tenant] mysql001 [--cluster] test4000 [--password] ****** [--database] test_data [--sys-user] root [--sys-password] ****** [--table] [*] 2022-12-27 11:17:22 [INFO] Load jdbc driver class: "com.oceanbase.jdbc.Driver" finished 2022-12-27 11:17:22 [INFO] The manifest file: "/home/admin/test_migrate_data/csv_data/data/MANIFEST.bin" has been saved 2022-12-27 11:17:22 [INFO] Query column metadata for the table: "test_tbl1" finished 2022-12-27 11:17:22 [INFO] Query column metadata for the table: "test_tbl2" finished 2022-12-27 11:17:22 [INFO] File: "/home/admin/test_migrate_data/csv_data/data/CHECKPOINT.bin" is unmatched on the suffix[.csv], ignore it 2022-12-27 11:17:22 [INFO] File: "/home/admin/test_migrate_data/csv_data/data/MANIFEST.bin" is unmatched on the suffix[.csv], ignore it 2022-12-27 11:17:22 [INFO] Binding table: "test_tbl2" to the file: "/home/admin/test_migrate_data/csv_data/data/test_data/TABLE/test_tbl2.1.0.csv" finished 2022-12-27 11:17:22 [INFO] Binding table: "test_tbl1" to the file: "/home/admin/test_migrate_data/csv_data/data/test_data/TABLE/test_tbl1.1.0.csv" finished 2022-12-27 11:17:22 [INFO] Splitted 2 csv subfiles by 64.0 MB. Elapsed: 21.68 ms 2022-12-27 11:17:22 [INFO] Generate 2 subfiles finished 2022-12-27 11:17:22 [INFO] Ignore to clean any tables as --truncate-table or --delete-from-table is not specified 2022-12-27 11:17:22 [INFO] Query table entry and primary key for table: "test_tbl1" finished. Remain: 1 2022-12-27 11:17:22 [INFO] Query table entry and primary key for table: "test_tbl2" finished. Remain: 0 2022-12-27 11:17:22 [INFO] Query the leader location of "test_tbl1" finished. Remain: 0 2022-12-27 11:17:22 [INFO] Query the leader location of "test_tbl2" finished. Remain: 0 2022-12-27 11:17:22 [INFO] Calculate leader: xxx.xxx.xxx.xxx:2881 of table: "test_tbl1", part: 0. Remain: 1 2022-12-27 11:17:22 [INFO] Calculate leader: xxx.xxx.xxx.xxx:2881 of table: "test_tbl2", part: 0. Remain: 0 2022-12-27 11:17:22 [INFO] Waiting to refresh observer load status ...... 2022-12-27 11:17:22 [INFO] Refresh observer load status success. Table: "test_tbl1". Remain: 1 2022-12-27 11:17:22 [INFO] Refresh observer load status success. Table: "test_tbl2". Remain: 0 2022-12-27 11:17:22 [INFO] Refresh observer load status finished. Elapsed: 29.40 ms 2022-12-27 11:17:22 [INFO] Use c.l.d.PhasedBackoffWaitStrategy as available cpu(s) is 64 2022-12-27 11:17:22 [INFO] Create 4096 slots for ring buffer finished. [xxx.xxx.xxx.xxx:2881] 2022-12-27 11:17:22 [INFO] Start 128 database writer threads finished. [xxx.xxx.xxx.xxx:2881] 2022-12-27 11:17:22 [INFO] Start 128 csv file reader threads successed 2022-12-27 11:17:22 [INFO] File: "/home/admin/test_migrate_data/csv_data/data/test_data/TABLE/test_tbl2.1.0.csv" has been parsed finished 2022-12-27 11:17:22 [INFO] File: "/home/admin/test_migrate_data/csv_data/data/test_data/TABLE/test_tbl1.1.0.csv" has been parsed finished 2022-12-27 11:17:24 [INFO] Wait for the all the workers to drain of published events then halt the workers 2022-12-27 11:17:24 [INFO] Close connection count: 36 of the DataSource. Key: xxx.xxx.xxx.xxx_11532_332378361_test_data 2022-12-27 11:17:24 [INFO] Shutdown task context finished 2022-12-27 11:17:24 [INFO] ---------- Finished Tasks: 2 Running Tasks: 0 Progress: 100.00% ---------- 2022-12-27 11:17:24 [INFO] All Load Tasks Finished: ---------------------------------------------------------------------------------------------------------------------------- No.# | Type | Name | Count | Status ---------------------------------------------------------------------------------------------------------------------------- 1 | TABLE | test_tbl1 | 5 -> 5 | SUCCESS 2 | TABLE | test_tbl2 | 5 -> 5 | SUCCESS ---------------------------------------------------------------------------------------------------------------------------- Total Count: 10 End Time: 2022-12-27 11:17:24 2022-12-27 11:17:24 [INFO] Load record finished. Total Elapsed: 1.950 s 2022-12-27 11:17:24 [INFO] System exit 0インポートしたテーブルデータを確認します。
obclient [test_data]> SELECT * FROM test_tbl1; +------+-------------+------+ | COL1 | COL2 | COL3 | +------+-------------+------+ | 1 | China | 86 | | 2 | Taiwan | 886 | | 3 | Hong Kong | 852 | | 4 | Macao | 853 | | 5 | North Korea | 850 | +------+-------------+------+ 5 rows in set