Skip to content
Database

Monitor pipeline status

Track replication status, view logs, and troubleshoot issues.

Use the Dashboard to check replication progress, investigate lag, and recover from errors.

Viewing pipeline status#

Open Database > Replication to see each destination's pipeline status.

Pipeline states#

StateMeaning
StoppedNot running; requires a manual start
StartingStarting or replacing the process after a restart
RunningProcess is running
StoppingFinishing in-flight work before stopping
RestartingApplying settings or table state before restarting
FailedReports a startup or runtime failure; can recover automatically
UnknownStatus is unavailable

Running does not confirm that initial sync has finished, the source is connected, or destination writes are complete. Check table states and lag to assess progress.

Viewing detailed pipeline metrics#

Click a pipeline in the list to inspect its metrics and table states.

Running pipeline status page showing replication metrics and a live table
Use the pipeline status page to check replication lag, WAL retention remaining, connection health, and table states.

Table states#

StateMeaning
QueuedWaiting to begin initial sync
CopyingCopying existing rows
CopiedCopy finished; changes made during the copy still need to be applied
LiveFollowing WAL changes, including catch-up after copying
ErrorReplication encountered an error
RestartingRestarting replication for the table from scratch
Not AvailableState is temporarily unavailable during a pipeline state change
UnknownThe Dashboard does not recognize the reported state

Replication lag metrics#

These metrics come from Postgres replication slot state. The pipeline list also shows a byte-based lag value: Caught up means no gap between the confirmed flush position and current WAL position at measurement time. It does not guarantee that every table has finished initial sync or that data is visible to destination queries.

MetricMeaningInvestigate when
Waiting to syncWAL bytes between the confirmed flush position and current Postgres WAL positionThe value keeps growing
WAL retention remainingWAL that can accumulate before the slot risks becoming unusable, based on max_slot_wal_keep_sizeThe value is small or shrinking
Last check-inTime since the last replication feedback to PostgresFeedback is old or missing
ConnectedWhether the replication slot is activeIt says Not connected while the pipeline should be running
Slot statusWhether required WAL is still retainedThe slot is Unreserved or Lost

The Dashboard displays Unlimited when Postgres returns no safe_wal_size. That happens both with unlimited retention and with a Lost slot, so always check slot status. See Postgres replication slot metrics.

Pipelines keeps sending feedback during slow writes and while WAL reading is paused. It repeats the last safe position without acknowledging unfinished writes. A recent check-in and an active connection can therefore coexist with growing lag.

The main slot tracks ongoing replication. Table-sync slots appear temporarily during initial sync and have the same metrics.

Slot statuses#

StatusMeaning
ReservedRequired WAL is retained within the normal WAL size limit
ExtendedRequired WAL is retained beyond that limit; this alone does not mean lag is growing
UnreservedRequired WAL is no longer fully reserved and can be removed
LostRequired WAL has been removed; replication cannot continue from this slot
UnknownSlot state is unavailable or unrecognized

See Respond based on the slot status for recovery actions.

Viewing logs#

Open Logs > Replication for errors, retries, and performance warnings. Include the pipeline ID and relevant errors when contacting support.

Handling errors#

Table errors can pause one table while others continue replicating. Pipeline errors affect the overall process.

Table errors#

Open the pipeline, inspect the table error and any scheduled retry, and fix the cause. If replication cannot safely resume from its saved state, restart replication for the affected tables.

Pipeline errors#

A Failed pipeline can recover automatically. Check logs for persistent connectivity, permission, schema, or destination errors, fix the cause, and restart if needed. Supabase stops pipelines after repeated failures; a Stopped pipeline requires a manual start.

Dealing with replication lag#

Lag grows when Postgres produces WAL faster than Pipelines confirms progress. Some lag is expected during initial sync, write bursts, and recovery from downtime. Sustained growth or shrinking WAL retention requires investigation.

