Mayjt’awi Datos Captura (CDC) ukaxa mä técnica apnaqatawa mayjt’awinaka nivel de fila ukanxa base de datos ukana lurawinakapa (inserciones, actualizaciones, borrados) ukhamaraki yaqha sistemas ukanakaru yatiyañataki kunaymana lurawinakata. Escenarios de recuperación de desastres ukanx CDC ukax nayraqatax mä primaria ukat mä base de datos de respaldo ukanakamp chikaw datos ukarux sincroniza, ukax chiqpach pachan datos sincronización ukarux primaria ukanx secundario base de datos ukarux yanapt’iwa.
source ----------> CDC ----------> sink
SeaTunnel CDC ukax pä kasta yatiyawinak sincronización uñacht’ayi:
Sincronización de instantáneas sin bloqueo ukax ch’amanchatawa kunatix walja utjki uka plataformas CDC, kunjamakitix Debezium, ukax tablas ukanakax sincronización de datos históricos ukanx bloqueaspawa. Instantánea uñakipañax mä base de datos ukan nayra yatiyawinakap sincronización ukan lurawipawa. Aka lurawixa flujo básico ukaxa akhamawa:
storage -------------> splitEnumerator ---------- split ----------> reader ^ | | | \----------------- report -----------/
Jaljaña Jaljaña
splitEnumerator
(distribuidor split) ukax tabla ukan yatiyawinakap walja jaljanakaruw jaljayi, ukax uñt’ayat yapunakarjamaw (kunjamakitix ID de tabla jan ukax sapa llaves) ukat qhanañchat thakhi tamaparjama.
Procesamiento Paralelo ukaxa mä juk’a pachanakwa lurasi
Sapa jaljawixa yaqha ullart’iriruw churataraki paralelo uñakipañataki. Mä sapa ullart’irix mä conexión ukankaniwa.
Ukax mä juk’a pachanakanwa
Mä jaljawitakix ullart’añ lurawi tukuyatatxa, sapa ullart’irix nayrar sartawip yatiyaraki splitEnumerator
ukar kutt’ayañataki. Jaljawitak metadatos ukax akham uñacht’ayatawa:
String splitId # Routing ID TableId tableId # Table ID SeatunnelRowType splitKeyType # The type of field used for partitioning Object splitStart # Start point of the partition Object splitEnd # End point of the partition
Mä kutix ullart’irix jaljat yatiyawinak katuqxi ukhax SQL uka arsuwinakaw wakiskir uñstayi. Janïr qalltañkamaxa, jichha jaljawixa correspondiente posición ukarux base de datos ukan qillqt’atawa. Jichha jaljawi tukuyatatxa, ullart’irixa yatiyarakiw nayrar sartawi splitEnumerator
ukaru aka yatiyawinakampi:
String splitId # Split ID Offset highWatermark # Log position corresponding to the split, for future validation
Sincronización incremental ukax mä jamuqaw uñakipañ phaxsi tukuyatat qalltawayi. Aka pachanxa, kuna mayjt’awinakaxa phuqhata yatiyawi taypina utjki ukaxa katjatarakiwa ukatxa chiqapa pachana lurawimpi chikachasiñataki. Aka phaxsinx base de datos ukan registro ukar ist’i (jan ukax, MySQL binlog). Incremental tracking ukax mä rosca ukampiw lurasi, jan binlog ukan pä kuti jaqukipañapataki ukhamarak base de datos ukan cargap jisk’achañataki. Ukatwa, mä ullart’irikiw apnaqasi, ukax mä sapa conexión ukankiwa.
data log -------------> splitEnumerator ---------- split ----------> reader ^ | | | \----------------- report -----------/
Sincronización incremental uksanxa, taqi jaljawinaka ukhamaraki tablas ukanakaxa instantánea uksatxa mä sapa jaljawiruwa mayachataraki. Aka phaxsinx metadatos jaljatanakax akhamawa:
String splitId Offset startingOffset # The lowest log start position among all splits Offset endingOffset # Log end position, or "continuous" if ongoing, eg, in the incremental phase List<TableId> tableIds Map<TableId, Offset> tableWatermarks # Watermark for all splits List<CompletedSnapshotSplitInfo> completedSnapshotSplitInfos # Snapshot phase split details
CompletedSnapshotSplitInfo
ukax akhamawa:
String splitId TableId tableId SeatunnelRowType splitKeyType Object splitStart Object splitEnd Offset watermark # Corresponds to the highWatermark in the report
Incremental fase ukan jaljawipax taqi jaljawinakatakix uma chimpuniwa, ukax instantánea phaxsinkiwa. Uka jisk’a uma markaxa ajllitawa qalltañataki sincronización incremental ukataki.
Instantánea uñakipaña jan ukax incremental uñakipaña phaxsinx, base de datos ukax sincronización ukatakix mayjt’arakispawa. ¿Kunjamsa mä entrega chiqpachan garantizañäni?
Instantánea uñakipaña phaxsinxa, sañäni, mä jaljawixa mayjt’awinakaxa utjki ukjaxa sincronizado ukhamawa, kunjamatixa mä fila k3
uñstayaña, mä machaqar tukuyaña k2
, ukhamaraki mä chhaqtayaña k1
. Uñakipt’aña pachanxa jani lurawi uñt’ayawixa apnaqatäkaspa ukhaxa, machaq lurawinakaxa chhaqt’aspawa. SeaTunnel ukax aka tuqitw apnaqi:
split{start, end}
.
high = low
, jaljawitakix datos ukax janiw ullart’añ pachanx mayjt’kiti. Ukaxa (high - low) > 0
, mayjt’awinakaxa lurawi pachana utjiwa. Ukhamächi ukhaxa, SeaTunnel ukax:
low watermark
high watermark
ordenan apnaqañapawa, nayrïr teclas ukanakamp apnaqasa, memoria ukan tabla ukan lurawinakap wasitat anatañataki.
insert k3 update k2 delete k1 | | | vvv bin log --|---------------------------------------------------|-- log offset low watermark high watermark CDC reads: k1 k3 k4 | Replays v Real data: k2 k3' k4
Janïr jilxatañ phaxsi qalltañkamax SeaTunnel ukax nayraqat taqi jaljawinak nayrïr thakhit chiqanchawayi. Jaljawi taypinxa, yatiyawinakaxa machaqar tukuyatarakispawa, sañäni, machaq qillqatanakaxa jaljawi1 ukatxa jaljawi2 taypina uchatäspa ukhaxa, instantánea phaxsina jani walt’ayatarakispawa. Aka yatiyawinak jaljawi taypin kutt’ayañatakix SeaTunnel ukax aka amtaruw arkta:
completedSnapshotSplitInfos
uñakipt’aña, ukhamata uñjañataki kunatixa yatiyawixa kuna jaljawinsa luratarakiti janicha. Jan ukhamäkchi ukhaxa, jaljawi taypin datos ukham uñjatawa ukatx chiqañchañawa.
|------------filter split2-----------------| |----filter split1------| data log -|-----------------------|------------------|----------------------------------|- log offset min watermark split1 watermark split2 watermark max watermark
¿CDC ukar pausañasa ukat wasitat qalltañasa kunjamasa? SeaTunnel ukax mä algoritmo de instantánea distribuida (Chandy-Lamport) ukampiw apnaqasi:
Sistema ukaxa pä proceso ukaniwa sasina amuyt’añäni, p1
ukatxa p2
, kawkhantixa p1
ukaxa kimsa variables X1 Y1 Z1
ukatxa p2
ukaxa kimsa variables X2 Y2 Z2
ukaniwa. Qallta estados ukanakax akhamawa:
p1 p2 X1:0 X2:4 Y1:0 Y2:2 Z1:0 Z2:3
Aka chiqanx p1
mä uraqpachan uñacht’äwip qalltawayi. p1
nayraqatax estado de proceso ukaruw qillqt’i, ukatx mä marcador p2
ukaruw khitharaki.
Janïra markachirixa p2
uksaru purinkipana, p2
M
uksa p1
uksaruwa apayani.
p1 p2 X1:0 -------marker-------> X2:4 Y1:0 <---------M---------- Y2:2 Z1:0 Z2:3
Markachiri katuqasaxa, p2
estado ukanaka qillqt’i, ukatxa p1
ukaxa M
yatiyawi katuqaraki. Niyakixay p1
ukax nayratpach mä local instantánea lurawaychixa, ukax M
yatiyaw qillqt’añakiw wakisi. Qhipa uñacht’awix akham uñt’ayatawa:
p1 M p2 X1:0 X2:4 Y1:0 Y2:2 Z1:0 Z2:3
SeaTunnel CDC ukanxa, markachirinakaxa taqi ullart’irinakaru, jaljata jakhthapirinakaru, qillqirinakaru, ukhamaraki yaqha nodos ukanakaru apayapxi, sapa mayniwa estado de memoria ukanaka uñjapxi.