
Бэкап DuckDB: CHECKPOINT, EXPORT DATABASE и копия файла в S3
Бэкап DuckDB без битых копий: CHECKPOINT и WAL, EXPORT DATABASE в Parquet, COPY FROM DATABASE, Python, cron и systemd, загрузка в S3, проверка и восстановление.
DuckDB
DuckDB хранит всё в одном файле — и это одновременно удобство и риск. dbsend сохраняет файлы .duckdb версиями в российском облаке, показывает, какие таблицы и сколько строк в каждой версии, и возвращает нужную версию одной командой.
DuckDB часто живёт на ноутбуке аналитика, в папке проекта с Jupyter или на сервере ETL. Такие файлы редко попадают в обычную систему бэкапов: они слишком большие для git, а в облачный диск их копируют вручную и нерегулярно.
Пересчёт витрин бывает дорогим: исходные выгрузки могли устареть или исчезнуть, а скрипты загрузки — измениться. Потеря файла с накопленными агрегатами означает часы или дни повторной работы.
Есть и техническая тонкость: если скопировать файл, пока в него пишет процесс, часть изменений может остаться в WAL-файле. Перед копированием нужен CHECKPOINT или закрытие соединений.
Каждая загрузка — версия vN с размером, SHA-256 и меткой. Повторная загрузка неизменённого файла не создаёт дубль.
Для каждой версии видно список таблиц, DDL и оценку числа строк — можно понять, что внутри, не открывая файл локально. Тарифы от «Старт».
Сравните две версии и увидите, какие таблицы появились, исчезли или изменились по числу строк. Удобно после ночного пересчёта витрин.
Одна команда после пайплайна: dbsend backup analytics.duckdb. Коды выхода и повторы при сбоях сети позволяют встраивать её в Airflow, Dagster, cron или GitHub Actions.
Создайте в панели базу с типом duckdb и API-ключ, установите CLI (Node.js 22.12+) и сохраните ключ командой dbsend login.
# Сбросьте WAL в основной файл перед копированием
duckdb analytics.duckdb -c "CHECKPOINT;"
dbsend init --database <id базы> --engine duckdb
dbsend backup ./analytics.duckdb -l "после пересчёта витрин"Если файл открыт другим процессом на запись, сначала завершите его работу или выполните CHECKPOINT из него.
python etl/build_marts.py \
&& duckdb warehouse.duckdb -c "CHECKPOINT;" \
&& dbsend backup ./warehouse.duckdb -l "marts-$(date +%F)"- run: npm install -g @dbsend/sdk
- run: dbsend backup ./warehouse.duckdb -d ${{ vars.DBSEND_DATABASE_ID }} -e duckdb
env:
DBSEND_API_KEY: ${{ secrets.DBSEND_API_KEY }}Переменная DBSEND_API_KEY имеет приоритет над сохранённым ключом — удобно для CI.
dbsend log
dbsend restore <id версии> ./analytics.duckdb --yesCLI скачивает версию во временный файл, сверяет SHA-256 и атомарно заменяет целевой файл.
DuckDB умеет выгружать базу командой EXPORT DATABASE в набор Parquet- или CSV-файлов. Это хороший способ переноса между версиями DuckDB, но для регулярного бэкапа удобнее хранить сам файл .duckdb: он восстанавливается мгновенно, а dbsend показывает его содержимое и diff.
Формат хранения DuckDB стабилен начиная с версии 1.0, но при крупных обновлениях движка всё равно полезно периодически делать и экспорт. Каталог экспорта можно упаковать в архив и хранить в dbsend как generic-файл — с версиями и контрольной суммой.
| cp / rclone в бакет | dbsend | |
|---|---|---|
| Таблицы и оценка строк для каждой версии | от «Старт» | |
| Встраивание в ETL с кодами выхода | свой скрипт | |
| Время на настройку | скрипт, бакет, ключи, ротация — часы | 3 команды — несколько минут |
| История версий с метками | имена файлов по дате | v1…vN, метки, закрепление |
| Не плодит одинаковые копии | ||
| Diff между версиями (таблицы, строки, схема) | на платных тарифах | |
| Проверка SHA-256 при восстановлении | если написали сами | |
| Алерт, если бэкап не пришёл | Telegram и email | |
| Шифрование и хранение в РФ | зависит от бакета | AES-256-GCM, РФ |
| Доступ из Claude Code и Cursor (MCP) | ||
| Стоимость | хранилище + ваше время | от 0 ₽ |
Тарифы и лимиты — на странице «Тарифы». Документация: CLI, форматы файлов, MCP.
Файлы DuckDB с расширениями .duckdb, .ddb и .db. Тип базы при создании — duckdb.
Желательно выполнить CHECKPOINT или закрыть соединения перед бэкапом: тогда все изменения окажутся в основном файле, а не во временном WAL. Для read-only файлов ничего делать не нужно.
Да, как generic-файлы: с версиями, SHA-256 и восстановлением, но без разбора таблиц. Для набора файлов упакуйте каталог в архив.
До 100 МБ на бесплатном тарифе, 500 МБ на «Старт», 2 ГБ на «Про» и «Команде». Файлы больше 32 МБ CLI загружает частями автоматически.
Да. Подключите hosted MCP dbsend — агент сможет показать список версий, сравнить две версии и подготовить ссылку на скачивание нужной.

Бэкап DuckDB без битых копий: CHECKPOINT и WAL, EXPORT DATABASE в Parquet, COPY FROM DATABASE, Python, cron и systemd, загрузка в S3, проверка и восстановление.

DuckDB — встраиваемая аналитическая СУБД: колоночное хранение, запросы к CSV и Parquet, отличия от SQLite, PostgreSQL и ClickHouse, примеры на Python и бэкап.

Как проверить, что бэкап базы рабочий: sha256sum, gzip -t, integrity_check, тестовое восстановление в Docker, еженедельный тест в cron и контроль пропусков.
Другие сценарии
Бесплатный тариф: 1 база, 500 МБ и 3 версии навсегда. Карта не нужна.
Начать бесплатно →