You already know the options for getting changes out of Informix are thin, and most of them either need triggers, batch SELECT polling, or a full HVR/CDC platform that costs more than the database it's reading from. Log Ripper is the alternative built by Informix DBAs, for Informix DBAs.
Log Ripper uses the supported CDC API — cdc_opensess, cdc_activatesess, ifx_lo_read — against syscdcv1. One CDC session per worker thread, one thread per group of tables. INSERT, UPDATE, and DELETE events come straight out of the logical log; no triggers, no shadow tables, no SELECT polling.
Three layers of detection: the cols/var/fix triple, per-column NAME, and per-column TYPE on every TABSCHEMA record. That catches RENAME COLUMN and same-byte-width type swaps that a basic structural check would silently miss. On drift, you can swap to an archived layout and Log Ripper will do a per-column archive-vs-live comparison at startup, and emit synthetic ALTER TABLE statements into the captured stream so the target replays the same migration.
Release one table, run your ALTER, re-acquire it — the rest of the capture keeps running. No daemon restart.
min(last_committed_lsn) is checkpointed to the state file, so a restart picks up exactly where it left off. SIGTERM flushes in-flight transactions to _NO_COMMIT files so nothing on the wire is lost. -R forces a clean restart when you want one. Target-offline buffering with memory ring + mmap spill keeps captures flowing when the destination is briefly down.
PID-file management, sized log rotation, SIGHUP for runtime config reload, RPM and DEB packages with a systemd unit, sysusers / tmpfiles / EnvironmentFile pre-wired. The [LSN] log line shows source head vs each worker's processed position so you can see fall-behind before a DISCARD fires — and any CDC_REC_DISCARD triggers a shell command of your choice (webhook, mail, Slack, pager).
DATETIME and INTERVAL keep their actual qualifier. DECIMAL round-trips to (32, p), with automatic DECFLOAT cast wrap when the target is Db2 (whose parser caps numeric literals at 31 digits). Embedded NULs in CHAR / VARCHAR / LVARCHAR are spliced via CHR(0) so they survive replay. BLOB and CLOB are drained through ifx_lo_open and emitted as X'NN…' hex literals, then converted per-target by the dialect rewriter (BLOB(X'…') for Db2, '\xNN…'::bytea for PostgreSQL, 0xNN… for MySQL, HEXTORAW for Oracle). Nullable before-images get proper WHERE col IS NULL. NCHAR / NVARCHAR pass through byte-oriented; charset transparency for Latin-1 / UTF-8 sources is handled at the connector layer.
SQL files for replay, RFC 8259 JSON, RFC 4180 CSV, Informix direct, native PostgreSQL via libpq, native MySQL via libmysqlclient, native MariaDB via libmariadb, IBM Db2 via the CLI driver, ODBC to anything else, or Kafka via librdkafka.
It runs in production. It survives schema changes. It tells you when it's falling behind.
The Operations guide covers the runtime contract — config reload, lag monitoring, release/acquire for live ALTER, the full set of debug flags.
To discuss how Oninit ® can assist please call on +1-913-732-8892 or alternatively just send an email specifying your requirements.
You get all this for free.. think about what you get if you pay us