Molt Verify

作者 cockroachdb6c96c6394a61無授權條款4 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫2 個月前更新

Guide for using molt verify to compare source and target databases for schema and row-level consistency after a migration. Use when running verify commands, tuning concurrency/sharding, handling schema mismatches, or validating data integrity post-migration.

僅含說明DevOps & Cloud
AI 產生的概覽

指導使用 molt verify 指令,在遷移後檢查來源資料庫與目標資料庫的結構與資料列一致性。

功能
這個技能是 molt verify 指令的參考指南,用於在遷移後比較來源資料庫與目標資料庫的結構(DDL)與資料列層級的資料一致性。它說明驗證階段、模式、並行與分片選項、各資料來源的前置需求、輸出報告以及錯誤復原。它產出的是指令範例、參數說明與疑難排解表格,本身不會執行任何操作。
適用情境
適用於執行 molt verify 指令、調整並行或分片、處理結構不符,或在遷移後驗證資料完整性。它面向遷移後檢查,包括僅結構的 CI 閘門,以及帶篩選或排除欄位的驗證。
執行需求
需要 molt 執行檔,並能連線至來源與目標資料庫。Oracle 資料來源需要 CGO 建置,並將 Oracle Instant Client 放入 LD_LIBRARY_PATH。不含指令碼,僅為說明文件,另附參數參考文件。

molt verify

Compares source and target databases for schema (DDL) and row (data) consistency. Run after molt fetch to confirm migration integrity.

Basic Structure

bash
molt verify \  --source "<source-conn>" \  --target "<crdb-conn>" \  [options]

Verification Phases

Phase 1 — Schema: Compares table presence, columns, types, NOT NULL constraints, and primary key structure.

Phase 2 — Rows (default, --rows=true): Iterates source rows in PK order and compares against target. Reports missing, extraneous, and mismatched rows per shard.

Modes

ModeCommandUse When
Full (default)molt verify --source "..." --target "..."Post-migration integrity check
Schema-onlymolt verify ... --rows=falseFast DDL check; no data I/O

Concurrency & Sharding

bash
# Default: CPU-count tables in parallel, 1 shard/table, 20k rows/batchmolt verify --source "..." --target "..."
# Large tables: parallelize within a single tablemolt verify --source "..." --target "..." \  --concurrency 1 --concurrency-per-table 8 --row-batch-size 50000
# Rate-limited (minimize production impact)molt verify --source "..." --target "..." \  --rows-per-second 1000 --concurrency 2

Sharding splits a table's PK range across workers. Supported PK types: INT, FLOAT, DECIMAL, UUID. Falls back to a single full-scan for unsupported types.

Common Workflows

1. Post-migration sanity check

bash
molt verify \  --source "postgresql://<user>:<password>@pg:5432/db" \  --target "postgresql://root@crdb:26257/db"

2. Schema-only (CI gate)

bash
molt verify \  --source "..." --target "..." \  --rows=false --non-interactive --log-file stdout

3. Filtered verification (subset of tables)

bash
molt verify \  --source "..." --target "..." \  --table-filter "customers|orders"

4. Verify with column exclusions

bash
# transformations.json: {"tables":[{"name":"users","excludedColumns":["temp_col"]}]}molt verify \  --source "..." --target "..." \  --transformations-file transformations.json

Source-Specific Prerequisites

PostgreSQL: No special requirements. Partition tables (child partitions) are not supported — remove them before verifying.

MySQL: Queries current database only. ONLY_FULL_GROUP_BY may affect queries; disable if issues arise.

Oracle: Binary must be built with CGO_ENABLED=1 -tags="cgo source_all". Oracle Instant Client in LD_LIBRARY_PATH. Use --source-cdb for multi-tenant (CDB) setups. Selective data verification (--filter-path) is not supported.

Output & Reporting

Each table prints a summary per shard:

truth rows seen: 10000, success: 9950, missing: 5, mismatch: 45, extraneous: 0
  • missing: rows present on source but absent on target
  • extraneous: rows on target with no match on source
  • mismatch: rows present on both but values differ

Schema issues (missing/extra tables or columns, type mismatches, PK differences) are logged as warnings and do not stop row verification.

Prometheus metrics available at --metrics-listen-addr (default 127.0.0.1:3030).

Error Recovery

ErrorCauseFix
missing table X on targetTable not migratedRerun fetch or check filters
extraneous table X on targetUnexpected tableClean up or adjust --table-filter
column type mismatchType conversion issueCheck type mappings or use --transformations-file
PRIMARY KEY does not matchPK structure differsInspect schema conversion output
partition table XSource has partition tablesDrop/move partitions before verifying
missing a PRIMARY KEYNo PK on source tableAdd PK or use --rows=false
TLSModeDisableErrorInsecure connection rejectedAdd --allow-tls-mode-disable
Statement timeoutQuery exceeds --verify-statement-timeoutIncrease timeout or reduce --row-batch-size

Gotchas

  • Schema changes between source and target after migration are not automatically reconciled — fix schema first, then re-run
  • --concurrency values exceeding 4× CPU count trigger a warning and may degrade performance
  • Row verification requires primary keys on both source and target tables; tables without PKs are skipped for row comparison
  • --filter-path (selective row filters) is not supported for Oracle sources
  • Log files contain sensitive query data; avoid --show-connection-logging in production logs
  • After fetch, always run verify before cutover to confirm data integrity

See flags reference [blocked] for the full flag list.

來源與署名

來源:cockroachdb/claude-plugin位於skills/cockroachdb-onboarding-and-migrations/molt-verify提交6c96c63

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架