用途:molt fetch 用于把 PostgreSQL、MySQL、Oracle、MSSQL 的批量数据迁移到 CockroachDB。基本结构为 molt fetch --source "<source-conn>" --target "<crdb-conn>" --bucket-path "s3://bucket/prefix",存储后端三选一:--bucket-path(支持 s3://、gs://、azure://)、--direct-copy(无中间存储,网络可达时最快)、--local-path 配合 --local-path-listen-addr。云认证可用 --use-implicit-auth 或设置 AWS_ACCESS_KEY_ID、GOOGLE_APPLICATION_CREDENTIALS 等环境变量。
主要能力:--table-handling 控制表处理,none 为默认追加,drop-on-target-and-recreate 会删除并按源 schema 重建目标表(仅用于全新或空目标),truncate-if-exists 先清空且表不存在时报错。导入模式默认 IMPORT INTO,加载期间表离线、吞吐最高;--use-copy 使表保持在线,需配合 --direct-copy,且不能使用压缩。过滤支持 --table-filter、--table-exclusion-filter、--schema-filter(仅 PostgreSQL)。性能参数有 --table-concurrency、--export-concurrency、--row-batch-size。schema 可用 --type-map-file、--transformations-file。日志与监控支持 --log-file、--logging、--metrics-listen-addr。
使用方式:失败后可用 molt fetch tokens --fetch-id "abc-123" --target "..." 列出续传令牌,再带 --fetch-id 与 --non-interactive 恢复。完成后建议运行 molt verify 校验数据完整性。
限制与前置条件:MySQL 需 GTID 模式(gtid_mode=ON、enforce_gtid_consistency=ON),ONLY_FULL_GROUP_BY 需关闭,或使用 --ignore-replication-check;Oracle 需以 CGO_ENABLED=1 -tags="cgo source_all" 构建并配置 Oracle Instant Client 到 LD_LIBRARY_PATH;PostgreSQL 需复制权限或 --ignore-replication-check。COPY 模式不能使用 --compression gzip。IMPORT INTO 期间表离线。两次运行之间若 schema 变更需从头开始。续传令牌存于目标端 exceptions 表。其他细节暂未提供。