migman 0.9.7
See the version list below for details.
dotnet tool install --global migman --version 0.9.7
dotnet new tool-manifest
dotnet tool install --local migman --version 0.9.7
#tool dotnet:?package=migman&version=0.9.7
nuke :add-package migman --version 0.9.7
Migman
Migman is a CLI tool for migrating and verifying MariaDB/MySQL tables using dump/load workflows and checksums.
Install (global tool)
dotnet tool install --global migman
Update
dotnet tool update --global migman
Usage
migman --help
migman run --dumper
migman run --loader
migman run --checksum
migman run --sync
migman init --docker
migman init --sample
migman init --docker --sample --force
Init options
--docker: createdocker-compose.ymlfor MariaDB/MySQL.--sample: create sample SQL scripts and connection helpers.
Configuration
migman.yml example:
source:
type: mariadb
host: localhost
port: 3307
user: root
password: secret
database: source_db
target:
type: mysql
host: localhost
port: 3308
user: root
password: secret
database: target_db
migration_mode: dump
dump_path: ./dumps
log_path: ./migman.log
log_level: info
threads: 4
tables:
- name: sample_pk_split
target_name: sample_pk_split_copy
compress: false
drop_table: true
chunking:
type: pk_split
key: id
size: 20
- name: sample_pk_offset
target_name: sample_pk_offset_copy
compress: false
drop_table: true
chunking:
type: pk_offset
keys:
- order_id
- line_id
order_by:
- column: order_id
direction: asc
- column: line_id
direction: asc
size: 20
migration_mode values: dump or sync (sync compares checksums and inserts/updates target rows and deletes target rows missing in source when mismatched). Use migman run --sync when migration_mode: sync. If the target table is missing, sync creates it from the source schema.
tables[].target_name overrides the target table name (defaults to tables[].name).
drop_table: true is only applied in loader mode; sync mode rejects it.
Chunking
Migman supports two chunking strategies for splitting large tables.
pk_split
Splits a table by a single numeric primary key range.
Required fields:
chunking.type:pk_splitchunking.key: primary key columnchunking.size: rows per chunk Optional fields:chunking.where: filter condition applied to min/max range and chunk queries
Example:
chunking:
type: pk_split
key: id
where: status = 'active'
size: 20000
pk_offset
Splits a table by an ordered composite key (or single key) using keyset pagination.
Required fields:
chunking.type:pk_offsetchunking.keys: ordered list of key columnschunking.size: rows per chunk
Optional fields:
chunking.order_by: must matchchunking.keysorder and onlyascis supported
Example:
chunking:
type: pk_offset
keys:
- order_id
- line_id
order_by:
- column: order_id
direction: asc
- column: line_id
direction: asc
size: 20000
Logging
log_level supports: error, warning, info, debug, trace.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.