Change data capture for MySQL

MySQL to BigQuery, in real time.

Copy your tables once, then stream every insert, update and delete into BigQuery within seconds. Exact copies, full change history, and no pipelines to maintain.

Start for free

Free during early access · No credit card · About 15 minutes to set up

Works with MySQL wherever it runs

How it works

Live in three steps

Guided setup for every major MySQL host. No MySQL or BigQuery expertise needed: we tell you exactly what to click.

  1. Step 1

    Connect MySQL

    Pick your host (RDS, Aurora, Cloud SQL, Azure or self-hosted) and follow the exact clicks to turn on the binary log and create a read-only user.

  2. Step 2

    Connect BigQuery

    Create a service account with two roles and upload its key. We check every permission before you save.

  3. Step 3

    Choose tables, start

    Existing rows are copied from a consistent snapshot, then every insert, update and delete streams in within seconds.

Exact clicks for your MySQL host

Pick RDS, Aurora, Cloud SQL, Azure or self-hosted and follow the steps. The connection test explains any problem in plain English.

Setup guide showing the exact steps to turn on MySQL binary logging in Amazon RDS

Built for production

Everything analytics needs from your database

Not just new rows. Every change, applied correctly, with the tools to fix things when the unexpected happens.

Exact copies, deletes included

Updates and deletes are applied in commit order, so each BigQuery table matches MySQL row for row, not an append-only log.

Schema changes handled

New MySQL columns appear in BigQuery automatically.

Full change history

Every change kept in its own dataset, with operation, order and time.

Partitioning, any time

Set it up front or change it later. The table is rebuilt in place, without re-reading MySQL.

Re-copy one table

Rebuild a single table while the others keep streaming.

Freshness you can see

Per-table timers show the last change in MySQL, when it landed in BigQuery, and when the copy was last refreshed, live to the second.

Lower BigQuery bills

Designed around how BigQuery charges

Your data stays in your own Google Cloud project, so BigQuery bills you directly. We engineered the write path to keep that bill small.

  • Batches with only inserts skip the full-table scan BigQuery bills for updates and deletes.
  • Change history is clustered by sequence, so each refresh reads only the new changes.
  • History is stored with compressed (physical) billing and expires on the schedule you pick.
  • You choose how often tables refresh, from every minute to every hour.
Read the BigQuery cost guide

Example: a 10 GiB table that only receives inserts, refreshed every 5 minutes

8,640 refreshes a month · BigQuery on-demand at $6.25 per TiB

A MERGE with update and delete clauses≈ 84 TiB · $527 / month

Billed for the whole table every time

Quayen: insert-only MERGE≈ 0.17 TiB · $1 / month

Billed for the new rows (10 MB minimum per table)

Batches that do contain updates or deletes still need a full MERGE; partitioning the table limits that to the partitions touched. BigQuery's first 1 TiB of queries each month is free.

Read-only by design

A dedicated MySQL user with SELECT and replication rights only. We never write to your database.

Encrypted secrets

Passwords and service-account keys are encrypted at rest with AES-256-GCM, and connections use TLS when available.

Isolated by organization

Every query is scoped to your organization, with admin and member roles for your team.

How we handle your data →

FAQ

Questions, answered

How much does Quayen cost right now?+

Free during early access: every feature, no credit card. Fair use up to 3 pipelines and 100M changed rows a month per organization. The prices below apply after early access. We'll email you at least 14 days before it ends, and nothing is ever charged automatically: you choose a plan if you want to continue. BigQuery storage and queries are billed separately by Google to your own project.

How does MySQL to BigQuery change data capture work?+

Quayen first copies the tables you choose from a consistent snapshot. It then reads MySQL's binary log (binlog), which records every insert, update and delete, and writes each change to a change-history table in BigQuery within seconds. On a schedule you choose (every minute to every hour), it applies those changes to an up-to-date copy of each table, so the copy always matches MySQL, including deletes.

Does it put load on my production database?+

Very little. After the initial copy, it only reads the binary log, the same mechanism MySQL replicas use. It never writes to your database and uses a read-only user with replication permissions.

Which MySQL hosts are supported?+

Amazon RDS for MySQL, Amazon Aurora MySQL, Google Cloud SQL for MySQL, Azure Database for MySQL Flexible Server, and self-hosted MySQL 8. The setup guide shows the exact settings for each.

Who pays for BigQuery?+

Your data lands in your own Google Cloud project, so BigQuery storage and query costs are billed by Google to you, separately from Quayen. Quayen is designed to keep those costs low: batches that only contain inserts skip the full-table scan BigQuery would otherwise bill for, change history is clustered so refreshes read only new changes, and old history expires automatically.

Can I connect a MySQL database on a private network?+

Yes. Connect through an SSH bastion in the same network: Quayen gives you a public key to add to the bastion, and every connection, including the binary log stream, goes through it. The bastion's host key is pinned on first connection.

Will I know if a pipeline stops?+

Yes. If a pipeline can't keep up for 10 minutes, your organization's admins get an email with the error and a link to the pipeline, and another when it's running again. Quayen keeps retrying automatically in the meantime.

What happens when I add a column in MySQL?+

New columns are added to the BigQuery tables automatically and start filling in from the next change. Existing data is not rewritten.

Can I re-copy a single table without affecting the others?+

Yes. Re-copying a table reads it from MySQL again and rebuilds its BigQuery copy while every other table keeps streaming. Changes made during the re-copy are kept.

How long is the change history kept?+

You choose: 3, 7, 14, 30, 90 or 365 days, or forever. It is stored in its own BigQuery dataset so it doesn't clutter your analytics dataset. If changes ever wait longer than the retention allows, the affected table is re-copied automatically so data is never silently lost.

How are my credentials stored?+

Database passwords and Google Cloud service-account keys are encrypted at rest with AES-256-GCM. You can revoke access at any time by deleting the MySQL user or the service-account key.

Your MySQL data in BigQuery today

Free during early access. Set it up yourself in about 15 minutes, or we'll do it with you on a call.