migman 0.9.8
See the version list below for details.
dotnet tool install --global migman --version 0.9.8
dotnet new tool-manifest
dotnet tool install --local migman --version 0.9.8
#tool dotnet:?package=migman&version=0.9.8
nuke :add-package migman --version 0.9.8
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
command_timeout: 300
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.
command_timeout sets the MySQL command timeout in seconds (default: 300).
Configuration options
Top-level options:
source: source database connection settings.target: target database connection settings.migration_mode:dumporsync. Insync, usemigman run --sync.dump_path: directory for dump files.log_path: log file path (optional).log_level:error,warning,info,debug,trace(default:info).command_timeout: MySQL command timeout in seconds (default: 300).threads: number of worker threads (default: 4).tables: list of table configs.
source / target fields:
type:mariadbormysql.host: hostname or IP.port: integer port.user: username.password: password.database: database name.
tables[] fields:
name: source table name (required).target_name: target table override (optional).compress:trueto write.tsv.gz,falsefor.tsv.drop_table:trueto drop target before load; ignored insync(error if set).chunking: chunking config (required).
chunking for pk_split:
type:pk_split(required).key: numeric PK column (required).size: rows per chunk (required).where: optional filter applied to range/chunk queries.order_by: optional override for sort direction (default:asc).
chunking for pk_offset:
type:pk_offset(required).keys: list of PK columns (required; at least 2).size: rows per chunk (required).where: optional filter applied to chunk queries.order_by: optional list of key columns with direction (ascordesc).- Must include the same columns as
keysin the same order. - Mixed directions are supported (e.g.,
sid desc,dt_create desc).
- Must include the same columns as
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.
command_timeout sets the MySQL command timeout in seconds (default: 300).
| 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.