Documentation Index
Fetch the complete documentation index at: https://docs2.zenskar.com/llms.txt
Use this file to discover all available pages before exploring further.
Overview
PostgreSQL is a powerful, open-source relational database known for its reliability, extensibility, and standards compliance. In Zenskar, you can use PostgreSQL as a data source to import transactional, usage, or customer data for metering, billing, and analytical reporting.Prerequisites
Create a dedicated read-only PostgreSQL user for replicating data. Alternatively, you can use an existing user:You must re-run the above command for each schema from which you expect to replicate data.
Set up a PostgreSQL data-source connector via Zenskar dashboard
- Log into your Zenskar dashboard.
- In the left side bar, click Usage > Data Sources.
- In the top-right corner, click + ADD DATA SOURCE.
- On the Add New Data Source page, configure the PostgreSQL connector.
- Click on the SAVE SOURCE button.
Connector configuration
General configuration
| Field | Description | Required |
|---|---|---|
| Source Name | Enter a unique name for this data source. | Yes |
| Source Type | Select PostgreSQL from the dropdown menu. | Yes |
Connector configuration
| Field | Description | Required |
|---|---|---|
| Host | The hostname or IP address of the PostgreSQL server. | Yes |
| Port | The port on which PostgreSQL listens for incoming connections. | Yes |
| Schemas | The schema you want to replicate in Zenskar. | Yes |
| Database name | The name of the PostgreSQL database to connect to. | Yes |
| Username | The username of the PostgreSQL database. | Yes |
| Password | The password for the database user. | Yes |
| SSL Modes | SSL configuration mode: Available options are: Disable, Allow, Prefer, Require, Verify-CA, and Verify-Full. | Conditional |
Set up a PostgreSQL data-source connector via API
Refer to the create data-source connector API reference.
The
connector_config object is the only part of the request that differs across connector types (such as BigQuery, Snowflake, or Redshift). The create data-source connector API reference provides a generic overview, while this document explains the PostgreSQL-specific structure of connector_config.Request example
PostgreSQL-specific connector configuration
Theconnector_config object contains configuration fields specific to the PostgreSQL data source.
| Field | Description | Required |
|---|---|---|
port | The port on which the PostgreSQL server listens for incoming connections (default: 5432). | Yes |
schemas | List of schemas to be replicated from the PostgreSQL database. | Yes |
ssl | Indicates whether SSL should be used for the connection (true or false). | Yes |
ssl_mode.mode | SSL mode to use for the connection. Supported values: disable, allow, prefer, require, verify-ca, verify-full. | Conditional (required if ssl = true) |
ssl_mode.client_certificate | The client certificate to use when connecting over SSL. | Conditional (required for verify-ca and verify-full) |
ssl_mode.client_key | The private key associated with the client certificate. | Conditional (required for verify-ca and verify-full) |
database | The name of the PostgreSQL database to connect to. | Yes |
username | The username used to authenticate with the PostgreSQL database. | Yes |
password | The password for the specified database user. | Yes |
host | The hostname or IP address of the PostgreSQL server. | Yes |
source_definition_id | The unique identifier for the PostgreSQL connector definition in Zenskar. | Yes |
remote_conn | Indicates whether a remote (SSH tunnel or bastion) connection should be used. | No |
Addendum
SSL modes in PostgreSQL
| SSL mode | Description |
|---|---|
| disable | SSL is disabled. The connection between the client (Zenskar) and the PostgreSQL server is unencrypted. |
| allow | Tries to connect without SSL first; if that fails, retries with SSL. This mode allows either encrypted or unencrypted connections depending on server configuration. |
| prefer | (Default behavior in many clients.) Tries to connect with SSL first, but falls back to a non-SSL connection if SSL isn’t available. |
| require | Always uses SSL to encrypt the connection, but does not validate the server certificate. Ensures encryption but not identity verification. |
| verify-ca | Establishes an SSL connection and verifies that the server’s certificate is signed by a trusted Certificate Authority (CA). Protects against untrusted certificates. |
| verify-full | Establishes an SSL connection, verifies the certificate’s CA, and checks that the server hostname matches the certificate. This is the most secure mode. |
Data replication
Change Data Capture (CDC) replication
Zenskar uses logical replication of PostgreSQL’s write-ahead log (WAL) to incrementally capture data changes, including deletions. You should configure the PostgreSQL data source with CDC when:- You need a record of deletions.
- Your database is large (500 GB or more).
- Your table has a primary key but lacks a suitable incremental cursor field (for example,
updated_at).
Set up CDC
-
Grant
REPLICATIONprivileges to the read-only user: -
Enable logical replication on your PostgreSQL database.
-
For self-hosted or VM environments (bare metal, EC2, GCE, Docker): Edit the
postgresql.conffile:Parameter Description Set value to wal_levelType of logging in the WAL logicalmax_wal_sendersMaximum number of WAL sender processes Minimum 1max_replication_slotsMaximum number of replication slots allowed 1(or higher if other services read from WAL) -
For AWS RDS or Aurora:
- Go to the Configuration tab of your DB cluster.
- Locate your cluster parameter group and set
rds.logical_replication = 1. - Restart your instance manually or during the next maintenance window.
-
For Azure Database for PostgreSQL:
-
Change the replication mode to
logicalfrom the Azure portal, or run:
-
Change the replication mode to
-
For self-hosted or VM environments (bare metal, EC2, GCE, Docker): Edit the
-
Create a dedicated replication slot for Zenskar using the
pgoutputplugin:The output will include the slot name to be filled in the Zenskar setup page. -
Define replication identities for all tables you want to replicate:
Use
FULLfor tables with large or TOASTable fields: -
Create a publication including all tables to be replicated:
The publication name is customizable.
The Zenskar UI allows table selection for CDC, but if a table is not part of the publication, it will not be replicated. If a table lacks a replication identity, Zenskar can create it automatically if the user has sufficient permissions.
Xmin replication
The xmin method is a cursorless replication mode that tracks inserts and updates using PostgreSQL’s internalxmin system column.
Use xmin when:
- There’s no suitable cursor field (for example,
updated_at). - You want to replace a full-refresh sync.
- You are replicating PostgreSQL tables smaller than 500 GB.
- You are not replicating non-materialized views (these are unsupported by xmin).
