What you will be able to do
- Choose between the standard gateway-based architecture and an integrated CDC pipeline
- Write an ingestion_definition with connection_name, connector_type, objects, SCD type and staging options
- Schedule integrated CDC pipelines and recover from purged change logs
- Compare schema-evolution and limit behaviour across the SQL Server, MySQL and PostgreSQL connectors
1.Standard gateway-based CDC vs integrated CDC
In the standard Lakeflow Connect architecture, a database connector uses two pipelines. An ingestion gateway runs all the time and extracts changes into a staging volume, and an ingestion pipeline applies them to streaming tables. SQL Server and MySQL also offer a second option, the integrated CDC pipeline. In a single pipeline update it runs both stages one after the other. During extraction it connects through a Unity Catalog connection, takes an initial snapshot on the first run or a full refresh, and after that captures inserts, updates and deletes into a staging volume. During application it merges those changes into destination streaming tables using the configured primary keys and SCD type, with exactly-once semantics.
| Feature | Standard CDC (gateway-based) | Integrated CDC |
|---|---|---|
| Number of pipelines | Two (ingestion gateway and ingestion pipeline) | One (unified pipeline) |
| Connection reference | ingestion_gateway_id | connection_name (a Unity Catalog connection) |
| Connector type | Implicit default CDC behavior | Explicit: connector_type: CDC |
| Staging volume | Managed internally by the gateway | Auto-created in the destination schema, or configured through data_staging_options |
| Pipeline mode | Continuous | Triggered only |
| Compute | Classic for the gateway, serverless for the managed ingestion pipeline | Classic compute only |
| Auto full refresh | Not supported for existing MySQL gateway-based flows | Supported |
Both engines use the same source configuration for either architecture, so moving from one to the other does not touch the database. The differences are on the Databricks side. Integrated CDC must be enabled for your workspace by your Databricks account team, and for MySQL it is a Beta feature. Integrated pipelines can be created through the API, the CLI, notebooks or Declarative Automation Bundles, but not yet through the UI. The standard SQL Server connector does support UI authoring. On SQL Server, the integrated connector reads only from the primary instance, not from read replicas, standby or secondary instances. On compute, a SQL Server integrated pipeline defaults to classic and can be switched to serverless, while a MySQL integrated pipeline is limited to classic.
Checkpoint 1 of 6· Match them up
Match each integrated CDC setting to what it replaces or does
Tap a term, then the definition that fits it.
Integrated CDC removes the gateway. Its pipeline references the connection directly, declares its connector type explicitly, and either manages its own staging volume or uses the one you configure.
“an integrated CDC pipeline runs both extraction and application stages in one pipeline update.”Source: docs.databricks.com
2.Writing the ingestion_definition
An integrated CDC pipeline is defined in a single request. The top-level catalog and schema set the default destination. Inside ingestion_definition you give the connection, the connector type, and an objects list of the tables to replicate. Here is the SQL Server version created from the CLI:
databricks pipelines create --json '{
"name": "<pipeline-name>",
"catalog": "<destination-catalog>",
"schema": "<destination-schema>",
"ingestion_definition": {
"connection_name": "<unity-catalog-connection-name>",
"connector_type": "CDC",
"objects": [
{
"table": {
"source_catalog": "<source-database>",
"source_schema": "<source-schema>",
"source_table": "<source-table>"
}
}
]
}
}'For SQL Server, source_catalog holds the database and source_schema holds a schema such as dbo. MySQL has no separate schema level, so its table objects leave out source_catalog and put the database name in source_schema. MySQL requests have one more requirement: every pipeline creation request must include a channel field set to the preview channel.
Checkpoint 2 of 6· Fill the gap
Which value completes this MySQL integrated CDC creation request?
databricks pipelines create --json '{
"name": "<pipeline-name>",
"channel": " ? ",
"catalog": "<destination-catalog>",
"schema": "<destination-schema>",
"ingestion_definition": {
"connection_name": "<unity-catalog-connection-name>",
"connector_type": "CDC",Every MySQL integrated CDC pipeline creation request must include "channel": "PREVIEW". CDC belongs in connector_type, not in channel.
Source: docs.databricks.comEach table can set table_configuration.scd_type to SCD_TYPE_1 or SCD_TYPE_2. In the documentation's SQL Server example, customers uses Type 1 and orders uses Type 2, which needs SQL Server CDC on the source, not just change tracking. To pick up a whole schema, use a schema object instead of table objects. The pipeline then skips any table that does not have CDC or change tracking enabled. data_staging_options sets where the staging volume goes. If you leave it out, the pipeline still creates a staging volume in the destination schema, so you need CREATE VOLUME there either way. Finally, connection_name and connector_type cannot be changed after the pipeline is created. To change the source, you create a new pipeline.
Checkpoint 3 of 6· Check yourself
A SQL Server table has only change tracking enabled. You set its table_configuration to SCD_TYPE_2 in an integrated CDC pipeline. What does the documentation say about this?
The documentation's example marks SCD Type 2 as requiring SQL Server CDC on the source. Change tracking records that a row changed, not the history of operations.
“the orders table uses SCD Type 2 (which requires SQL Server CDC on the source)”Source: docs.databricks.com
Checkpoint 4 of 6· Exam question
A data engineer wants to enable Lakeflow Connect CDC ingestion from a SQL Server availability group by pointing the connector at one of the readable secondary replicas, since it has more spare capacity than the primary. Why will this configuration fail?
Correct answer: A — Change tracking and CDC are not supported on SQL Server read replicas, so the connector must point at the primary instance instead.
- A. SQL Server's change tracking and CDC features are only available against the primary instance; secondary replicas cannot serve as a CDC source, so the connector must be pointed at the primary regardless of its available capacity.
- B. Lakeflow Connect supports SQL Server across on-premises deployments, EC2, Azure VMs, Azure SQL, and Amazon RDS, so the connector is not restricted to Azure-hosted deployments.
- C. Authentication is handled through the Unity Catalog connection's stored credentials and is independent of whether the target instance is primary or secondary; the failure here is about CDC support, not authentication.
- D. Network reachability is a separate concern from CDC support; even with working connectivity, change tracking and CDC simply are not exposed on secondary replicas.
3.Scheduling runs and recovering from log purges
An integrated pipeline has no always-on gateway. Each update extracts changes and stops by itself once it has caught up with the source, within a maximum runtime. This behaviour is called smart closure, and you cannot configure its minimum or maximum runtime. A large backlog can take several updates, each one continuing from where the last stopped. Pipelines run in triggered mode by default (continuous mode is in Beta), so for recurring ingestion you schedule them with a Lakeflow Jobs task. Every extraction stage runs for at least 10 minutes, and the documentation suggests starting with an interval of 60 minutes or longer:
resources:
jobs:
integrated_cdc_job:
name: '${var.pipeline_name}-job'
tasks:
- task_key: 'cdc_ingestion'
pipeline_task:
pipeline_id: ${resources.pipelines.integrated_cdc_pipeline.id}
schedule:
quartz_cron_expression: '0 0 * * * ?'
timezone_id: 'UTC'Because nothing reads the change logs between scheduled runs, the source's log retention becomes important. If SQL Server purges change tracking or CDC logs before the pipeline has processed them, the pipeline reports an error in the event log and you must fully refresh the affected tables. On classic compute, vertical autoscaling is on by default: if an update fails because it ran out of memory, the next update gets a larger driver.
The standard gateway runs continuously so that it captures changes before the logs are truncated. An integrated pipeline reads the logs only during scheduled updates. If the gap between updates is longer than the source's log retention, logs can be purged before they are processed, and the affected tables need a full refresh.
Checkpoint 5 of 6· Exam question
Which statement accurately describes the release status of Lakeflow Connect's relational database CDC connectors?
Correct answer: A — The SQL Server connector is generally available, while MySQL and PostgreSQL remain in Public Preview and need account team enrollment.
- A. SQL Server CDC ingestion via Lakeflow Connect has reached general availability, while the MySQL and PostgreSQL connectors are still Public Preview features that require contacting the Databricks account team for access.
- B. MySQL and PostgreSQL connectors are gated behind Public Preview enrollment through the account team, so it is inaccurate to describe all three sources as generally available with no special access process.
- C. SQL Server, not MySQL, is the connector that has reached general availability; MySQL remains in Public Preview alongside PostgreSQL.
- D. SQL Server has already reached general availability, so describing every relational database connector as still in Public Preview misstates its current release status.
Sources1
4.Schema evolution and limits across the three connectors
The SQL Server, MySQL and PostgreSQL connectors share most features: UI and API authoring, Declarative Automation Bundles, incremental ingestion, Unity Catalog governance, SCD type 2, and API-based column selection. None of them supports API-based row filtering. They differ in how they handle schema changes:
| Feature | SQL Server | MySQL | PostgreSQL |
|---|---|---|---|
| New and deleted columns | Supported | Supported | Supported |
| Data type changes | Not supported | Not supported | Not supported |
| Column renames | Not supported; requires a full refresh | Supported; treated as a new column and a deleted column | Not supported; requires a full refresh |
| New tables | Supported if you ingest the entire schema | Supported if you ingest the entire schema | Supported if you ingest the entire schema |
| Maximum tables per pipeline | 250 | 250 | 250 |
Checkpoint 6 of 6· Check yourself
A column is renamed in a source table. For which connector does Lakeflow Connect handle the rename automatically, without a full refresh?
MySQL treats a rename as a new column under the new name plus a deleted column under the old name. SQL Server and PostgreSQL need a full refresh.
“Treated as a new column (new name) and deleted column (old name).”Source: docs.databricks.com
Exam traps
Each one states something that sounds right. Open it to see what is actually true.
1.Every integrated CDC pipeline can run on serverless by adding "serverless": true.Why is that wrong?
That flag applies to SQL Server integrated pipelines. MySQL integrated CDC pipelines run on classic compute only.
Covered in Standard gateway-based CDC vs integrated CDC
2.Any SQL Server table with change tracking enabled can be ingested as SCD Type 2.Why is that wrong?
In the documentation's example, SCD Type 2 requires SQL Server CDC on the source.
Covered in Writing the ingestion_definition
3.You can re-point an existing integrated CDC pipeline at a different source by editing its connection_name.Why is that wrong?
connection_name and connector_type cannot be changed after creation. To change the source, create a new pipeline.
Covered in Writing the ingestion_definition
Practise it for real
Deploy a SQL Server integrated CDC pipeline and an hourly job with Declarative Automation Bundles
1.Create a Unity Catalog connection to SQL Server in Catalog Explorer, and confirm that change tracking or CDC is enabled on the source tables.
Why: API- and bundle-based authoring needs an existing connection, and the pipeline skips tables that do not have change capture enabled.
You should see: The connection tests successfully from Catalog Explorer.
2.In resources/integrated_cdc_pipeline.yml, define a pipeline whose ingestion_definition sets connection_name, connector_type: CDC, and a table object for dbo.customers with scd_type 'SCD_TYPE_1'.
Why: Integrated CDC references the connection directly and requires an explicit connector type.
You should see: A pipeline resource named integrated_cdc_pipeline in the bundle.
3.In resources/integrated_cdc_job.yml, add a job with a pipeline_task pointing to the pipeline and quartz_cron_expression '0 0 * * * ?'.
Why: Integrated pipelines are triggered and stop after catching up, so a job provides recurring ingestion. 60 minutes is the suggested starting interval.
You should see: A job resource named integrated_cdc_job.
4.Run databricks bundle deploy, then databricks bundle run integrated_cdc_job.
Why: Deploy creates the pipeline and job. Run triggers the first update, which takes the initial snapshot.
You should see: A customers streaming table appears in the destination schema, along with an auto-created staging volume.
Stuck? Get a nudge
If the run fails with INGESTION_GATEWAY_CDC_NOT_ENABLED, the source table does not have CDC or change tracking enabled.
Sources
Every claim above is drawn from one of these pages, quoted as it was written on the date shown.
- 1.https://docs.databricks.com/aws/en/ingestion/lakeflow-connect/sql-server-integrated-pipelineOfficial docs
“an integrated CDC pipeline runs both extraction and application stages in one pipeline update.”
↩︎ Standard gateway-based CDC vs integrated CDC“The integrated CDC connector does not support read replicas, standby instances, or secondary instances.”
↩︎ Standard gateway-based CDC vs integrated CDC“UI creation is not yet available.”
↩︎ Standard gateway-based CDC vs integrated CDC“The pipeline skips tables without CDC or change tracking enabled on the source.”
↩︎ Writing the ingestion_definition“A staging volume is required even if data_staging_options is not set, because the pipeline autocreates one in the destination schema.”
↩︎ Writing the ingestion_definition“Each pipeline update extracts changes and then stops automatically after it has caught up with the source, bounded by a maximum runtime.”
↩︎ Scheduling runs and recovering from log purges“Because each extraction stage runs for at least 10 minutes, an interval of 60 minutes or longer is a good starting point”
↩︎ Scheduling runs and recovering from log purges“If SQL Server purges change tracking logs or CDC logs before the pipeline processes them, perform a full refresh on the affected tables.”
↩︎ Scheduling runs and recovering from log purges“the orders table uses SCD Type 2 (which requires SQL Server CDC on the source)”
↩︎ Exam trap 2“connection_name and connector_type cannot be changed after the pipeline is created.”
↩︎ Exam trap 3“the orders table uses SCD Type 2 (which requires SQL Server CDC on the source)”
↩︎ Checkpoint - 2.https://docs.databricks.com/aws/en/ingestion/lakeflow-connect/mysql-integrated-pipelineOfficial docs
“This feature is in Beta.”
↩︎ Standard gateway-based CDC vs integrated CDC“All pipeline creation requests must include "channel": "PREVIEW".”
↩︎ Writing the ingestion_definition“Integrated CDC pipelines for MySQL require classic compute.”
↩︎ Exam trap 1“Integrated CDC pipelines for MySQL require classic compute.”
↩︎ Prediction - 3.
“Automated schema evolution: Data type changes | Not supported”
↩︎ Schema evolution and limits across the three connectors - 4.
“Maximum number of tables per pipeline | 250”
↩︎ Schema evolution and limits across the three connectors
Also cited
“Treated as a new column (new name) and deleted column (old name).”
↩︎ Checkpoint