Investigate the lag#

  1. Open the pipeline and compare Waiting to sync with WAL retention remaining and Slot status.
  2. Check Connected and Last check-in for connection or feedback problems.
  3. Check table states for initial sync or table errors.
  4. Open replication logs and look for destination errors, rate limits, retries, or repeated restarts.
  5. Compare the lag trend with source activity, such as bulk imports, large transactions, or long-running writes.

Common causes include a slow destination, source or pipeline resource limits, network latency, and stopped or disconnected pipelines.

Initial sync and table-sync slots#

Pipelines uses one main slot plus up to one temporary slot per active table-sync worker. These slots retain changes made while rows are copied. After copying and catch-up finish, the temporary slot is removed and the table continues through the main slot.

If a table-sync slot is lost, that table must repeat its initial sync. Automatic retries can recover individual tables; a manual table restart temporarily stops the whole pipeline.

To improve copy throughput:

  • Increase Initial sync connections per table when one large table is the bottleneck.
  • Increase Table sync workers when several tables need to copy concurrently.
  • Reduce bulk writes until the table is Live and its lag has caught up.

Higher concurrency uses more source connections, and additional workers need more slots. Increase it only while the source database, network, and destination have capacity. See setting defaults and limits.

Respond based on the slot status#

Slot statusAction
Reserved or ExtendedMonitor the trend. If lag keeps growing, investigate destination performance, source write volume, and logs.
UnreservedRestore connectivity or resolve throughput and write failures before Postgres removes required WAL. Contact support if lag continues to grow.
LostFor a table-sync slot, retry the affected table. For the main slot, use the recovery procedure that follows.
UnknownCheck logs and slot details. If the state persists, contact support with the pipeline ID and error details.

To recover a lost main slot, open Edit pipeline > Advanced settings and set Invalidated slot behavior to Recreate slot. Review the effects below, then click Apply and restart pipeline or Apply and start pipeline, depending on its current state.

This replaces every destination table. Existing source rows are copied only for tables selected for initial sync; excluded tables resume with new changes only. Data processed again is billed again.

Alternatively, stop and delete the pipeline, then create a new one. Deletion automatically removes that pipeline's main slot, table-sync slots, and saved replication state when the source database is reachable. It leaves source tables, existing destination data, and the shared Pipelines installation in place.

Reduce future lag risk#

  • Review the WAL retention recommendation at creation and continue monitoring retention after startup.
  • Publish only the tables and operations you need.
  • Avoid prolonged stops while the source is receiving writes.
  • Schedule bulk writes and initial sync during quieter periods when possible.

Restarting tables#

Restart table replication to rebuild one or more destination tables from scratch, for example after a schema change or an unrecoverable table error. Restart pipeline restarts the process using saved replication progress; it does not request a table rebuild. See pipeline restart and recovery behavior for exceptions during initial sync or lost-slot recovery.

When you restart table replication:

  • All existing data in the affected destination tables is deleted. The original Postgres source tables and their rows are unchanged.
  • For tables selected for initial sync, Pipelines copies all current source rows included by the publication again, then resumes ongoing replication. Tables excluded from initial sync resume with new changes only; their existing source rows are not copied.
  • The table restart resets replication progress only for the selected tables.
  • Data processed again is billed again.

The pipeline stops temporarily to apply the table restart. The Dashboard restarts it automatically, or starts it if it was stopped. Replication for other tables is paused during this process, and their unfinished initial syncs can restart from scratch.

Before restarting, use Edit pipeline to check the Initial sync selection. Include any affected tables whose existing source rows you need to copy again, then apply your changes. Open the pipeline from the list on Database > Replication.

Restart a single table#

  1. Click the restart icon on the table's row.
  2. Review the table name, data replacement, and cost details in the confirmation dialog.
  3. Click Restart replication.

Restart multiple tables#

  1. Click Restart all tables, or open the arrow menu beside it and select Restart failed tables only.
  2. Review the affected tables, data replacement, and cost details. The failed-tables action affects every table that is failed when the request runs.
  3. Confirm Restart all tables or Restart failed tables, matching the scope you chose.

If a table restart fails, refresh the pipeline and table states before retrying. Start the pipeline explicitly if it remains Stopped.