HeadlinesBriefing HeadlinesBriefing.com

MySQL CDC в BigQuery: Binlog против периодических синхронизаций

Hacker News •
×

Большинство конвейеров MySQL в хранилище данных используют запланированные синхронизации на основе SELECT, которые сравнивают текущие строки с предыдущими снимками. Этот подход пропускает удаления и промежуточные обновления между запусками и создает большую нагрузку на производственные базы данных во время сканирования больших таблиц.

Захват данных об изменениях (CDC) читает непосредственно из двоичного журнала (binlog) MySQL, захватывая каждый INSERT, UPDATE и DELETE по мере их возникновения, в порядке, с полным состоянием строки. Конвейер CDC, работающий каждый час, фундаментально более надежен, чем пакетная синхронизация, работающая каждую минуту, потому что он захватывает все, что произошло, а не только последний снимок.

CDC через binlog требует определенной конфигурации MySQL: двоичное журнал в формате ROW с полными образами строк (binlog_row_image=FULL), binlog_row_value_options не установлен в PARTIAL_JSON, пользователь репликации с привилегиями REPLICATION SLAVE, REPLICATION CLIENT, SELECT, RELOAD и SHOW DATABASES, уникальный server-id для каждого клиента репликации и достаточное хранение binlog для покрытия простоев (по умолчанию 30 дней).

Управляемые платформы, такие как Erathos, обрабатывают выбор режима снимка, избегание коллизий server-id и логику восстановления при очистке binlogs. После того как CDC правильно захватывает изменения, загрузка данных в BigQuery становится простой — каждое событие изменения сопоставляется с операцией над строкой. Приоритет отдается полноте, а не скорости: конвейер, который иногда отстает, но никогда не ошибается, лучше, чем тот, который срабатывает вовремя, но с неполными данными.

Ключевые сущности: Компании: Erathos, BigQuery, MySQL

Источник: Hacker News · Сводку подготовил HeadlinesBriefing