package main import ( "context" "time" "git.ksdemosapps.com/kylesoda/go-migrate/internal/app/config" log "github.com/sirupsen/logrus" ) const ( NumExtractors int = 4 NumLoaders int = 8 ChunkSize int = 25000 QueueSize int = 8 ChunksPerBatch int = 16 RowsPerBatch int64 = int64(ChunkSize * ChunksPerBatch) ) func main() { configureLog() migrationConfig, err := config.ReadMigrationConfig() if err != nil { log.Fatalf("error leyendo configuracion: %v", err) } log.Debugf("Config: %+v", migrationConfig) startTime := time.Now() ctx, cancel := context.WithCancel(context.Background()) defer cancel() log.Info("=== Starting migration ===") log.Infof("Number of loaders: %d, Chunk size: %d", NumLoaders, ChunkSize) sourceDb, targetDb, connError := connectToDatabases() if connError != nil { log.Fatal("Connection error: ", connError) } defer sourceDb.Close() defer targetDb.Close() for _, job := range migrationConfig.Jobs { log.Infof(">>> Processing job: %s.%s <<<", job.SourceTable.Schema, job.SourceTable.Table) processMigrationJob(ctx, sourceDb, targetDb, job) } totalDuration := time.Since(startTime) log.Infof("=== Migration completed successfully! ===") log.Infof("Total migration time: %v", totalDuration) }