Docs/Getting Started

FAQ

Getting Started

What are the system requirements?

Requirements depend on your deployment method:

Docker deployment:

  • Docker Engine 24.0 or newer
  • Docker Compose v2.20 or newer
  • 2 GB RAM minimum
  • 2 GB free disk space
  • 2 CPU cores minimum (3+ recommended)

Desktop application:

  • Windows, macOS, or Linux
  • 1 GB RAM minimum
  • 1 GB free disk space
  • 2 CPU cores minimum (3+ recommended)

See the OS Compatibility Guide for supported Linux distributions.

What deployment options are available?

  1. Docker deployment (recommended) — containerized solution with all infrastructure components included. Also available as a DigitalOcean 1-Click App.
  2. Desktop application — native app for Windows, macOS, and Linux that bundles all services into a single process.

See Deployment for setup instructions.

Can I transfer data between different operating systems?

Yes. DBConvert Streams connects to databases over the network, so the OS running the source or target database does not matter. You can transfer data between a Windows-hosted PostgreSQL and a Linux-hosted PostgreSQL in either direction.

Choosing DBConvert Streams

Which category does DBConvert Streams fit into?

Three at once:

CategoryTypical toolsWhat DBConvert Streams does
Database IDEDBeaver, DataGrip, Navicat, TablePlus, DbForgeData Explorer, SQL Console, ER diagrams, federated queries
Data migration / ETLAirbyte, Fivetran, Stitch, Hevo, Apache HopLoad mode for one-time bulk loads and schema conversion
CDC / streamingDebezium, AWS DMS, Estuary, StreamSets, StriimCDC mode for real-time replication from WAL / binlog

See the full comparison hub for side-by-side pages.

How does DBConvert Streams compare on pricing and infrastructure?

ToolHostingInfrastructurePricing model
DBConvert StreamsSelf-hostedDocker Compose or desktop appPer-seat license
FivetranManaged cloud (SaaS)None (provider-managed)Usage-based (per row / MAR)
Airbyte OSSSelf-hostedTypically Kubernetes + workersFree (infrastructure cost)
DebeziumSelf-hostedKafka + Kafka Connect + sinkFree (infrastructure cost)
DBeaver / DataGripDesktopNone (client-only)Per-seat license

Do I need Kafka or Kubernetes to run CDC replication?

No. DBConvert Streams runs CDC without Kafka, Zookeeper, or Kubernetes.

  • The only required message broker is NATS.
  • NATS ships with the product — embedded into a single process in the desktop app, included as a container in the Docker Compose stack.
  • No separate installation, configuration, or scaling.

Is there a self-hosted alternative to Fivetran or Airbyte?

Yes. DBConvert Streams is built for this.

  • vs Fivetran — no cloud account, no usage-based fees.
  • vs Airbyte — no Kubernetes, no separate worker pool, single-stack install.
  • Runs on any Linux server, your own hardware, or a desktop machine with Docker.

How does DBConvert Streams compare to database IDEs like DBeaver or DataGrip?

Traditional IDEs are great for browsing and editing, but they don't move data between systems or support real-time replication. DBConvert Streams includes a full database IDE plus migration and CDC in the same workflow.

CapabilityDBeaver / DataGripDBConvert Streams
SQL editor, table browsing, ER diagrams
Query files and S3 with SQL (DuckDB)
Federated queries across connections
Bulk migration between heterogeneous databases
Real-time CDC replication

See Data Explorer for the IDE workflow.

Can I run database replication without managed infrastructure?

Yes. DBConvert Streams deploys on a plain Linux VPS, your own hardware, or a desktop machine. It does not require cloud-managed services, external queues, or third-party connectors. If you can run Docker, you can run DBS.

What is the difference between DBConvert Streams and Debezium?

Debezium captures changes but, in typical deployments, only publishes them to Kafka — separate sink connectors or consumers are needed to land the data. DBConvert Streams handles the full pipeline.

Debezium (typical setup)DBConvert Streams
Source capture
Message transportKafka requiredNATS (bundled)
Target writerSeparate sink connectorBuilt-in
Pipeline scopeCapture onlyEnd-to-end

How much does it cost to replicate MySQL to PostgreSQL in real time?

DBConvert Streams is licensed per seat, not per row or per connector. There are no usage-based fees. See the Pricing page for current plans.

Streams and Data Transfer

How do I choose between Load and CDC mode?

  • Load mode reads existing data in bulk. Use it for initial loads, one-time migrations, or when you do not need continuous replication.
  • CDC mode captures ongoing changes from transaction logs (WAL / binlog). Use it for real-time replication after the initial load.

See CDC vs Load for a detailed comparison.

Can I do initial load and CDC in one stream?

Yes, when supported. Use a CDC stream with Initial Load + CDC enabled.

  • The stream first copies existing rows (initial snapshot).
  • After bootstrap completes, it continues with ongoing CDC changes in the same stream.

If Initial Load + CDC is not supported for your source-target shape, use the two-step pattern: run Load first, then start CDC.

See Initial Load + CDC and the Capability Matrix.

Does DBConvert Streams support resumable initial-load continuation?

Yes, for eligible flows. DBConvert Streams supports resumable chunked snapshot copy for large bootstrap/load paths where the route is eligible.

  • On interruption, the stream can continue from saved chunk state instead of restarting the whole table copy.
  • Eligibility depends on source/target path and execution mode.

