f844004942f824501af7f627ca74bffc189bd91d
go-migrate
Migrador de datos entre SQL Server y PostgreSQL con procesamiento en paralelo.
Compilar
go build -o go-migrate ./cmd/go_migrate
Uso
./go-migrate [opciones] [<ruta-config>]
Opciones
| Flag | Descripción |
|---|---|
-config <path> |
Ruta al archivo de configuración YAML. También se puede pasar como argumento posicional. Si no se indica, se busca config.yaml. |
-validate |
Compara la cantidad de filas entre origen y destino por cada job. No migra datos. |
-dry-run |
Valida conexiones, acceso a storage (si aplica) y cuenta filas en origen sin migrar. |
Ejemplos
# Migrar con config.yaml por defecto
./go-migrate
# Usar un archivo de configuración específico
./go-migrate -config produccion.yaml
# Validar que origen y destino tengan la misma cantidad de filas
./go-migrate -validate -config produccion.yaml
# Verificar conectividad sin migrar
./go-migrate -dry-run -config produccion.yaml
Configuración
La herramienta lee credenciales y parámetros desde variables de entorno o un archivo .env.
Variables clave
| Variable | Descripción |
|---|---|
SOURCE_DB_URL |
URL de conexión a la base de datos origen (o SOURCE_DB_HOST, SOURCE_DB_NAME, SOURCE_DB_USER, SOURCE_DB_PWD). |
TARGET_DB_URL |
URL de conexión a la base de datos destino (o TARGET_DB_HOST, TARGET_DB_NAME, TARGET_DB_USER, TARGET_DB_PWD). |
LOG_LEVEL |
Nivel de log: DEBUG, INFO, WARN, ERROR (por defecto: INFO). |
Para migrar datos binarios a Azure Blob, también se requieren AZ_STORAGE_ENABLED, AZ_ACCOUNT_NAME, AZ_CONTAINER, AZ_ACCOUNT_KEY.
Archivo de migración (YAML)
Define los jobs de migración. Ejemplo mínimo:
source_db_type: sqlserver
target_db_type: postgres
max_parallel_workers: 4
defaults:
batches_per_partition: 10
extractor_batch_size: 1000
max_extractors: 2
max_loaders: 2
retry:
attempts: 3
base_delay_ms: 500
max_delay_ms: 5000
jobs:
- name: migrar_usuarios
enabled: true
source:
schema: dbo
table: Usuarios
primary_key: Id
target:
schema: public
table: usuarios
Consulta el archivo config.yaml de tu entorno para ver los jobs disponibles y sus parámetros específicos.
Modos de ejecución
- Migración (por defecto): extrae, transforma y carga datos en paralelo.
- Validación (
-validate): cuenta y compara filas entre origen y destino. - Dry run (
-dry-run): verifica conexiones y muestra la cantidad de filas en origen.
Description
Languages
Go
98.7%
Makefile
1.3%