Миграции и резервные копии базы данных
На этой странице описано, как dinary-server управляет DuckDB-файлами и как безопасно делать их резервные копии.
Файлы базы данных
Сервер хранит данные в директории data/:
config.duckdb- справочные данные: категории, группы, теги, магазины и mapping-таблицыbudget_YYYY.duckdb- транзакционные данные за год: расходы и задания синхронизации
Миграции
Изменения схемы управляются через миграции yoyo.
Когда миграции запускаются автоматически
- При старте приложения
config.duckdbавтоматически мигрируется до последней версии - При первом открытии годовой базы
budget_YYYY.duckdbона автоматически создается и мигрируется - Во время
inv deploydeploy-скрипт применяет миграцииconfig.duckdbдо перезапуска сервиса
Для новой установки ручной шаг миграции обычно не нужен.
Ручные команды миграции
Если вы хотите применить миграции явно на сервере:
inv migrate-config
inv migrate-budget --year=2026
Используйте migrate-budget для любого года, чей файл budget_YYYY.duckdb уже существует или должен быть создан заранее.
Стратегия резервного копирования
DuckDB хранит данные в локальных файлах, поэтому резервное копирование здесь файловое.
Что нужно сохранять
Сохраняйте всю директорию data/, включая:
config.duckdb- все файлы
budget_YYYY.duckdb data/.deployed_version, если хотите сохранить метаданные деплоя
Когда рекомендуется делать backup
Создавайте резервную копию:
- перед
inv deploy - перед ручным запуском миграций в production
- перед любыми ручными изменениями файлов в
data/
Команда backup
Чтобы скачать данные сервера локально:
inv backup
По умолчанию команда копирует удаленную директорию data/ в ./backups/.
Можно указать другой путь:
inv backup --dest=./my-backups
Восстановление
Чтобы восстановиться из backup:
- Остановите работающий сервис
- Замените содержимое
data/файлами из резервной копии - Запустите сервис снова
- Выполните
inv migrate-configиinv migrate-budget --year=YYYY, если хотите принудительно проверить миграции после восстановления
Так как база файловая, восстановление обычно сводится к копированию файлов.
Практические рекомендации
- Держите как минимум одну резервную копию перед каждым деплоем
- Считайте
data/источником истины - Не редактируйте DuckDB-файлы, пока сервис активно в них пишет
- Если копируете файлы вручную, предпочтительно делать это при остановленном сервисе