Simplifica la Transferència de MySQL a PostgreSQL

Guia completa per aconseguir la sincronització de dades de MySQL a PostgreSQL amb Apache SeaTunnel 2.3.9. Expliquem des de la configuració de l'entorn fins a la validació en producció, incloent replicació, permisos, configuració de clúster i optimització del rendiment.

viernes, 21 de marzo de 2025 • 3 min de lectura • Equip Q2BSTUDIO

Empresa-Software-Apps

Aquest article proporciona una guia detallada sobre com aconseguir una sincronització completa de dades de MySQL a PostgreSQL utilitzant Apache SeaTunnel 2.3.9. Es cobreix tot el procés, des de la configuració de l'entorn fins a la validació en producció.

Requisits de versió:

  • MySQL: MySQL 8.3
  • PostgreSQL: PostgreSQL 13.2
  • Apache SeaTunnel: Apache-SeaTunnel-2.3.9

Verificació de versions:

Executa la següent comanda SQL per verificar la versió:

  
select version();  

Activació de replicació mestre-esclau:

  
show variables where variable_name in ('log_bin', 'binlog_format', 'binlog_row_image', 'gtid_mode', 'enforce_gtid_consistency');  

Per a la sincronització de dades en MySQL CDC, SeaTunnel necessita llegir el binlog i actuar com un node esclau al clúster.

  
SET GLOBAL gtid_mode=OFF_PERMISSIVE;  
SET GLOBAL gtid_mode=ON_PERMISSIVE;  
SET GLOBAL enforce_gtid_consistency=ON;  
SET GLOBAL gtid_mode=ON;  

Concessió de permisos d'usuari:

Es requereix un usuari amb privilegis de replicació:

  
CREATE USER 'test'@'%' IDENTIFIED BY 'password';  
GRANT SELECT, RELOAD, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'test';  
FLUSH PRIVILEGES;  

Configuració del clúster de SeaTunnel:

Per defecte, SeaTunnel genera logs en un sol fitxer. Per a producció, és recomanable separar els registres per tasca:

  
rootLogger.appenderRef.file.ref = routingAppender  

En entorns de producció, es recomana instal·lar SeaTunnel al directori /opt i configurar la variable d'entorn SEATUNNEL_HOME:

  
ln -s /opt/apache-seatunnel-2.3.9 /opt/seatunnel  
export SEATUNNEL_HOME=/opt/seatunnel  

Configuració del treball a SeaTunnel:

  
env {  
  job.mode = 'STREAMING'  
  job.name = 'DEMO'  
  parallelism = 3  
  checkpoint.interval = 30000  
  checkpoint.timeout = 30000  
  job.retry.times = 3  
  job.retry.interval.seconds = 3  
}  

Configurar un nom de tasca és essencial per administrar treballs en producció. A més, s'estableix un nivell de paral·lelisme de 3, però es pot ajustar segons la mida del clúster.

Configuració de l'origen de dades (MySQL CDC):

  
source {  
  MySQL-CDC {  
    base-url = 'jdbc:mysql://192.168.8.101:3306/test?serverTimezone=Asia/Shanghai'  
    username = 'test'  
    password = '123456'  
    database-names = ['test']  
    table-pattern = 'test\.test_.*'  
    startup.mode = 'initial'  
    snapshot.split.size = '8096'  
    snapshot.fetch.size = '1024'  
    server-id = '6500-8500'  
    exactly_once = false  
    schema-changes.enabled = true  
  }  
}  

Es configura la sincronització tant per a dades històriques com incrementals. Es recomana l'activació de l'evolució d'esquemes per gestionar canvis en l'estructura de les taules.

Configuració del destí (PostgreSQL):

  
sink {  
  jdbc {  
    url = 'jdbc:postgresql://192.168.8.101:5432/test'  
    driver = 'org.postgresql.Driver'  
    user = 'postgres'  
    password = '123456'  
    generate_sink_sql = true  
    database = 'test'  
    table = '${database_name}.${table_name}'  
    schema_save_mode = 'CREATE_SCHEMA_WHEN_NOT_EXIST'  
    data_save_mode = 'APPEND_DATA'  
  }  
}  

L'opció generate_sink_sql genera automàticament les sentències d'inserció i actualització. També es configura el mode d'emmagatzematge de l'esquema per crear automàticament les taules si no existeixen.

Enviament i monitoratge de tasques:

  
./bin/start-seatunnel.sh --config /path/to/config.yaml --async  

El flag --async permet que la tasca s'executi en segon pla mentre es monitora a través de la interfície de SeaTunnel.

Demostració de sincronització de dades:

Es van provar insercions, actualitzacions i eliminacions a MySQL, i els canvis van ser replicats exitosament a PostgreSQL.

Sobre Apache SeaTunnel:

  • Suporta centenars de fonts de dades.
  • Gestió de sincronització completa, incremental i en temps real.
  • Monitoratge eficaç per evitar pèrdua o duplicació de dades.

A Q2BSTUDIO, una empresa especialitzada en desenvolupament i serveis tecnològics, ajudem a implementar solucions de sincronització de dades per garantir la integritat i eficiència en la gestió de dades en entorns empresarials. Amb experiència en la integració d'Apache SeaTunnel, proporcionem assessoria i desenvolupament d'estratègies personalitzades per optimitzar la transferència de dades entre diverses plataformes, assegurant rendiment i escalabilitat.

ELS NOSTRES SERVEIS

Com et podem ajudar

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.