首批通过分布式安全可靠测评,为关键业务系统打造
多库导出
更新时间:2026-04-02 14:15:52
OBDUMPER V4.3.5 及之后版本在兼容原有单库导出行为不变的前提下,新增支持在单次导出任务中一次性导出数据库对象至多个数据库/Schema 中的功能。
功能实现
单库模式
当 --table、--view 等对象参数中不包含特定的数据库/Schema,即不存在英文句号(.)时,认为是单库导出,使用 -D 指定的默认数据库。
多库模式
只要任一对象参数值包含特定的数据库/Schema,即存在英文句号(.)时,则进入多库导出模式。例如,test.table1、test1.*、*.*、test[0-9].tbl、test*.table 或 test?.tbl 等。
多库模式下,将一条多库导出命令拆分为多个单库导出子任务。具体说明如下:
对
--table、--view等对象参数进行解析,分发<schema.object>至对应数据库/Schema 的子任务中,分别指定导出范围。如果某个对象未包含特定的数据库/Schema(例如,
--table 'db1.tbl1, tbl2' -D 'db2'中的 tbl2 对象),则使用-D指定的默认数据库,其他选项保持不变。
多库模式下,将对象导出至不同的数据库/Schema 中可以等效理解为执行了多个单库导出的任务。示例如下:
obdumper -D test --table 'test1.tbl1,test2.tbl2' ...
-> obdumper -D test1 --table tbl1 ...
-> obdumper -D test2 --table tbl2 ...
obdumper -D test --table 'tbl1,test2.tbl2' ...
-> obdumper -D test --table tbl1 ...
-> obdumper -D test2 --table tbl2 ...
默认导出目录结构会在原有目录层级上,增加数据库/Schema 层级目录。示例如下:
./outputs/
└── data
├── test
│ ├── TABLE
│ │ ├── sample_tbl1.csv
│ │ ├── sample_tbl1-schema.sql
│ │ ├── sample_tbl2.csv
│ │ └── sample_tbl2-schema.sql
│ └── VIEW
│ ├── sample_tbl1_view-schema.sql
│ └── sample_tbl2_view-schema.sql
└── test1
├── TABLE
│ ├── sample_tbl1.csv
│ ├── sample_tbl1-schema.sql
│ ├── sample_tbl2.csv
│ └── sample_tbl2-schema.sql
└── VIEW
├── sample_tbl1_view-schema.sql
└── sample_tbl2_view-schema.sql
7 directories, 12 files
注意
如果数据库/Schema 名中包含 [、{ 或其他通配控制字符,您需要对这些字符进行转义才能顺利导出。
场景示例
场景一:单库导出(不受影响)
导出 test 库至 /outputs。
./obdumper -h xxx.xxx.xxx.xxx -P 2883 -u test@mysql#cluster_a -p ****** -D test --csv --table '*' -f /outputs
场景二:多库导出(一次导出多个库)
方式一
./obdumper -h xxx.xxx.xxx.xxx -P 2883 -u test@mysql#cluster_a -p ****** --csv --table 'test[1-3].*' -f /outputs方式二
./obdumper -h xxx.xxx.xxx.xxx -P 2883 -u test@mysql#cluster_a -p ****** --csv --table 'test1.*, test2.*, test3.*' -f /outputs方式三
./obdumper -h xxx.xxx.xxx.xxx -P 2883 -u test@mysql#cluster_a -p ****** --csv --table 'test1.*' --table 'test2.*' --table 'test3.*' -f /outputs
场景三:租户级导出(间接实现全租户导出)
全量导出全部库的全部对象,包含定义和数据。
./obdumper -h xxx.xxx.xxx.xxx -P 2883 -u test@mysql#cluster_a -p ****** --table '*.*' --ddl --csv --all -f /outputs