See Resumable Load for exact routing and limits.

What does the dataBundleSize parameter control?

The dataBundleSize parameter sets how many rows are grouped per event during transfer (default: 100).

  • Simple tables with few columns: increase for higher throughput.
  • Wide tables or tables with binary/LOB data: decrease to stay within message size limits.

Adjust based on record size, available memory, and network capacity. See Stream Configuration Guide for details.

Can I set limits on stream operations?

Yes. Two limit types are available:

ParameterEffect
numberOfEventsStop after processing this many events
elapsedTimeStop after this many seconds
{
  "limits": {
    "numberOfEvents": 1000000,
    "elapsedTime": 3600
  }
}

How does table structure creation work on the target?

DBConvert Streams can automatically create tables on the target using structureOptions:

  • Automatically maps data types between different databases
  • Creates corresponding indexes

To speed up initial loads, set structureOptions.indexes: "disabled" and create indexes after the data transfer completes.

Common Migrations

How do I migrate from MySQL to PostgreSQL?

Two steps:

  1. Initial load — use Load mode. Schema is mapped automatically from MySQL types to PostgreSQL equivalents.
  2. Ongoing changes — switch to CDC mode to replicate with minimal lag.

See MySQL Load Configuration and MySQL CDC Configuration.

How do I replicate PostgreSQL changes to S3?

Set PostgreSQL as the CDC source and an S3-compatible bucket as the target. Change events are written as JSONL or Parquet files.

Supported providers:

  • AWS S3
  • MinIO
  • Cloudflare R2
  • Any S3-compatible API

See PostgreSQL CDC Configuration and S3-Compatible Storage.

Can I sync MySQL or PostgreSQL to Snowflake?

Can I migrate only specific tables or rows?

Yes. Two levels of filtering are available:

Database Explorer

What can I do with Data Explorer?

Data Explorer lets you browse and work with connected databases directly within DBConvert Streams:

  • Browse tables, views, and functions across connections
  • Examine column definitions, keys, and indexes
  • View and edit table data
  • View DDL statements
  • Visualize table relationships through ER diagrams
  • Run SQL queries via the SQL Console
  • Query local files and S3 objects using DuckDB
  • Run federated queries across multiple sources

See Data Explorer documentation for full details.

How do I access Data Explorer?

Click the Data Explorer icon in the left sidebar. It opens a full workspace with a connection tree, tabs for tables and queries, and a bottom logs panel.

Can I query files and S3 storage with SQL?

Yes. Select a file or S3 connection in Data Explorer, and the SQL Console switches to DuckDB mode. Use read_parquet(), read_csv_auto(), and read_json_auto() to query files directly. See SQL Console — File and S3.

What are federated queries?

Federated queries let you JOIN data across multiple databases and file sources in a single SQL statement. Select two or more connections, assign aliases, and write alias-qualified queries — all powered by DuckDB. See Federated Queries.

Can I run one federated SQL query across MySQL, PostgreSQL, and S3?

Yes. In Data Explorer, federated queries can combine multiple database and file/object sources in one SQL statement.

  • Typical pattern: JOIN MySQL and PostgreSQL tables with data from S3 in a single query.
  • For file/object inputs, common formats include CSV, JSON, and Parquet.

See Federated Queries and SQL Console — File and S3.

Troubleshooting

"Slow consumer, messages dropped" error

This NATS error means the target writer cannot keep up with incoming messages. Reduce dataBundleSize to send smaller payloads per message. For tables with wide or binary-heavy rows, start with a low value (e.g., 10) and increase gradually.

"Data size exceeds max payload" error

This occurs when a single message exceeds the NATS payload limit (default: 1 MB). To resolve:

  1. Reduce dataBundleSize — even to 1 if rows are very large.
  2. If the error persists at dataBundleSize=1, increase the NATS max_payload setting:
port: 4222

jetstream = {
  store_dir: "/data/nats-server/"
}

max_payload: 8MB

PostgreSQL connection timeout after inactivity

The error SendStandbyStatusUpdate failed: write failed: closed appears when a connection times out after roughly 30 minutes of inactivity. Extend the idle timeout in your connection string:

postgres://postgres:[email protected]:5432/mydb?pool_max_conn_idle_time=10h

PostgreSQL checkpoint frequency warnings

If you see checkpoints are occurring too frequently, increase max_wal_size or checkpoint_timeout in postgresql.conf. This is common during large bulk transfers that generate heavy WAL activity.

Security

How are credentials managed?

DBConvert Streams encrypts all sensitive information (database passwords, SSL/TLS certificates, client certificates, API keys). The desktop app stores secrets in an encrypted file under its app data directory. Docker deployments can optionally use HashiCorp Vault. See Credential Management for details.

What SSL/TLS modes are supported?

ModeDescription
DisableNo encryption (development only)
RequireEncrypted connection, no certificate verification
Verify-CAServer certificate verified against CA
Verify-FullFull verification including hostname validation

See SSL Configuration for setup instructions.

Performance

How can I optimize large data transfers?

For initial bulk loads:

  • Use Load mode
  • Disable index creation (structureOptions.indexes: "disabled") and create indexes after the transfer
  • Increase dataBundleSize for simple tables

For continuous replication:

  • Use CDC mode for minimal source impact
  • Monitor resource usage through the Observability dashboard

Additional Resources