Saltar a contenido

Referencia de Funciones

Gestión de Conectores

synchdb_add_conninfo

Propósito: Crea una nueva configuración de conector

Parámetros:

Parámetro Descripción Requerido Ejemplo Notas
name Identificador único para este conector ✓ 'mysqlconn' Debe ser único entre todos los conectores
hostname IP/nombre de host de la base de datos heterogénea ✓ '127.0.0.1' Soporta IPv4, IPv6 y nombres de host
port Número de puerto para la conexión ✓ 3306 Por defecto: MySQL(3306), SQLServer(1433)
username Nombre de usuario para autenticación ✓ 'mysqluser' Requiere permisos apropiados
password Contraseña de autenticación ✓ 'mysqlpwd' Almacenada de forma segura
source database Nombre de la base de datos origen ✓ 'inventory' Debe existir en el sistema origen
destination database Base de datos PostgreSQL destino ✓ 'postgres' Debe existir en PostgreSQL
table Patrón de especificación de tabla ☐ '[db].[table]' Vacío = replicar todas las tablas
connector Tipo de conector (mysql/sqlserver) ✓ 'mysql' Ver conectores soportados arriba
rule file Reglas de traducción de tipos de datos ☐ 'myrule.json' Debe estar en el directorio $PGDATA

Ejemplos de Uso:

-- Ejemplo MySQL
SELECT synchdb_add_conninfo(
    'mysqlconn',    -- Nombre del conector
    '127.0.0.1',    -- Host
    3306,           -- Puerto
    'mysqluser',    -- Usuario
    'mysqlpwd',     -- Contraseña
    'inventory',    -- BD origen
    'postgres',     -- BD destino
    '',             -- Tablas (vacío para todas)
    'mysql',        -- Tipo de conector
    'myrule.json'   -- Archivo de reglas
);

-- Ejemplo SQL Server
SELECT synchdb_add_conninfo(
    'sqlserverconn',
    '127.0.0.1',
    1433,
    'sa',
    'MyPassword123',
    'testDB',
    'postgres',
    'dbo.orders',   -- Tabla específica
    'sqlserver',
    'mssql_rules.json'
);

Funciones Básicas de Control

synchdb_start_engine_bgw

Propósito: Inicia un conector

SELECT synchdb_start_engine_bgw('mysqlconn');

synchdb_pause_engine

Propósito: Detiene temporalmente un conector en ejecución

SELECT synchdb_pause_engine_bgw('mysqlconn');

synchdb_resume_engine

Propósito: Reanuda un conector pausado

SELECT synchdb_resume_engine('mysqlconn');

synchdb_stop_engine_bgw

Propósito: Termina un conector

SELECT synchdb_stop_engine('mysqlconn');

Gestión de Estado

synchdb_state_view

Propósito: Monitorea los estados y el estado de los conectores

SELECT * FROM synchdb_state_view();

Campos de Retorno:

Campo Descripción Tipo
id Identificador de slot del conector Integer
connector Tipo de conector (mysql o sqlserver) Text
conninfo_name Nombre del conector asociado Text
pid ID del proceso trabajador Integer
state Estado actual del conector Text
err Último mensaje de error Text
last_dbz_offset Último offset de Debezium registrado JSON

Estados Posibles:

  • 🔴 stopped - Inactivo
  • 🟡 initializing - Iniciando
  • 🟠 paused - Pausado temporalmente
  • 🟢 syncing - Sondeando activamente
  • 🔵 parsing - Procesando eventos
  • 🟣 converting - Transformando datos
  • ⚪ executing - Aplicando cambios
  • 🟤 updating offset - Actualizando punto de control
  • 🟨 restarting - Reiniciando
  • ⚫ unknown - Estado indeterminado

synchdb_set_offset

Propósito: Configura una posición de inicio personalizada

Ejemplo para MySQL:

SELECT synchdb_set_offset(
    'mysqlconn', 
    '{"ts_sec":1725644339,"file":"mysql-bin.000004","pos":138466,"row":1,"server_id":223344,"event":2}'
);

Ejemplo para SQL Server:

SELECT synchdb_set_offset(
    'sqlserverconn',
    '{"event_serial_no":1,"commit_lsn":"00000100:00000c00:0003","change_lsn":"00000100:00000c00:0002"}'
);

Gestión de Instantáneas

synchdb_restart_connector

Propósito: Reinicializa un conector con un modo de instantánea específico

Modos de Instantánea:

Modo Descripción Caso de Uso
always Realiza una instantánea completa en cada inicio Verificación completa de datos
initial Solo instantánea inicial Operaciones normales
initial_only Una única instantánea, luego se detiene Migración de datos
no_data Solo estructura, sin datos Sincronización de esquema
never Omite instantánea, solo transmite Actualizaciones en tiempo real
recovery Reconstruye desde el origen Recuperación de desastres
when_needed Instantánea condicional Recuperación automática

Ejemplo:

-- Reiniciar con modo de instantánea específico
SELECT synchdb_restart_connector('mysqlconn', 'initial');


📝 Notas Adicionales:

  • Siempre validar la configuración del conector antes de iniciar
  • Monitorear los recursos del sistema durante operaciones de instantánea
  • Respaldar la base de datos PostgreSQL de destino antes de operaciones importantes
  • Probar la conectividad desde el servidor PostgreSQL a la base de datos origen
  • Asegurar que la base de datos origen tenga los permisos requeridos configurados
  • Se recomienda monitoreo regular de los registros de errores