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
No description provided
Readme 704 KiB
Languages
Go 98.7%
Makefile 1.3%