93 lines
2.5 KiB
Markdown
93 lines
2.5 KiB
Markdown
# go-migrate
|
|
|
|
Migrador de datos entre SQL Server y PostgreSQL con procesamiento en paralelo.
|
|
|
|
## Compilar
|
|
|
|
```bash
|
|
go build -o go-migrate ./cmd/go_migrate
|
|
```
|
|
|
|
## Uso
|
|
|
|
```bash
|
|
./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
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
```yaml
|
|
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.
|