Sources

Overview

The databases and SaaS connectors Fabric reads from, the fields they share, and how setup works.

A source is the operational system Fabric reads from. You add one inside the New Sync wizard — pick the source family on the first step, then fill its connection form. Fabric keeps one isolated, supervised runner process per source, so a failure in one pipeline never affects the others.

Every source runs on a native connector. There is no Kafka, no Kafka Connect, no Schema Registry, and no Debezium anywhere in the path — the runner connects to the source directly and writes to your destination.

Supported sources

KindSourcesChange capture
DatabasePostgreSQL, MySQL, MariaDB, SQL Server, IBM Db2Transaction log / change tables
DatabaseMongoDBChange streams (oplog)
SaaSZoho CRMPolling REST API

Setup, end to end

  1. Prepare the source system. Enable its change-capture mechanism and create a login Fabric can use. Each source page lists the exact server settings, SQL, and grants.
  2. Pick the family and fill the connection form. Only the fields for the family you picked are shown.
  3. Save. Saving runs a live preflight: Fabric opens a real connection and checks the source-side prerequisites. The source is only created if the preflight passes, so a bad setting fails at setup rather than at the first run.
  4. Choose tables and a sink. Fabric discovers the source's tables automatically; you select the ones to sync and where they land.

The connection test

Each family's Database field has a Test connection button that lists the databases the login can see. Saving the source runs the full preflight — the same checks the runner makes when it starts.

Fields every source shares

The connection block differs per family, but these fields are common to all of them:

FieldRequiredWhat it does
Connector nameYesUnique name for this source; also the runner's identity.
Snapshot modeYesinitial (default) / no_data / never — see below.
Snapshot chunk sizeNoRows paged per chunk during the initial snapshot. Defaults to 20,000; a table can override it from the table list.
Commit interval (ms)NoHow often buffered records flush as a new file in the destination. Defaults to 30,000 (Snowflake raises this to 300,000). Takes effect on the next restart.
Parallel snapshot workersNoConcurrent scan connections during the initial load. 1 = serial; MySQL and MariaDB always run serial. Takes effect on the next restart.

TLS and encryption in transit

Every database source carries its own TLS setting, which decides how the runner encrypts its connection to your database. It belongs to the source, not the workspace, so two sources on the same engine can use different modes. The modes, weakest first:

ModeWhat it does
disableNo TLS. Traffic to the database is plaintext.
preferTLS if the server offers it, plaintext if not. The certificate is not verified, so anyone on the path can strip the encryption.
requireRequire TLS, but do not verify the server's certificate — encrypted, yet anyone who can intercept the path can impersonate the server.
verify-caRequire TLS and verify the certificate chain against the CA you supply. The certificate's host name is not checked.
verify-fullEverything verify-ca does, and the host name in the certificate must match the database's host name.

Not every engine implements every mode. Where a mode would have to be silently downgraded, Fabric refuses the combination when you save instead:

EngineModes
PostgreSQL, MySQL, MariaDBdisable, prefer, require, verify-ca, verify-full
SQL Serverdisable, require, verify-full
IBM Db2, MongoDBdisable, require, verify-ca, verify-full

SQL Server's ODBC driver validates the certificate chain and the host name together and takes no separate CA, so it has no verify-ca; its CA must be installed in the runner image rather than supplied per source. PostgreSQL, MySQL, MariaDB, Db2 and MongoDB take a CA PEM with the source when you pick verify-ca or verify-full.

A new hosted source starts at require

A new source in the hosted service defaults to require — encrypted, certificate unverified — until you choose a stronger mode. disable and prefer are refused there unless the operator has enabled plaintext sources for the service. A source left on the engine default keeps the behaviour it has always had, so an upgrade never changes a connection that works today.

Where to get the CA

Managed services publish their CA as a download — take it from the provider, and never paste a private key or a fingerprint anywhere. The CA PEM is stored encrypted with the source's other secrets. Start here:

Through an SSH tunnel

A tunnel makes the driver dial localhost, so a verify-full host-name check would run against localhost rather than your database's name. Only PostgreSQL can be handed the real name separately; on MySQL, MariaDB, Db2 and MongoDB use verify-ca through a tunnel (the CA is still verified), and on SQL Server, which has no verify-ca, use require — or connect to the database without the tunnel.

Snapshot modes

The snapshot runs once, before streaming begins. The mode controls how much of it happens:

ModeBehavior
initial (default)Full snapshot of the selected tables, then stream changes from the captured starting point.
no_dataSchema only — no rows copied. Streaming starts from the current position. Use this when the tables were pre-loaded from a dump.
neverSkip the snapshot entirely and stream from the current position.

Where the data goes

The wizard's Sink step attaches a destination to the source. Pick a destination kind (Iceberg, Delta Lake, S3 Tables, Postgres, Snowflake, or ClickHouse) and a concrete destination, or leave it on use default destination to use that kind's default. The available sinks are documented under Sinks.