TGViewer
Data Engineering Digest Data Engineering Digest @dataengineeringdigest · 1.17K subscribers
Post #45 1.82K
Николай Ижиков — One More Way to Make Backup in Ignite

Сложность: 3/3 (Обязательно к прослушиванию, если вам интересна работа с OLTP-нагрузкой и технические подробности снятия бэкапов)

Николай Ижиков, Platform V DataGrid Tech Lead, а также контрибьютор в Apache Kafka и участник PMC Apache ignite, рассказывает нам, как реализованы бэкапы в Platform V DataGrid, а главное — про cache dumps.

YouTube: https://www.youtube.com/watch?v=A3EkvdGK4Jg
VK Видео: https://vkvideo.ru/video-147464741_456239442

🔍 Условия:
Кластер процессинга: 32 узла, 700 ГБ RAM на узел, 40к RPS на узел.
Кластер токенизатора: 5 узлов, 550 ГБ RAM на узел, 500к RPS.

⚙️Падение СУБД

1️⃣ Однонодовая СУБД — после падения приложение не работает, Запросы не обслуживаются, данные теряются при простое.
2️⃣ Распределенная СУБД — спектр последствий разный. Может снижаться перфоманс, может теряться часть данных.

⚙️Метрики восстановления после аварии

Recovery Point Objective — целевая точка восстановления, после которой мы теряем данные. Мы оцениваем время, в течение которого мы теряем данные за этой точкой.

Recovery Time Objective — с её помощью мы оцениваем время, затраченное на восстановление системы после аварии.

🛠 Способы формирования бэкапов (рекомендуется изучить презентацию к докладу):

1️⃣ Apache Ignite: ребаланс данных, позволяет сохранить данные, если количество упавших нод меньше бэкап-фактора.

2️⃣ DataGrid: при ребалансе данных распределение партиций такое, что у стойки есть дублер. Позволяет восстановиться при падении стойки.

3️⃣ Apache Ignite: CDC обеспечивает асинхронную логическую репликацию данных. RPO ➡️ секунды, RTO ➡️ 0. Данные реплицируются в другой кластер через WAL, доступ к данным открывается после перемещения сегмента в архив. Из-за этого RPO сдвигается.

4️⃣ Data Grid: Online CDC внутри ноды есть буфер данных, который наполняется событиями и из него данные стримятся в соседний кластер. RPO ➡️ 0, RTO ➡️ 0. Растет потребление памяти, при переполнении используется классический CDC через WAL.

5️⃣ Снапшоты в Apache Ignite: системный процесс PME делает stop the world. Начатые транзакции заканчиваются, новые стоят на паузе. В этот момент происходит копирование партиций, изменения пишутся отдельно, после снятия резервной копии изменения накладываются поверх снимка. RPO ➡️ часы, RTO ➡️ 0

6️⃣ Apache Ignite: инкрементальный снапшот снимает только изменения в данных, но часто. Система не блокируется. RPO ➡️ минуты, RTO ➡️ минуты. В докладе даны ссылки на статьи по этому механизму.

🔮 Cache dump

📝Задачи и качества метода:
1️⃣ консистентный бэкап in-memory кэшей с учетом транзакций без прерывания пользовательской нагрузки;
2️⃣ Восстановление данных на любую топологию;
3️⃣ Поддержка CLI;
4️⃣ API offline обработка

⚙️⚙️ Механизм снятия дампа:
1️⃣ Stop the world
2️⃣ Данные консистентны; запуск писателей дампа
3️⃣ Для сохранения консистентности установка listener'ов на изменения кэша
4️⃣ Запуск транзакций
5️⃣ Итерация по партициям и запись row by row
6️⃣ Запись данных listener'ом

🪛 Тонкости:
1️⃣ Откатиться, если где-то ошибка — Distributed Process.
2️⃣ Не перегрузить ноды системным процессом - прежде всего операции пользователя.
3️⃣ Запоминание изменений каждого ключа — это дорого по памяти.

📝 Эффективная фильтрация:
1️⃣ Итератор по партиции не транзакционный
Listener должен сохранить entry до изменения
2️⃣ Итератор сортированный (B+дерево)
3️⃣ У каждой записи есть уникальная версия. Версия выдается на primary.

❔Ответы на вопросы:

Q: cache dump можно снимать не только для in-memory cache, но и для персистентного кэша?
A: Можно, вопрос целесообразности. Для persistent cache есть более подходящие способы.
Q: Уточнение по процессу: если версия ключа более новая, то итератор её пропускает. Как все значения ключей попадают в запись бэкапа?
A: Если версия старше версии в момент снятия, то эти данные либо пришли после запуска процесса снятия бэкапа, либо старые данные были изменены во время снятия и эти изменения записаны listener'ом.
YouTube Николай Ижиков — One More Way to Make Backup in Ignite Подробнее о конференции SmartData: https://jrg.su/aTWU2K — — Скачать презентацию с сайта SmartData — https://jrg.su/bYCt0V Спикер разработал еще один способ создания резервной копии данных в Apache Ignite. Он называется cache dumps. В докладе — про API,…
  • ❤ 8
  • 🔥 5
  • 👍 2
  • 🏆 2
More from @dataengineeringdigest
  1. Oct 10, 2026✨ Сергей Харитонов — Физиология лидерства: как тимлиду оставаться в ресурсе Сложность: 1/3…
  2. Oct 1, 20265 октября начнется 19-й поток программы Data Engineer от Newprolab Программа для junior- и…
  3. Oct 1, 2026Прошу простить, уже долгое время не могу выделить время на полноценный пост о интересных д…
  4. Sep 23, 20265 октября начнется 19-й поток программы Data Engineer от Newprolab Программа для junior- и…
  5. Sep 6, 2026Ещё один доклад из которого не получился пост по причине того, что админ очень не любит sp…
  6. Sep 5, 2026photo post
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →