Hacker News Digest

Тег: #litestream

Постов: 4

Hold Off on Litestream 0.5.0 (mtlynch.io)

Новая версия Litestream 0.5.0 приносит значительные изменения: изменился формат резервных копий, что делает невозможным восстановление из бэкапов предыдущих версий, и обновилась структура конфигурационного файла. Автор подробно описывает процесс миграции, столкнувшись с несколькими проблемами.

Первая проблема возникла при попытке загрузить данные в Backblaze — система выдавала ошибку из-за неверного URI, что потребовало фикса от разработчиков.

Вторая проблема: в новой версии удалили флаг -if-replica-exists, критически важный для проверки наличия бекапов перед запуском приложения. Хотя флаг обещали вернуть в следующей версии, его отсутствие в 0.5.0 создавало сложности.

Третья проблема: даже после исправления конфигурации, процесс восстановления падал с ошибкой transaction not available, что указывало на возможную проблему с транзакционностью в новых бэкапах.

Автор подчеркивает, что несмотря на трудности, он продолжает использовать Litestream за его полезность, но советует подождать с апгрейдом до следующего релиза.

by mtlynch • 14 октября 2025 г. в 16:10 • 80 points

ОригиналHN

#litestream#backblaze#sqlite#docker#go#caddy

Комментарии (15)

  • The user is discussing issues they encountered while implementing lightweight read replicas for a Go SQLite driver, referencing a specific implementation and a GitHub repository.
  • They mention that while there are issues, the concept is workable, and they already have a version that mostly works, noting the massive changelog and that it's not unexpected to have issues given the scope.
  • Other users discuss the benefits of Litestream 0.5.0, including an official Docker image, though one user corrects that there has been an official Docker image for years, since version 0.3.4.
  • One user shares they are staying on an older version (0.3.13) for now due to similar issues but are excited for 0.5.x once it stabilizes, praising the integration of Litestream, SQLite, and Caddy for single-box operations.
  • A user notes the most disruptive part is the migration to a new LTX format, which is hard to do incrementally, and another user reflects on the versioning, noting that being a 0.x release means breaking changes are expected, though it might still be a minor footnote in the software's lifecycle.
  • The original poster concludes by correcting an oversight about the Docker image, noting the badge has been present for years, and speculates that the user who thought the image was new might have had a bad initial experience that discouraged them from trying again.

Litestream v0.5.0 (fly.io) 🔥 Горячее 💬 Длинная дискуссия

Выпуск Litestream v0.5.0 знаменует переход от простого резервного копирования к эффективному восстановлению на определённый момент времени (PITR). Ключевое нововведение — формат LTX, позаимствованный из проекта LiteFS. Вместо потоковой передачи отдельных страниц базы данных Litestream теперь группирует изменения в рамках транзакций, что значительно ускоряет восстановление после сбоя.

Формат LTX решает проблему "горячих страниц" — например, при частых вставках в таблицу с автоинкрементным ключом, когда изменения концентрируются на ограниченном числе страниц. Раньше Litestream обрабатывал каждую страницу отдельно, что замедляло процесс. Теперь транзакции записываются целиком, сокращая количество операций ввода-вывода и ускоряя восстановление. Это делает SQLite ещё более надёжным решением для полноценных приложений.

by emschwartz • 02 октября 2025 г. в 19:02 • 386 points

ОригиналHN

#litestream#sqlite#s3#pitr#ltx#fly.io#litefs#rsync#postgresql#mysql

Комментарии (174)

  • Пользователи обсуждают сложности развертывания SQLite-приложений на Fly.io, включая проблемы с инициализацией и миграцией баз данных.
  • Litestream получает положительные отзывы за простоту использования, низкую стоимость репликации в S3 и надежность как инструмента для резервного копирования и репликации.
  • Обсуждаются технические детали Litestream: поддержка S3-совместимых хранилищ, условные записи для реализации временных lease и планы по реализации read-replicas через VFS.
  • Участники сравнивают Litestream с другими решениями (LiteFS, rsync, управляемые БД), отмечая его операционную простоту и отсутствие необходимости в отдельном сервере.
  • Поднимаются вопросы о практическом применении SQLite и Litestream: восстановление после сбоев, работа с нестабильным интернетом, целесообразность использования против PostgreSQL/MySQL для разных сценариев.

Rails on SQLite: new ways to cause outages (andre.arko.net)

Rails + SQLite: новые способы уронить прод

SQLite встроен в процесс веб-сервера — нет отдельного демона, портов, сокетов; всё хранится в одном файле. Плюс: пропали ошибки подключения к БД. Минус: файл живёт в контейнере, а контейнеры пересоздают, и данные исчезают.

Правило 1: клади БД в персистентное хранилище (EBS, Fly Volumes, …) и включи снапшоты.

Правило 2: веб, кеш, очередь и джобы по умолчанию пишут в тот же файл. Удобно, но воркеры теперь должны видеть этот файл. Запускай воркеры в том же VM, либо разнеси данные по разным БД и настрой database.yml.

Правило 3: SQLite блокирует всю БД на время записи. Параллельные длинные запросы = таймауты. Держи транзакции короткими, используй PRAGMA journal_mode=WAL, synchronous=NORMAL, busy_timeout=5000.

Правило 4: бекапы. sqlite3 db.sqlite3 ".backup backup.sqlite3" — атомарно, без остановки сервиса. Крути каждый час и перед деплоем.

Плюсы:

  • FTS5-индекс из коробки
  • Мегабайты вместо гигабайтов RAM
  • $14/мес на Fly.io при 1 млн запросов
  • Нет Redis, Postgres, S3 — только Rails-контейнер

Итог: SQLite позволяет поднять pet-project за вечер, но требует новых привычек: персистентные диски, WAL, короткие транзакции, общий доступ к файлу. Соблюдай правила — и база не уйдёт в /dev/null.

by ingve • 11 сентября 2025 г. в 18:58 • 173 points

ОригиналHN

#rails#sqlite#postgresql#mysql#fly.io#ebs#fts5#wal#litestream#turbo

Комментарии (55)

  • Автор статьи утверждает, что его сервис «Feed Your Email» возможен только благодаря SQLite, но не объясняет, почему именно SQLite, а не PostgreSQL/MySQL.
  • Многие участники считают SQLite удобным для малонагруженных и внутренних приложений из-за простоты развёртывания и отсутствия отдельного процесса БД.
  • Критики отмечают: при росте нагрузки появляются проблемы с бэкапами, масштабированием, единственным писателем и отказоустойчивостью, смывая преимущества.
  • Часть разработчиков использует обёртки вроде Litestream, Turso или Cloudflare D1, чтобы добавить репликацию и горизонтальное масштабирование к SQLite.
  • В сообществе Rails новый тренд — «по-умолчанию SQLite» для быстрого старта MVP, но опытные пользователи предупреждают о риске «выстрелить себе в ногу» при росте проекта.

SQLite (with WAL) doesn't do `fsync` on each commit under default settings (avi.im)

SQLite в режиме WAL по умолчанию не вызывает fsync после каждого COMMIT.

  • Параметр PRAGMA synchronous=NORMAL (значение по умолчанию) не гарантирует сохранность транзакции при внезапном отключении питания.
  • В этом режиме fsync выполняется лишь:
    – перед контрольной точкой WAL;
    – после завершения контрольной точки;
    – при повторном использовании WAL-файла.
  • Для жёсткой гарантии сохранности нужно:
    PRAGMA synchronous = FULL;
    
    Тогда после каждого COMMIT будет вызываться fsync WAL-файла.

by Bogdanp • 24 августа 2025 г. в 15:40 • 97 points

ОригиналHN

#sqlite#wal#fsync#database#acid#macos#litestream

Комментарии (70)

  • По умолчанию SQLite компилируется с synchronous=FULL, но дистрибутивы или обёртки могут изменить это.
  • Не стоит полагаться на умолчания — явно задавайте параметры, особенно если нужна надёжность.
  • WAL-режим ускоряет работу, но требует общей памяти и нарушает ACID для attached БД.
  • На macOS для гарантированной надёжности нужен F_FULLFSYNC, но Apple использует собственную реализацию.
  • Litestream рекомендует synchronous=NORMAL, так как и так делает регулярные бэкапы.