[{"data":1,"prerenderedAt":364},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fintegration\u002Fwhat-is-cdc":3},{"id":4,"title":5,"body":6,"description":355,"extension":356,"meta":357,"navigation":358,"path":359,"redirect":360,"seo":361,"stem":362,"__hash__":363},"docs\u002Fdocs\u002Fintegration\u002Fwhat-is-cdc.md","Change Data Capture (CDC) Mode",{"type":7,"value":8,"toc":344},"minimark",[9,13,17,30,36,41,62,70,78,82,85,136,139,143,149,165,170,192,196,199,231,235,238,250,253,284,287,295,299,302,309,313],[10,11,5],"h1",{"id":12},"change-data-capture-cdc-mode",[14,15,16],"p",{},"CDC mode is the continuous-replication mode in DBConvert Streams. It reads row-level changes from supported transactional database logs and propagates them to a downstream target.",[14,18,19],{},[20,21,25],"a",{"href":22,"rel":23},"https:\u002F\u002Fyoutu.be\u002FPE33jA91k2Q",[24],"nofollow",[26,27],"img",{"alt":28,"src":29},"CDC Mode Walkthrough","https:\u002F\u002Fimg.youtube.com\u002Fvi\u002FPE33jA91k2Q\u002F0.jpg",[14,31,32],{},[26,33],{"alt":34,"src":35},"Transaction Log Change Data Capture","\u002Fimages\u002Fdocs\u002Flog-cdc.png",[37,38,40],"h2",{"id":39},"when-to-use-cdc","When to use CDC",[14,42,43,44,48,49,52,53,56,57,61],{},"Use CDC when you need ongoing synchronization of ",[45,46,47],"code",{},"INSERT",", ",[45,50,51],{},"UPDATE",", and ",[45,54,55],{},"DELETE"," events after an initial load. For one-time migrations or bounded transfers, use ",[20,58,60],{"href":59},"\u002Fdocs\u002Fintegration\u002Fconversion-mode","Load mode"," instead.",[14,63,64,65,69],{},"If the source already contains rows, CDC can optionally run an ",[20,66,68],{"href":67},"\u002Fdocs\u002Fstreams\u002Finitial-load-and-cdc","initial snapshot"," before it starts reading ongoing changes.",[14,71,72,73,77],{},"For a side-by-side comparison, see ",[20,74,76],{"href":75},"\u002Fdocs\u002Fstreams\u002Ftype-of-streams-cdc-conversion","Stream Types: CDC vs Load",".",[37,79,81],{"id":80},"how-cdc-works","How CDC works",[14,83,84],{},"CDC reads from the source engine's transactional log rather than querying tables directly:",[86,87,88,104],"table",{},[89,90,91],"thead",{},[92,93,94,98,101],"tr",{},[95,96,97],"th",{},"Source engine",[95,99,100],{},"Log mechanism",[95,102,103],{},"Configuration guide",[105,106,107,122],"tbody",{},[92,108,109,113,116],{},[110,111,112],"td",{},"MySQL-compatible",[110,114,115],{},"Binary log (binlog)",[110,117,118],{},[20,119,121],{"href":120},"\u002Fdocs\u002Fintegration\u002Fmysql-cdc-source-configuration","MySQL CDC Source Configuration",[92,123,124,127,130],{},[110,125,126],{},"PostgreSQL-compatible",[110,128,129],{},"WAL \u002F logical replication",[110,131,132],{},[20,133,135],{"href":134},"\u002Fdocs\u002Fintegration\u002Fpostgres-cdc-source-configuration","PostgreSQL CDC Source Configuration",[14,137,138],{},"DBConvert Streams converts captured log entries into mutation events and applies them to the target in order.",[37,140,142],{"id":141},"what-cdc-captures-and-what-it-does-not","What CDC captures and what it does not",[14,144,145],{},[146,147,148],"strong",{},"Captured:",[150,151,152,162],"ul",{},[153,154,155,48,157,48,159,161],"li",{},[45,156,47],{},[45,158,51],{},[45,160,55],{}," row-level events from the source log",[153,163,164],{},"committed transaction changes; rolled back transactions are not applied to the target",[14,166,167],{},[146,168,169],{},"Not captured:",[150,171,172,186,189],{},[153,173,174,175,48,178,181,182,77],{},"DDL changes made on the source after the stream starts (e.g., ",[45,176,177],{},"ALTER TABLE",[45,179,180],{},"DROP TABLE","). However, tables, structures, and indexes are created on the target if they are missing when the stream starts — controlled by the ",[20,183,185],{"href":184},"\u002Fdocs\u002Fstreams\u002Fdatabase-structure-options","structure options",[153,187,188],{},"Changes on tables not included in the stream scope",[153,190,191],{},"Events that occurred before the stream started or before log retention begins",[37,193,195],{"id":194},"prerequisites","Prerequisites",[14,197,198],{},"Before creating a CDC stream:",[200,201,202,218,221,224],"ol",{},[153,203,204,205,209,210,213,214,217],{},"The source connection must already work in DBConvert Streams — right-click it in the ",[20,206,208],{"href":207},"\u002Fdocs\u002Fdatabase-explorer\u002F","Data Explorer"," sidebar and select ",[146,211,212],{},"Test connection",", or use the ",[146,215,216],{},"Test Connection"," button in the connection editor.",[153,219,220],{},"The source engine must expose its transactional log — see the configuration guide for your engine above.",[153,222,223],{},"The CDC user must have replication-related privileges on the source.",[153,225,226,227,77],{},"The source–target combination must be within the CDC support boundary. Confirm in the ",[20,228,230],{"href":229},"\u002Fdocs\u002Fguide\u002Fintro#capability-matrix","Capability Matrix",[37,232,234],{"id":233},"typical-rollout-options","Typical rollout options",[14,236,237],{},"Use the pattern that matches your support boundary and rollout requirements:",[200,239,240,247],{},[153,241,242,243,246],{},"Preferred when supported: run one CDC stream with ",[146,244,245],{},"Initial Load + CDC"," enabled.",[153,248,249],{},"Alternative: run Load first for initial data movement, then start CDC on the same source for ongoing changes.",[14,251,252],{},"If you choose Initial Load + CDC, the common sequence is:",[200,254,255,258,263,270,277],{},[153,256,257],{},"Create a CDC stream on the source table.",[153,259,260,261,77],{},"Enable ",[146,262,245],{},[153,264,265,266,269],{},"Use ",[45,267,268],{},"upsert"," target write mode.",[153,271,272,273,276],{},"Start the stream and open the ",[146,274,275],{},"Monitor"," tab.",[153,278,279,280,283],{},"Confirm the bootstrap phase completes and ",[146,281,282],{},"CDC Continuity"," shows a healthy handoff into CDC apply.",[14,285,286],{},"Use Load first when the initial load is a separate migration task, the target is not empty, or the source\u002Ftarget shape is outside Initial Load + CDC support.",[14,288,289,290,294],{},"For MySQL sources, eligible bootstrap tables can use resumable chunked snapshot copy automatically. For PostgreSQL sources, bootstrap stays on the plain path before CDC handoff. See ",[20,291,293],{"href":292},"\u002Fdocs\u002Fstreams\u002Fresumable-load","Resumable Load"," for the routing rules.",[37,296,298],{"id":297},"reliability-and-resume","Reliability and resume",[14,300,301],{},"CDC checkpoints advance after target writes succeed. If you stop a CDC stream and start the same config later, DBConvert Streams resumes from the saved source position as long as the source database still retains the required binlog\u002FWAL range.",[14,303,304,305,77],{},"For details, see ",[20,306,308],{"href":307},"\u002Fdocs\u002Fstreams\u002Fcdc-reliability-and-resume","CDC Reliability and Resume",[37,310,312],{"id":311},"related-docs","Related docs",[150,314,315,319,323,327,331,335,340],{},[153,316,317],{},[20,318,121],{"href":120},[153,320,321],{},[20,322,135],{"href":134},[153,324,325],{},[20,326,245],{"href":67},[153,328,329],{},[20,330,293],{"href":292},[153,332,333],{},[20,334,308],{"href":307},[153,336,337],{},[20,338,339],{"href":59},"Load Mode",[153,341,342],{},[20,343,76],{"href":75},{"title":345,"searchDepth":346,"depth":346,"links":347},"",2,[348,349,350,351,352,353,354],{"id":39,"depth":346,"text":40},{"id":80,"depth":346,"text":81},{"id":141,"depth":346,"text":142},{"id":194,"depth":346,"text":195},{"id":233,"depth":346,"text":234},{"id":297,"depth":346,"text":298},{"id":311,"depth":346,"text":312},"Understand CDC in DBConvert Streams and when to use it for ongoing synchronization.","md",{},false,"\u002Fdocs\u002Fintegration\u002Fwhat-is-cdc",null,{"title":5,"description":355},"docs\u002Fintegration\u002Fwhat-is-cdc","e4PzXc6Oo1SEOCcO9xWzP1laxbJUqA-ocxeCYKPxxaA",1782346473631]