New to Kestra?
Use blueprints to kickstart your first workflows.
Capture real-time MySQL change data with the Debezium binlog trigger in Kestra, filter for DELETE operations, and send instant Slack alerts on every row removal.
Watch a MySQL table for deletions as they happen and get notified in seconds. This blueprint uses Debezium change data capture (CDC) to stream binlog events from MySQL into Kestra in real time, filters for DELETE operations, and sends a Slack alert the moment a row is removed. It solves the gap that polling and scheduled queries leave open: instead of asking the database "what changed since last time" on a fixed interval, the flow reacts to each committed transaction the instant it lands in the binlog, with no missed events and no batch lag.
io.kestra.plugin.debezium.mysql.RealtimeTrigger trigger subscribes directly to the MySQL binary log for the test.employees table, using snapshotMode: NEVER so it streams only new changes and emits one execution per CDC event.trigger.data, including the row column values (first_name, last_name) and the CDC metadata.io.kestra.plugin.core.flow.If task evaluates trigger.data.metadata.operation == 'DELETE' and only runs its branch for deletions.io.kestra.plugin.core.log.Log records which employee was removed, and io.kestra.plugin.slack.notifications.SlackExecution posts a real-time alert to a Slack webhook.Debezium can stream binlog changes, but it does not orchestrate what happens next. Kestra turns each CDC event into a governed execution: the RealtimeTrigger is event driven (no cron, no polling window to tune), every event becomes a versioned run with full lineage and logs, and you get built-in retries, conditional branching, and failure handling around the downstream Slack call. The whole pipeline is declared in one readable YAML file, version controlled and reviewable, instead of glued together with standalone consumer scripts that a database scheduler could never coordinate.
server-id (the flow uses serverId: 12345 on port 13306).test.employees table to monitor.SLACK_WEBHOOK: the Slack incoming webhook URL used by the SlackExecution task to post the deletion alert.docker run -d --name mysql -p 13306:3306 -e MYSQL_ROOT_PASSWORD=root mysql mysqld --server-id=12345 --log-bin=/var/lib/mysql/mysql-bin.log --binlog_do_db=testGRANT REPLICATION SLAVE ON *.* TO 'root'@'%'; then SHOW VARIABLES LIKE 'log_bin';CREATE DATABASE test; and CREATE TABLE test.employees (id INT, first_name VARCHAR(25), last_name VARCHAR(25), city VARCHAR(25));SLACK_WEBHOOK secret in Kestra, then update the trigger hostname, port, username, and password to match your MySQL instance.test.employees to receive an instant Slack alert.If task to act on CREATE and UPDATE operations, not just DELETE.includedTables to capture multiple tables, or point the trigger at a production schema.trigger.data, or route different severities to different Slack channels.