krowinski/php-mysql-replication
A PHP library for reading MySQL binary logs via the replication protocol. Stream binlog events such as inserts, updates, deletes, and schema changes to build CDC pipelines, audit trails, or cache invalidation without polling. Includes typed event classes and a simple consumer API.
databasesIgnore / tablesIgnore config lets a single replication reader target only the tables a feature cares about. That's a product decision enabler: one shared MySQL instance can serve multiple consumers without each one processing the whole write volume, and noisy/irrelevant tables can be excluded without forking the library.TableMapBuilder separates TABLE_MAP_EVENT column-metadata parsing from RowEvent. Cleaner separation around column metadata means DDL changes (added/reordered columns, widened types) are handled in one well-tested place rather than sprinkled through row handling — lowering the cost of shipping schema changes on a CDC-dependent feature.Good fit when:
REPLICATION SLAVE / REPLICATION CLIENT privileges.Look elsewhere when:
log_bin retention or replication grants) — verify this before committing.Specific to v11.1.0: it's a minor release — additive, no stated breaking changes. The throughput and filtering improvements are worth an upgrade evaluation; the opt-in useTableMapMetadata flag suggests a behavior toggle, so validate on a staging replica before rolling to production. Treat the "up to 100%" figure as workload-dependent and re-benchmark against your own event mix.
For executives: We can add real-time data flows (search sync, cache freshness, audit history, analytics feeds) by reading MySQL's own change log instead of building custom hooks into every feature and backfilling the gaps. This release roughly doubles the processing ceiling in tested scenarios and adds table-level filtering, so we cover the same use cases with less infrastructure and less noise. The realistic alternative — a managed CDC platform — carries licensing and a new operational stack. Recommendation: a scoped proof-of-concept on one non-critical pipeline to validate throughput and failover behavior against our actual schema before committing to the roadmap.
For engineering: v11.1.0 extracts TABLE_MAP_EVENT column-metadata handling into a TableMapBuilder and refactors RowEvent to consume it. That's the right seam — DDL and type-mapping edge cases now have one home, and it's where we'd add coverage for schema changes we care about. The new useTableMapMetadata, databasesIgnore, and tablesIgnore options let one reader subscribe narrowly, which cuts per-consumer volume and simplifies multi-tenant or shared-instance setups. The config dump helps on-call. Two asks before adoption: (1) confirm our MySQL tier permits binlog replication and what retention we get; (2) benchmark with our event mix, since the 100% figure is workload-dependent. We also own binlog position/GTID recovery and lag alerting — budget for that explicitly rather than discovering it during an incident.
How can I help you explore Laravel packages today?