[{"data":1,"prerenderedAt":461},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fintegration\u002Fpostgres-cdc-source-configuration":3},{"id":4,"title":5,"body":6,"description":452,"extension":453,"meta":454,"navigation":455,"path":456,"redirect":457,"seo":458,"stem":459,"__hash__":460},"docs\u002Fdocs\u002Fintegration\u002Fpostgres-cdc-source-configuration.md","PostgreSQL CDC Source Configuration",{"type":7,"value":8,"toc":441},"minimark",[9,13,17,20,23,40,45,48,59,67,71,74,88,92,95,125,128,132,135,152,155,159,162,217,220,224,227,259,263,303,307,419,423,437],[10,11,5],"h1",{"id":12},"postgresql-cdc-source-configuration",[14,15,16],"p",{},"Use this page when PostgreSQL is the source for a CDC workflow.",[14,18,19],{},"CDC mode reads changes from PostgreSQL WAL through logical replication. It is different from Load mode, which reads tables directly without WAL-based replication setup.",[14,21,22],{},"For the canonical setup flow, combine this page with:",[24,25,26,34],"ul",{},[27,28,29],"li",{},[30,31,33],"a",{"href":32},"\u002Fdocs\u002Fconnections\u002Fpostgresql-server","PostgreSQL Server Configuration",[27,35,36],{},[30,37,39],{"href":38},"\u002Fdocs\u002Fintegration\u002Fwhat-is-cdc","What Is CDC?",[41,42,44],"h2",{"id":43},"when-to-use-this-page","When to use this page",[14,46,47],{},"Use this guide when you need:",[24,49,50,53,56],{},[27,51,52],{},"ongoing replication of inserts, updates, and deletes",[27,54,55],{},"a PostgreSQL source that continues streaming changes after the initial load",[27,57,58],{},"a CDC workflow instead of a bounded Load run",[14,60,61,62,66],{},"If you only need a one-time load or migration, use ",[30,63,65],{"href":64},"\u002Fdocs\u002Fintegration\u002Fpostgres-conversion-configuration","PostgreSQL Load Mode Guide"," instead.",[41,68,70],{"id":69},"minimum-source-requirements","Minimum source requirements",[14,72,73],{},"Before enabling CDC, confirm:",[24,75,76,79,82,85],{},[27,77,78],{},"the PostgreSQL connection already works in DBConvert Streams",[27,80,81],{},"logical replication is enabled on the source",[27,83,84],{},"replication capacity is sufficient for the environment",[27,86,87],{},"the selected user has the required replication and read privileges",[41,89,91],{"id":90},"required-postgresql-settings","Required PostgreSQL settings",[14,93,94],{},"For a self-managed PostgreSQL source, the core settings typically include:",[96,97,102],"pre",{"className":98,"code":99,"language":100,"meta":101,"style":101},"language-ini shiki shiki-themes github-light github-dark","wal_level = logical\nmax_replication_slots = 5\nmax_wal_senders = 10\n","ini","",[103,104,105,113,119],"code",{"__ignoreMap":101},[106,107,110],"span",{"class":108,"line":109},"line",1,[106,111,112],{},"wal_level = logical\n",[106,114,116],{"class":108,"line":115},2,[106,117,118],{},"max_replication_slots = 5\n",[106,120,122],{"class":108,"line":121},3,[106,123,124],{},"max_wal_senders = 10\n",[14,126,127],{},"These values must fit your environment. The exact counts depend on how many replication consumers and slots the deployment uses.",[41,129,131],{"id":130},"required-privileges","Required privileges",[14,133,134],{},"The CDC user typically needs replication and login capability:",[96,136,140],{"className":137,"code":138,"language":139,"meta":101,"style":101},"language-sql shiki shiki-themes github-light github-dark","ALTER ROLE your_user WITH REPLICATION;\nALTER ROLE your_user WITH LOGIN;\n","sql",[103,141,142,147],{"__ignoreMap":101},[106,143,144],{"class":108,"line":109},[106,145,146],{},"ALTER ROLE your_user WITH REPLICATION;\n",[106,148,149],{"class":108,"line":115},[106,150,151],{},"ALTER ROLE your_user WITH LOGIN;\n",[14,153,154],{},"It also needs read access to the tables the stream will capture.",[41,156,158],{"id":157},"check-cdc-readiness","Check CDC readiness",[14,160,161],{},"There are two places in the UI that surface CDC readiness:",[24,163,164,196],{},[27,165,166,170,171,175,176,179,180,183,184,187,188,191,192],{},[167,168,169],"strong",{},"Database Overview"," in ",[30,172,174],{"href":173},"\u002Fdocs\u002Fdatabase-explorer\u002F","Data Explorer"," — open the database in the sidebar. The ",[167,177,178],{},"CDC readiness"," card shows the current ",[103,181,182],{},"WAL_LEVEL",", available replication slots, and WAL senders. When ",[103,185,186],{},"wal_level"," is not ",[103,189,190],{},"logical",", a note appears: ",[193,194,195],"em",{},"\"PostgreSQL wal_level is not 'logical' — logical decoding (CDC) will be unavailable.\"",[27,197,198,201,202,205,206,208,209,212,213,216],{},[167,199,200],{},"Stream wizard"," — when creating a new stream, the ",[167,203,204],{},"Data Transfer Mode"," step checks the source automatically. If ",[103,207,186],{}," is ",[103,210,211],{},"replica",", the Stream (Change Data Capture) option shows a warning (",[193,214,215],{},"\"PostgreSQL wal_level is 'replica' — must be 'logical' for CDC\"",") and is disabled.",[14,218,219],{},"If both show CDC as ready, the source is configured. If not, apply the settings above and restart PostgreSQL.",[41,221,223],{"id":222},"cloud-hosted-postgresql-cdc-sources","Cloud-hosted PostgreSQL CDC sources",[14,225,226],{},"If the source is provider-managed, use the provider page for network and managed-service specifics, then return here for the DBConvert Streams CDC requirements:",[24,228,229,235,241,247,253],{},[27,230,231],{},[30,232,234],{"href":233},"\u002Fdocs\u002Fconnections\u002Faws-aurora-postgres","AWS Aurora PostgreSQL Guide",[27,236,237],{},[30,238,240],{"href":239},"\u002Fdocs\u002Fconnections\u002Fgoogle-cloud-sql","Google Cloud SQL Connection Guide",[27,242,243],{},[30,244,246],{"href":245},"\u002Fdocs\u002Fconnections\u002Fazure-database-configuration","Azure Database Connection Guide",[27,248,249],{},[30,250,252],{"href":251},"\u002Fdocs\u002Fconnections\u002Fneon-database","Neon PostgreSQL Guide",[27,254,255],{},[30,256,258],{"href":257},"\u002Fdocs\u002Fconnections\u002Fdo-database-cdc","DigitalOcean Managed Database Guide",[41,260,262],{"id":261},"validation-checklist","Validation checklist",[264,265,266,276,285,300],"ol",{},[27,267,268,269,271,272,275],{},"Test the PostgreSQL connection from the ",[30,270,174],{"href":173}," sidebar (right-click → ",[167,273,274],{},"Test connection",") or from the connection editor.",[27,277,278,279,281,282,284],{},"Open the database in Data Explorer and check the ",[167,280,178],{}," card — it should show ",[167,283,190],{}," with available replication slots and WAL senders.",[27,286,287,288,291,292,295,296,299],{},"Confirm the CDC user has ",[103,289,290],{},"REPLICATION"," and ",[103,293,294],{},"LOGIN"," roles and ",[103,297,298],{},"SELECT"," access to the target tables.",[27,301,302],{},"Start with a narrow CDC stream (one or two tables) before scaling to a larger scope.",[41,304,306],{"id":305},"troubleshooting","Troubleshooting",[308,309,310,326],"table",{},[311,312,313],"thead",{},[314,315,316,320,323],"tr",{},[317,318,319],"th",{},"Symptom",[317,321,322],{},"Likely cause",[317,324,325],{},"Fix",[327,328,329,354,374,391,408],"tbody",{},[314,330,331,335,344],{},[332,333,334],"td",{},"Stream fails with WAL level error",[332,336,337,208,339,341,342],{},[103,338,186],{},[103,340,211],{}," instead of ",[103,343,190],{},[332,345,346,347,170,350,353],{},"Set ",[103,348,349],{},"wal_level = logical",[103,351,352],{},"postgresql.conf"," and restart PostgreSQL",[314,355,356,359,365],{},[332,357,358],{},"No replication slots available",[332,360,361,364],{},[103,362,363],{},"max_replication_slots"," is too low or all slots are in use",[332,366,367,368,370,371],{},"Increase ",[103,369,363],{}," and restart, or drop unused slots with ",[103,372,373],{},"SELECT pg_drop_replication_slot('slot_name')",[314,375,376,379,385],{},[332,377,378],{},"Connection refused for replication",[332,380,381,382,384],{},"User lacks ",[103,383,290],{}," role",[332,386,387,388],{},"Run ",[103,389,390],{},"ALTER ROLE user WITH REPLICATION",[314,392,393,396,402],{},[332,394,395],{},"Host access denied",[332,397,398,401],{},[103,399,400],{},"pg_hba.conf"," does not allow the DBConvert Streams host",[332,403,404,405,407],{},"Add a replication entry for the deployment IP in ",[103,406,400],{}," and reload",[314,409,410,413,416],{},[332,411,412],{},"Provider-managed settings not taking effect",[332,414,415],{},"Parameter change pending restart",[332,417,418],{},"Reboot the instance from the cloud console",[41,420,422],{"id":421},"related-docs","Related docs",[24,424,425,429,433],{},[27,426,427],{},[30,428,33],{"href":32},[27,430,431],{},[30,432,65],{"href":64},[27,434,435],{},[30,436,39],{"href":38},[438,439,440],"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":101,"searchDepth":115,"depth":115,"links":442},[443,444,445,446,447,448,449,450,451],{"id":43,"depth":115,"text":44},{"id":69,"depth":115,"text":70},{"id":90,"depth":115,"text":91},{"id":130,"depth":115,"text":131},{"id":157,"depth":115,"text":158},{"id":222,"depth":115,"text":223},{"id":261,"depth":115,"text":262},{"id":305,"depth":115,"text":306},{"id":421,"depth":115,"text":422},"Configure PostgreSQL sources for logical-replication CDC workflows in DBConvert Streams.","md",{},false,"\u002Fdocs\u002Fintegration\u002Fpostgres-cdc-source-configuration",null,{"title":5,"description":452},"docs\u002Fintegration\u002Fpostgres-cdc-source-configuration","mXXSJyry4_GdplCSc_IojA2ewxAMqi6cXETVmpm6OgU",1782346475678]