Table of Contents
- Key Features
- How It Works
- Core Concepts
- Prerequisites
- Configuration
- Enabling Journaling
- Granting User Permissions
- Enabling Incremental Load
- Estimating Change Volume
- Housekeeping
Key Features
- Real-time Change Data Capture (CDC): the connector reads native IBM i journal binaries directly, capturing and streaming changes (inserts, updates, and deletes) as they occur, with end-to-end latency typically between 50–200 ms from commit to publication.
- Agentless: no software needs to be installed on the IBM i system. The connector accesses journals remotely via JT400, keeping SQL engine involvement minimal.
- Low System Overhead: lightweight binary parsing keeps CPU impact low on the source partition — typically under 2% at low volumes (<10k changes/min), ~5% at moderate volumes (~50k changes/min), and 10–15% at high volumes (100k+ changes/min) — leaving headroom for business-critical workloads.
- High Throughput: continuous streaming with exact receiver offset tracking sustains more than 50k changes/sec on mid-range Power9 systems and remains stable under burst load.
- Initial Load: the connector automatically performs an initial full table load using JDBC + SQL snapshots.
- Fault-tolerant: the connector tracks exact journal receiver offsets and resumes replication from the last known position in case of failures, ensuring data consistency and minimal downtime.
How It Works
The connector combines two mechanisms:- Snapshots: initial full loads are performed over JDBC using SQL.
- Change capture: ongoing changes are read directly from the native IBM i journal binaries attached to your physical files, via a remote procedure call (RPC) approach over JT400. Rather than polling journals through SQL, the connector streams raw journal entries continuously and tracks exact receiver offsets, minimizing load on the SQL engine and transferring changes in a compact binary format.
Core Concepts
- Journal Receiver: the physical storage object containing change records with before-and-after data images, metadata, timestamps, and transaction information.
- Journal: the database tracking mechanism that records changes to specific database objects, maintains metadata, and points to Journal Receivers.
- Journal Library: the repository storing journal definitions and organizing journal objects.
- Journal Receiver Library: a separate storage location for Journal Receivers, enabling better organization and maintenance.
Prerequisites
- The tables you want to ingest must be journaled. See Enabling Journaling
- You will need a user with the necessary permissions. See Granting User Permissions
- For incremental load support, a signal table must be created and journaled. See Enabling Incremental Load
Configuration
| Field | Required | Description |
|---|---|---|
| Host | Yes | Hostname or IP address of the IBM i system |
| Port | — | The connector uses port 446 for IBM i access (fixed, not exposed as a form field) |
| User / Password | Yes | IBM i user profile and password |
| Schema (Library) | Yes | IBM i library containing the tables to replicate (e.g. MYLIB) |
Advanced Options
| Field | Default | Description |
|---|---|---|
| Initial Load | true | Snapshot existing rows before streaming journal changes |
| Poll Interval (ms) | 2000 | How often the connector polls for new journal activity |
| Unicode Escape | false | Apply Unicode escape handling for special characters in field names |
| Transaction Buffered | false | Buffer transactions and emit changes only after commit, avoiding partial or uncommitted rows downstream |
| Incremental Load | false | Enable incremental load via the signal table — see Enabling Incremental Load |
Connecting through an SSH Tunnel
If the database is only reachable through a bastion host, enable SSH Tunnel and provide:| Field | Required | Description |
|---|---|---|
| SSH Host | Yes | Hostname or IP of the bastion host |
| SSH Port | Yes | SSH port (default 22) |
| SSH User | Yes | User to authenticate as on the bastion |
| SSH Private Key | Yes | Base64-encoded private key for the SSH user |
Table Selection
After a successful credential check, pick the tables to replicate from the discovered list. Only journaled tables can be selected — the list indicates the journaling status of each table. The selection is stored as a comma-separated whitelist.Enabling Journaling
To capture changes, the tables you want to track must be journaled. If your tables are already journaled, you can skip to Granting User Permissions.-
Create a Journal Receiver:
-
Create a Journal attached to the Receiver:
-
Start journaling the tables you want to track:
-
Enable before/after image capture (recommended):
Capturing both before and after images is required to correctly handle updates to Primary Key columns.
Granting User Permissions
The connector’s user profile needs the following authorities. No SQL-level SELECT authority is needed on system UDTFs.- *EXECUTE authority on the journal library and the receiver library
- *USE and *OBJEXIST authority on the journal object
- *USE authority on the journal receivers
Enabling Incremental Load
To enable incremental load, the connector uses a signal table:-
Create the signal table:
-
Journal this table in the same journal as the tracked tables:
- Grant the user write permissions on this table (this table only — no write access is needed anywhere else).
Estimating Change Volume
You can estimate your daily change volume by counting journal entries over the last 24 hours:Housekeeping
Journal Receiver Retention
Journal receivers take up disk space, so it is best practice to delete old ones regularly. There is a tradeoff between retention and the operational resilience of your replication pipeline: longer retention gives you more time to recover from outages before having to resync, while shorter retention takes up less space. We recommend a maximum retention of 7 days, and a minimum of 1 day depending on your requirements.-
Delete journal receivers older than 7 days:
Wildcard patterns are supported (e.g.
RECEIVER_NAME*). You can schedule this command periodically usingWRKJOBSCDE. -
Monitor active receivers:
-
Monitor receiver disk usage:
Stopping and Restarting CDC
-
Stop CDC connectivity:
-
Restart CDC connectivity:
Disabling Journaling
- Stop journaling a table: