[{"data":1,"prerenderedAt":564},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fintegration\u002Fmysql-cdc-source-configuration":3},{"id":4,"title":5,"body":6,"description":555,"extension":556,"meta":557,"navigation":558,"path":559,"redirect":560,"seo":561,"stem":562,"__hash__":563},"docs\u002Fdocs\u002Fintegration\u002Fmysql-cdc-source-configuration.md","MySQL CDC Source Configuration",{"type":7,"value":8,"toc":545},"minimark",[9,13,17,20,29,32,48,53,56,72,78,88,91,95,98,152,246,249,253,268,285,288,297,300,304,307,339,343,394,398,502,511,515,529,533,541],[10,11,5],"h1",{"id":12},"mysql-cdc-source-configuration",[14,15,16],"p",{},"Use this page when MySQL is the source for a CDC workflow.",[14,18,19],{},"CDC mode reads changes from the MySQL binary log. It is different from Load mode, which reads tables directly without binlog setup.",[14,21,22,23,28],{},"If you only need a bounded load, use ",[24,25,27],"a",{"href":26},"\u002Fdocs\u002Fintegration\u002Fmysql-conversion-configuration","MySQL Load Mode Guide"," instead.",[14,30,31],{},"For the canonical setup flow, combine this page with:",[33,34,35,42],"ul",{},[36,37,38],"li",{},[24,39,41],{"href":40},"\u002Fdocs\u002Fconnections\u002Fmysql-server","MySQL Server Configuration",[36,43,44],{},[24,45,47],{"href":46},"\u002Fdocs\u002Fintegration\u002Fwhat-is-cdc","CDC Mode",[49,50,52],"h2",{"id":51},"check-cdc-readiness","Check CDC readiness",[14,54,55],{},"There are two places in the UI that surface CDC readiness:",[14,57,58,62,63,67,68,71],{},[59,60,61],"strong",{},"Database Overview"," in ",[24,64,66],{"href":65},"\u002Fdocs\u002Fdatabase-explorer\u002F","Data Explorer"," — open the database in the sidebar. The ",[59,69,70],{},"CDC readiness"," card shows whether CDC is enabled along with the current binlog format, row image, and server ID.",[73,74],"themed-image",{"alt":75,"dark":76,"light":77},"Database Overview for a MySQL database with the CDC readiness card reporting binary log ON, row format ROW, row image FULL, and server ID","\u002Fimages\u002Fdocs\u002Fintegration\u002Fmysql-cdc-readiness-dark.png","\u002Fimages\u002Fdocs\u002Fintegration\u002Fmysql-cdc-readiness-light.png",[14,79,80,83,84,87],{},[59,81,82],{},"Stream wizard"," — when creating a new stream, the ",[59,85,86],{},"Data Transfer Mode"," step checks the source automatically. If binlog is not configured for CDC, the Stream (Change Data Capture) option shows a warning and is disabled.",[14,89,90],{},"If both show CDC as ready, the source is configured. If not, apply the settings below and restart MySQL.",[49,92,94],{"id":93},"required-server-settings","Required server settings",[14,96,97],{},"For a self-managed MySQL instance, add or update these in the MySQL configuration:",[99,100,105],"pre",{"className":101,"code":102,"language":103,"meta":104,"style":104},"language-ini shiki shiki-themes github-light github-dark","[mysqld]\nserver_id             = 1\nlog_bin               = mysql-bin\nbinlog_format         = row\nbinlog_row_image      = full\nbinlog_checksum       = none\nexpire_logs_days      = 3\n","ini","",[106,107,108,116,122,128,134,140,146],"code",{"__ignoreMap":104},[109,110,113],"span",{"class":111,"line":112},"line",1,[109,114,115],{},"[mysqld]\n",[109,117,119],{"class":111,"line":118},2,[109,120,121],{},"server_id             = 1\n",[109,123,125],{"class":111,"line":124},3,[109,126,127],{},"log_bin               = mysql-bin\n",[109,129,131],{"class":111,"line":130},4,[109,132,133],{},"binlog_format         = row\n",[109,135,137],{"class":111,"line":136},5,[109,138,139],{},"binlog_row_image      = full\n",[109,141,143],{"class":111,"line":142},6,[109,144,145],{},"binlog_checksum       = none\n",[109,147,149],{"class":111,"line":148},7,[109,150,151],{},"expire_logs_days      = 3\n",[153,154,155,168],"table",{},[156,157,158],"thead",{},[159,160,161,165],"tr",{},[162,163,164],"th",{},"Setting",[162,166,167],{},"Purpose",[169,170,171,182,192,206,219,233],"tbody",{},[159,172,173,179],{},[174,175,176],"td",{},[106,177,178],{},"server_id",[174,180,181],{},"Unique identifier for replication. Each replica client needs a distinct value.",[159,183,184,189],{},[174,185,186],{},[106,187,188],{},"log_bin",[174,190,191],{},"Enables the binary log.",[159,193,194,199],{},[174,195,196],{},[106,197,198],{},"binlog_format",[174,200,201,202,205],{},"Must be ",[106,203,204],{},"ROW"," — statement-based or mixed logging is not supported.",[159,207,208,213],{},[174,209,210],{},[106,211,212],{},"binlog_row_image",[174,214,201,215,218],{},[106,216,217],{},"FULL"," — partial row images can miss column values.",[159,220,221,226],{},[174,222,223],{},[106,224,225],{},"binlog_checksum",[174,227,228,229,232],{},"Set to ",[106,230,231],{},"NONE"," to avoid checksum-related parsing issues.",[159,234,235,240],{},[174,236,237],{},[106,238,239],{},"expire_logs_days",[174,241,242,243,28],{},"Binlog retention period. Set high enough that the stream can start before logs are purged. On MySQL 8.0+, use ",[106,244,245],{},"binlog_expire_logs_seconds",[14,247,248],{},"Restart MySQL after changing these settings.",[49,250,252],{"id":251},"required-privileges","Required privileges",[14,254,255,256,259,260,263,264,267],{},"The CDC user needs ",[106,257,258],{},"SELECT"," for reading table metadata and ",[106,261,262],{},"REPLICATION CLIENT"," + ",[106,265,266],{},"REPLICATION SLAVE"," for consuming the binlog:",[99,269,273],{"className":270,"code":271,"language":272,"meta":104,"style":104},"language-sql shiki shiki-themes github-light github-dark","GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'cdc_user'@'%';\nFLUSH PRIVILEGES;\n","sql",[106,274,275,280],{"__ignoreMap":104},[109,276,277],{"class":111,"line":112},[109,278,279],{},"GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'cdc_user'@'%';\n",[109,281,282],{"class":111,"line":118},[109,283,284],{},"FLUSH PRIVILEGES;\n",[14,286,287],{},"Verify with:",[99,289,291],{"className":270,"code":290,"language":272,"meta":104,"style":104},"SHOW GRANTS FOR 'cdc_user'@'%';\n",[106,292,293],{"__ignoreMap":104},[109,294,295],{"class":111,"line":112},[109,296,290],{},[14,298,299],{},"Use a dedicated CDC user where practical instead of reusing a broad administrative account.",[49,301,303],{"id":302},"cloud-hosted-mysql-cdc-sources","Cloud-hosted MySQL CDC sources",[14,305,306],{},"If the source is provider-managed, use the provider page for network and parameter group setup, then return here for the DBConvert Streams-side CDC requirements:",[33,308,309,315,321,327,333],{},[36,310,311],{},[24,312,314],{"href":313},"\u002Fdocs\u002Fconnections\u002Famazon-rds","Amazon RDS for MySQL Guide",[36,316,317],{},[24,318,320],{"href":319},"\u002Fdocs\u002Fconnections\u002Faws-aurora-mysql","AWS Aurora MySQL Guide",[36,322,323],{},[24,324,326],{"href":325},"\u002Fdocs\u002Fconnections\u002Fgoogle-cloud-sql","Google Cloud SQL Connection Guide",[36,328,329],{},[24,330,332],{"href":331},"\u002Fdocs\u002Fconnections\u002Fazure-database-configuration","Azure Database Connection Guide",[36,334,335],{},[24,336,338],{"href":337},"\u002Fdocs\u002Fconnections\u002Fdo-database-cdc","DigitalOcean Managed Database Guide",[49,340,342],{"id":341},"validation-checklist","Validation checklist",[344,345,346,356,378,391],"ol",{},[36,347,348,349,351,352,355],{},"Test the MySQL connection from the ",[24,350,66],{"href":65}," sidebar (right-click → ",[59,353,354],{},"Test connection",") or from the connection editor.",[36,357,358,359,361,362,365,366,369,370,373,374,377],{},"Open the database in Data Explorer and check the ",[59,360,70],{}," card — it should show ",[59,363,364],{},"enabled"," with ",[106,367,368],{},"BINARY LOG: ON",", ",[106,371,372],{},"FORMAT: ROW",", and ",[106,375,376],{},"ROW IMAGE: FULL",".",[36,379,380,381,384,385,387,388,390],{},"Run ",[106,382,383],{},"SHOW GRANTS"," for the CDC user and confirm ",[106,386,262],{}," and ",[106,389,266],{}," are granted.",[36,392,393],{},"Start with a narrow CDC stream (one or two tables) before scaling to a larger scope.",[49,395,397],{"id":396},"troubleshooting","Troubleshooting",[153,399,400,413],{},[156,401,402],{},[159,403,404,407,410],{},[162,405,406],{},"Symptom",[162,408,409],{},"Likely cause",[162,411,412],{},"Fix",[169,414,415,428,445,460,475,491],{},[159,416,417,420,425],{},[174,418,419],{},"Stream fails to start with binlog error",[174,421,422,424],{},[106,423,188],{}," is OFF",[174,426,427],{},"Enable binary logging and restart MySQL",[159,429,430,433,440],{},[174,431,432],{},"Events missing column values",[174,434,435,437,438],{},[106,436,212],{}," is not ",[106,439,217],{},[174,441,228,442,444],{},[106,443,217],{}," and restart",[159,446,447,450,456],{},[174,448,449],{},"Checksum parse errors",[174,451,452,437,454],{},[106,453,225],{},[106,455,231],{},[174,457,228,458,444],{},[106,459,231],{},[159,461,462,465,468],{},[174,463,464],{},"Permission denied on binlog",[174,466,467],{},"CDC user lacks replication privileges",[174,469,470,471,474],{},"Run the ",[106,472,473],{},"GRANT"," statement above",[159,476,477,480,483],{},[174,478,479],{},"Stream starts but misses old events",[174,481,482],{},"Binlog retention is too short",[174,484,485,486,488,489],{},"Increase ",[106,487,239],{}," or ",[106,490,245],{},[159,492,493,496,499],{},[174,494,495],{},"Provider-managed settings not taking effect",[174,497,498],{},"Parameter group change pending reboot",[174,500,501],{},"Reboot the instance from the cloud console",[14,503,504,505,377],{},"For background on how binlog-based CDC works — trigger vs query vs binlog methods, their trade-offs, and common production pitfalls — see ",[24,506,510],{"href":507,"rel":508},"https:\u002F\u002Fstreams.dbconvert.com\u002Fblog\u002Fmysql-change-data-capture\u002F",[509],"nofollow","MySQL Change Data Capture: a practical guide",[49,512,514],{"id":513},"related-docs","Related docs",[33,516,517,521,525],{},[36,518,519],{},[24,520,41],{"href":40},[36,522,523],{},[24,524,27],{"href":26},[36,526,527],{},[24,528,47],{"href":46},[49,530,532],{"id":531},"further-reading","Further reading",[33,534,535],{},[36,536,537],{},[24,538,540],{"href":507,"rel":539},[509],"MySQL Change Data Capture: methods, configuration, and tools",[542,543,544],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":104,"searchDepth":118,"depth":118,"links":546},[547,548,549,550,551,552,553,554],{"id":51,"depth":118,"text":52},{"id":93,"depth":118,"text":94},{"id":251,"depth":118,"text":252},{"id":302,"depth":118,"text":303},{"id":341,"depth":118,"text":342},{"id":396,"depth":118,"text":397},{"id":513,"depth":118,"text":514},{"id":531,"depth":118,"text":532},"Configure MySQL sources for binlog-based CDC workflows in DBConvert Streams.","md",{},false,"\u002Fdocs\u002Fintegration\u002Fmysql-cdc-source-configuration",null,{"title":5,"description":555},"docs\u002Fintegration\u002Fmysql-cdc-source-configuration","01VKFCVE9P2Zfg-hdLaagFPIBOBQPLg5h88wYIYGe_4",1787648540901]