> ## Documentation Index
> Fetch the complete documentation index at: https://www.integrate.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# ETL: MySQL Snapshot CDC Source

> How to configure the MySQL Snapshot CDC source component to read changed records from MySQL in your Integrate.io ETL pipeline.

Use the MySQL (Snapshot CDC) source component to read only the records that have changed in your MySQL tables since the previous pipeline run, instead of reprocessing the entire table every time. The component produces two outputs: **Upserted records** (new and updated rows) and **Deleted records** (rows removed from the source).

## Connection Setup

Before reading changes, set up your MySQL connection. See [Connecting to MySQL](/etl/allowing-integrateio-etl-access-to-mysql-databases) for the credentials and network access required. Once the connection exists, add the **MySQL (Snapshot CDC)** source component to your pipeline and select it.

## Snapshot Storage

MySQL Snapshot CDC uses **File Based** snapshot storage. The snapshot of your previous run is stored as a Parquet file on Integrate.io managed cloud storage, which means:

* Only read access to your MySQL database is required.
* No snapshot tables are created in your source database.
* On the first run, every current record is treated as upserted because there is no previous snapshot to compare against.

<Note>
  Database (table-based) snapshot storage is only available for SQL Server connections. For MySQL, File Based storage is the only option, and you do not need to configure an S3 connection of your own.
</Note>

## Change Detection

Choose how the component decides whether a row has changed:

* **Primary Key**: matches rows by a unique identifier column (for example `id` or `customer_id`) and detects updates by comparing the remaining column values. Best when the table has a reliable key.
* **Composite Hash**: builds a hash from all or selected columns and compares hashes between runs. Best when the table has no reliable primary key.

With File Based storage you can also switch the **Source Mode** from **Table** to **Query** to track changes across a custom SQL query, including JOINs across multiple tables.

## Example

Track customer information changes for an audit trail:

* **Source table**: `customers`
* **Method**: Primary Key
* **Primary key**: `customer_id`
* **Upserted records**: log changes for the audit trail
* **Deleted records**: process data deletion requests

## Full Configuration Reference

<Card title="Snapshot CDC Source reference" icon="book" href="/etl/using-components-cdc-database-source" horizontal>
  Configuration steps, change detection methods, query mode, best practices, troubleshooting, and limitations that apply to every Snapshot CDC source.
</Card>
