initial default
Snapshot on first start, then stream
The connector performs a full snapshot the first time it starts (no offsets exist). After the snapshot completes, the connector streams subsequent changes from the transaction log. On later restarts, if offsets exist, the snapshot is skipped and streaming resumes from the saved position.
| Snapshot phase | reads all data as READ events |
|---|---|
| Streaming phase | streams WAL/binlog changes |
initial_only
Snapshot then stop — no streaming
The connector performs a full snapshot exactly like the initial mode, but after the snapshot completes, the connector stops. It does not stream subsequent changes from the transaction log.
| Snapshot phase | reads all data as READ events |
|---|---|
| Streaming phase | connector stops after snapshot |
always
Full snapshot every restart
The connector performs a complete snapshot every time it starts, regardless of whether offsets exist. After each snapshot, it streams subsequent changes. This re-emits READ events for all existing rows on each restart.
| Snapshot phase | full snapshot on EVERY start |
|---|---|
| Streaming phase | streams WAL/binlog changes after |
no_data
Schema only — no data READ events
The connector captures the structure (schema/DDL) of all relevant tables but does not emit READ events for existing rows. After the schema phase completes, it streams subsequent changes from the transaction log as normal.
| Snapshot phase | captures schema/DDL only, no row data |
|---|---|
| Streaming phase | streams WAL/binlog changes |
never
Skip snapshot, stream from current position
The connector skips the snapshot entirely and begins streaming directly from the current log position (end of the WAL/binlog at startup). Existing rows are never emitted.
| Snapshot phase | skipped |
|---|---|
| Streaming phase | streams from current log position at startup |
when_needed
Snapshot only if offsets are missing or stale
The connector performs a snapshot only if it cannot detect any stored offsets, or if the stored offset refers to a log position that is no longer available on the server (e.g., the WAL segment or binlog file has been purged).
| Snapshot phase | conditional — only if offsets absent or invalid |
|---|---|
| Streaming phase | streams WAL/binlog changes |
recovery
Rebuild lost schema history topic
Restores a lost or corrupted internal schema history topic by re-reading the DDL directly from the live database tables. The connector rebuilds the schema history and then resumes streaming from the last known offset.
| Snapshot phase | rebuilds schema history from live DB |
|---|---|
| Streaming phase | resumes from last offset |
configuration_based
Fine-grained control via properties
Controls snapshot behavior through specific connector properties prefixed with snapshot.mode.configuration.based.*. Allows separately configuring whether to snapshot data, schema, and what to do on subsequent restarts.
| Snapshot phase | determined by configuration properties |
|---|---|
| Streaming phase | determined by configuration properties |
custom
Inject a custom Snapshotter implementation
Loads a user-provided class that implements the io.debezium.spi.snapshot.Snapshotter SPI. The class name must be set via snapshot.mode.custom.name. This mode provides complete control over snapshot decisions.
| Snapshot phase | determined by custom class |
|---|---|
| Streaming phase | determined by custom class |