OBLOADER & OBDUMPER V4.3.0 released in April 2024 supports compressing CSV, CUT, POS, and SQL files to be exported, importing and exporting Apache Avro files, importing data from and exporting data to Tencent Cloud Object Storage (COS) and Huawei Cloud Object Storage Service (OBS), exporting schemas of columnstore tables in OceanBase Database V4.3.0, and generating empty files in specific export scenarios. This version also optimizes user experience in different aspects.
Version information
Current version: V4.3.0
Previous version: V4.2.8.2
Release date: April 30, 2024
Supported OceanBase Database versions
The following table lists the OceanBase Database versions supported by OBLOADER & OBDUMPER V4.3.0.
| Compatible mode | Supported version |
|---|---|
| Oracle | V2.0.x, V2.1.x, V2.2.20, V2.2.30, V2.2.50, V2.2.70, V2.2.71, V2.2.72, V2.2.76, V2.2.77, V3.1.x, V3.2.x, V4.0.0, V4.1.0, V4.2.0, V4.2.1, V4.2.2, V4.2.3, and V4.3.0 |
| MySQL | V1.4.70, V1.4.72, V1.4.75, V1.4.78, V1.4.79, V2.2.30, V2.2.50, V2.2.70, V2.2.71, V2.2.72, V2.2.76, V2.2.77, V3.1.x, V3.2.x, V4.0.0, V4.1.0, V4.2.0, V4.2.1, V4.2.2, V4.2.3, and V4.3.0 |
Upgrade considerations
The following command-line option adjustments are made in OBLOADER & OBDUMPER V4.3.0:
The
--storage-urioption is deprecated. Its functionality is integrated into the-f/--file-pathoption.Note that this deprecated option can still be used, but we recommend that you replace it in the following ways:
To use the local file system, specify
-f '/home/admin/foo/bar'.To use Alibaba Cloud Object Storage Service (OSS), specify
-f 'oss://mybucket/foo/bar?endpoint=myendpoint&access-key=myak&secret-key=mysk'.
When you export database object definitions and table data to another file system instead of the local file system, by default, OBDUMPER creates a temporary directory named
tmpin its root directory to store temporary files. You can use the--tmp-pathoption to manually specify a temporary directory.The default value of the
--compact-schemaoption istrue. When you export data from OceanBase Database V4.0.0 or later, you can specify this option for OBDUMPER to obtain DDL statements by using theSHOW CREATE TABLE ...statement, instead of constructing DDL statements based on metadata queried from views, which is the default schema export strategy.This adjustment is made for compatibility with changes of some standard views in OceanBase Database to improve the overall performance and support columnar storage. You can still set the
--compact-schemaoption tofalseto use the default schema export strategy.
When the amount of data in a table does not reach the block size specified by the
--block-sizeoption, which is 1 GB by default, the exported file is named in the format of<table name>.<file name extension>in V4.3.1, and in the format of<table name>.<block sequence number>.<file name extension>in earlier versions. Assume that you want to export table data in the CSV format:If the amount of data in the
t_testtable is 500 MB, which does not exceed the default value 1 GB of the--block-sizeoption, only one file namedt_test.csvis generated after the export.If the amount of data in the
t_testtable is 1.2 GB, which exceeds the default value 1 GB of the--block-sizeoption, two files respectively namedt_test.0.csvandt_test.1.csvare generated after the export.
When you upgrade OBLOADER & OBDUMPER from a version earlier than V4.2.8 to V4.3.0, take note of the following considerations:
OBLOADER & OBDUMPER V4.3.0 allows you to specify the value of
-u/--userin the three-segment format of<user>@<tenant>#<cluster>. For backward compatibility, you can still use the-t/--tenantand-c/--clusteroptions.The behavior for parsing POS files is changed. In V4.3.1, the parser processes whole lines. In other words, in addition to the byte length defined in the control file, the parser further reads a line break for each line. You may need to modify the control file to adapt to this change. You can run the following command to calculate the number of bytes in the first line of the
example.datfile:expr $(head -n 1 example.dat | wc -c) - 1
When you upgrade OBLOADER & OBDUMPER from a version earlier than V4.2.7 to V4.3.0, take note of the following considerations:
The
--file-nameoption is deprecated.You do not need to merge sub-files exported from a single table. To export the data of a table to a single file, you can set the
--block-sizeoption to0to specify not to split the exported table data into file blocks.Note that although the tool does not limit the file size, some file systems or object storage services still limit the size of a single file. For example, in the ext2, ext3, and ext4 file systems, the size of a single file is limited to 2 TB.
By default, the tool generates a complex nested directory structure. You can specify the
--no-nested-diroption so that the tool does not generate nested subdirectories.
The
--upload-behavioroption is deprecated. For information about the write strategies of different data sources, see the feature description in the following sections.After the file write behavior is changed in OBLOADER & OBDUMPER V4.2.7, the tool has to downgrade the export performance to ensure that the number of exported files is predictable. If you want to improve the export performance, you can enable parallel write so that the tool writes the data of each table to multiple sub-files, which cannot be merged into one file. For more information, see the corresponding description in versions earlier than V4.2.7. The procedure is as follows:
Use a text editor to open the
obdumperfile in thebindirectory in the root directory of the tool.Find the Java startup parameter
-Denable.parallel.writeand change its value fromfalsetotrue.
New features
OBLOADER
Provides the
--avrooption for you to import data files in the standard Apache Avro format.Provides the following options for you to decompress and load compressed files in the CSV, CUT, POS, or SQL format that are exported by OBDUMPER:
--compress
Specifies whether to decompress data during import. It is a Boolean value.
--compression-algo
The compression algorithm. The value is a string. Valid values are
zstd,zlib,gzip, andsnappy. The default value iszstd.--compression-level
The compression level for the specified compression algorithm. The value is an integer. Compression levels supported for different compression algorithms are as follows:
zstd: 1 to 22. The default level is
3.zlib: -1 to 9. The default level is
-1.gzip and snappy: You cannot specify a compression level for this compression algorithm.
Allows you to import database object definitions and table data from Tencent Cloud COS and Huawei Cloud OBS. Here are two examples of using the
-f/--file-pathoption:Tencent Cloud COS
-f 'cos://mybucket/foo?region=ap-shanghai&access-key=myak&secret-key=mysk' -f 'cos://mybucket/foo?endpoint=yourendpoint&access-key=myak&secret-key=mysk'Huawei Cloud OBS
-f 'obs://mybucket/foo?region=cn-north-1&access-key=myak&secret-key=mysk' -f 'obs://mybucket/foo?endpoint=yourendpoint&access-key=myak&secret-key=mysk'
OBDUMPER
Provides the
--avrooption for you to export table data to a file in the Apache Avro format.Provides the following options for you to compress and export files in the CSV, CUT, POS, or SQL format:
--compress
Specifies whether to compress data during export. It is a Boolean value.
--compression-algo
The compression algorithm. The value is a string. Valid values are
zstd,zlib,gzip, andsnappy. The default value iszstd.--compression-level
The compression level for the specified compression algorithm. The value is an integer. Compression levels supported for different compression algorithms are as follows:
zstd: 1 to 22. The default level is
3.zlib: -1 to 9. The default level is
-1.gzip and snappy: You cannot specify a compression level for this compression algorithm.
Allows you to export database object definitions and table data to Tencent Cloud COS and Huawei Cloud OBS.
Exports data to the specified object storage service in Multipart-Upload mode. By default, the local file system is used as the temporary directory for storing temporary file blocks. You can also use the
--tmp-pathoption to specify a storage directory. You can modify the following parameters in the script of OBDUMPER to adapt to the actual data export environment:upload.buffer.type
The buffer type. Valid values are
diskandbytebuffer. The default value isdisk, which specifies to store file blocks in the disk. In this case, the total size of file blocks that can be stored is subject to the maximum available space of the disk.bytebufferspecifies to store file blocks in the memory. This ensures high performance but occupies much JVM stack memory space.upload.buffer.size
The size of each file block, in bytes. The default value is
64MB.upload.active.blocks
The maximum number of blocks (being uploaded or waiting to be uploaded in the queue) concurrently processed by each write thread. The default value is
2. When the specified value is exceeded, the tool is blocked until a file block is uploaded and removed from the queue.The
--threadoption specifies the maximum number of write threads. You can use the following formula to estimate the space that may be occupied by the buffer when the tool runs: Value ofthread× Value ofactive.blocks× Value ofbuffer.size.
Supports the scenario where if you specify the
--partitionoption to export data from a specific partition or the--whereoption to export data that meets the specified query condition, you can also specify the--retain-empty-fileoption to generate an empty file when the partition or the query result set is empty.
Bug fixes
Fixed the issue where an error occurs when columns are quickly dropped during export in Oracle compatible mode of OceanBase Database V4.2.1 BP4 and later.
Fixed the issue where a NullPointerException (NPE) is thrown when the partition from which data is to be exported does not exist.
Fixed the issue where an NPE is thrown if the control file contains only part of the tables when you export data in the POS format.
Fixed the issue where the file name extension is truncated when both a file name and a file name extension are specified for the
-foption during export.Fixed the issue where database objects cannot be filtered by using wildcards during DDL import.
Fixed the issue where the import task is interrupted and cannot be resumed when the imported data rows do not match the data types of the target table.
Fixed the issue where the value '\E' in a CSV file changes to
NULLafter it is imported to a LOB field.
Known issues
The exported database object definitions may contain the name of the database to which a specified object belongs.
If you do not specify the password of the sys tenant on the command line, OBDUMPER cannot export table group definitions from OceanBase Database of a version earlier than V2.2.70.
If you do not specify the password of the sys tenant on the command line, OBDUMPER cannot export index definitions from OceanBase Database of a version earlier than V2.2.50 in Oracle compatible mode.
If you do not specify the password of the sys tenant on the command line, OBDUMPER cannot export partition information of unique indexes from OceanBase Database of a version earlier than V2.2.70 in Oracle compatible mode.
If you do not specify the password of the sys tenant on the command line, OBDUMPER cannot export definitions of unique indexes on partitioned tables from OceanBase Database V2.2.70 or later but earlier than V4.0.0 in Oracle compatible mode.
OBDUMPER cannot export PL object definitions from OceanBase Database of a version earlier than V2.2.30 in MySQL compatible mode.
When you use OBLOADER to import data, an error occurs if the specified file format, such as
--sqlor--csv, does not match the actual file format.In MySQL compatible mode of OceanBase Database, after you enable case sensitivity for object names such as table names and view names, objects are still imported or exported in a case-insensitive manner.
The high-availability mode "sequential" of OceanBase Connector/J is unavailable for now. You can use the "loadbalance" mode instead.
If you specify the
--remove-newlineoption to remove line breaks, unexpected escape characters are generated. Therefore, we recommend that you do not use this option.If you use direct load in a multi-table restore scenario, the performance may be undesirable.
Considerations
In a CUT file, each data record is stored in a separate line. When you specify the
--cutoption on the command line of OBDUMPER, if the exported data contains a single-character field delimiter, OBDUMPER escapes special characters in the data, such as delimiters, carriage returns, and line breaks. For example, if the data isabc|defand the delimiter is|, the exported data isabc\|def.When you specify the
--cutoption on the command line of OBLOADER, do not use the--trail-delimiteroption if no field delimiter or delimiter string exists at the end of each data line in the file. Otherwise, the data cannot be correctly imported to the database.If you specify the
--logical-databaseoption on the command line, the definition of a random physical database shard is exported and the shard cannot be directly imported to the database. You must manually convert the exported physical shard to a logical one before you import it into the database for business use.When you specify the
--partitionoption on the command line to export data in a partition, you must specify the name of the subpartition for a composite partitioned table. OBDUMPER cannot export data in a partition of a composite partitioned table. If the specified partition name does not exist, OBDUMPER returns an error.When you specify the
--add-extra-messageoption on the command line to export table definitions, OBDUMPER exports the name of the table group to which each table belongs. This option depends on the privileges of the sys tenant. If OBDUMPER does not have the privileges of the sys tenant, do not specify this option.When you use OBLOADER & OBDUMPER to import data to or export data from OceanBase Database V3.2.4 or later, set the
open_cursorssystem parameter to a large value. Otherwise, an error may occur during the import or export. After the data is imported or exported, reset the system parameter to the initial value, such asALTER SYSTEM SET open_cursors = 65535;.In OceanBase Database V4.0.0 or later, if the schema of a table has been changed, you cannot use OBDUMPER to export the baseline data, namely the consistent snapshot data, obtained after the last major compaction. You can manually initiate a major compaction and then export the most recent baseline data.
When you use OBDUMPER of a version earlier than V4.2.0 to export data from OceanBase Database in MySQL compatible mode, OceanBase Connector/J converts the zero values of date and time type columns in the database to
NULL. If a column has aNOT NULLconstraint, an error is reported during the export. OBDUMPER V4.2.0 can export zero values of date and time columns, but cannot identify whether the original data isNULLor zero values during the export and forcibly converts the data to zero values by default. In addition, exported zero values of the DATETIME and TIMESTAMP data types may be distorted into approximate non-zero values. If thesql_modevariable in the database is specified with the NO_ZERO_DATE or NO_ZERO_IN_DATE constraint, an error is reported when zero values are imported. Take note of this consideration on zero values when you export data of the DATE, DATETIME, TIME, YEAR, or TIMESTAMP type from OceanBase Database in MySQL compatible mode.Feature differences in schema export in Oracle compatible and MySQL compatible modes
Compatibility mode Password of the sys tenant provided Password of the sys tenant not provided MySQL compatible Tables, views, table groups, stored procedures, and functions are supported. The export behavior is basically the same as that when the password of the sys tenant is provided, except for the following known issues: - Table group definitions cannot be exported for OceanBase Database of a version earlier than V2.2.70.
- Partition information of unique indexes cannot be exported for OceanBase Database of a version earlier than V2.2.70.
- Index definitions cannot be exported for OceanBase Database V2.2.30 or earlier in Oracle compatible mode.
- Definitions of unique indexes on partitioned tables cannot be exported for OceanBase Database of a version ranging from V2.2.70 (inclusive) to V4.0.0 in Oracle compatible mode.
Oracle compatible Tables, views, triggers, synonyms, sequences, stored procedures, functions, packages, table groups, and types are supported.