MariaDB and MySQL source
tap-mysql extracts relational tables with full-table, key-based incremental,
or binlog-based replication. MariaDB and MySQL share the connector but have
different support status.
Source |
Status |
Bulk transfer |
|---|---|---|
MariaDB |
Available |
FullSync to PostgreSQL or Snowflake; PartialSync to Snowflake, including managed Iceberg v3 |
MySQL |
Experimental |
FullSync to PostgreSQL or Snowflake; PartialSync to Snowflake, including managed Iceberg v3 |
Prerequisites
The runtime user needs SELECT on every replicated table and access to
INFORMATION_SCHEMA. LOG_BASED replication additionally requires
REPLICATION CLIENT and REPLICATION SLAVE.
Configure the source before selecting LOG_BASED:
[mysqld]
log_bin=mysql-binlog
binlog_format=ROW
binlog_row_image=FULL
Retain binlogs longer than the maximum expected outage. If PipelineWise’s saved position is purged, the affected tables require a resync.
Configuration
id: "orders"
name: "Orders MariaDB"
type: "tap-mysql"
owner: "data-platform@example.com"
db_conn:
host: "<HOST>"
port: 3306
user: "<USER>"
password: "{{ env_var['MARIADB_PASSWORD'] }}"
dbname: "orders"
engine: "mariadb"
use_gtid: true
target: "snowflake"
batch_size_rows: 20000
stream_buffer_size: 0
schemas:
- source_schema: "orders"
target_schema: "repl_orders"
tables:
- table_name: "payments"
replication_method: "LOG_BASED"
Setting |
Required |
Default |
Effect |
|---|---|---|---|
|
For MariaDB GTID |
|
Selects MariaDB or MySQL source-specific semantics. |
|
No |
|
Stores a GTID bookmark instead of a filename and position. |
|
No |
Primary host |
Offloads FastSync reads; LOG_BASED continues from the primary. |
|
No |
All visible schemas |
Limits discovery to a comma-separated schema list. |
|
No |
|
Controls rows written per FastSync export batch. |
|
No |
Connector defaults |
Sets session variables after connecting. |
|
No |
CPU count |
Controls concurrent FastSync table exports. |
Common tap settings are documented in YAML configuration. Generate the
full template with pipelinewise init.
Operational notes
binlog_row_imagemust remainFULL; sparse row images can omit values required to reconstruct a target row.The connector interprets
TINYINTas Boolean. Values outside0and1can fail when the target column is Boolean.After an initial FastSync, LOG_BASED or INCREMENTAL replication continues from the captured bookmark in the Singer portion of the same run.
Snowflake Singer, FullSync, and PartialSync can target managed Iceberg v3 with explicit tap-level configuration. See Snowflake Iceberg tables.
On an explicit v3 route with
engine: mariadb, MariaDB’s generatedJSON_VALIDconstraint identifies itsJSON-aliasLONGTEXTcolumns forVARIANTloading. PlainLONGTEXTand native routes remain strings. Object, array, string, number, Boolean, and null JSON roots are carried as validated JSON text and restored asVARIANT. JSON null remains distinct from SQLNULL.Use Troubleshooting for missing-binlog and packet-size failures.