Задать вопрос
@lonelymyp
Хочу вылезти из минуса по карме.

Как обезопасить базу данных от аварийных выключений?

Разрабатываю программу которая будет собирать данные в БД, пока что ориентируюсь на MySQL.
В базе на ssd диске будут храниться как сырые данные, так и результаты вычислений.
При этом аварийное отключение питания это частая и неустранимая специфика работы.
Как-то можно повысить стойкость БД к внезапным отключениям питания?
Допустима утеря каких-то последних данных, но недопустима порча БД, после перезагрузки и перезапуска ПО работа должна продолжиться.
Возможно есть какие-то специфические настройки БД или стратегии работы с БД которых нужно придерживаться?

UPD
Это относительно портативное устройство с питанием от розетки, батарейное питание не предусмотрено.
И его гарантированно будут случайно выдёргивать из розетки во время работы.
  • Вопрос задан
  • 200 просмотров
Подписаться 1 Средний 9 комментариев
Решения вопроса 1
@YaDr
Почти любая современная БД пишет WAL и fsyncает всё важное. Худшее что случится при внезапном отключении - потеряется то, что не дописалось в WAL.
С mysql есть ряд приколов - надо читать ее доки, не все её storage engines могут в wal.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
twix007
@twix007
ups + автоотключение
Ответ написан
@Tabletko
никого не трогаю, починяю примус
Репликация туда где электричество не выключают

upd:
Ещё вариант - журналируемая файловая система и всё писать на диски строго синхронно. Никаких кэшей и тому подобно. Да это очень медленно.

Но с частыми нештатными отключениями оборудование долго не проживёт.
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Такая конфигурация не имеет право называться базой данных. Присоединяюсь ко всем ораторам. Просто добавлю что портативное устройство должно писать логи операций. Чтобы выполнять разбор полетов и фиксировать что делалось. Можно с ротацией. А база данных должна лежать отдельно. На надежных удаленных серверах.

MySQL - это не совсем DBMS. Это сборный лего-конструктор в котором каждая таблица в отдельности сама определяет свой уровень отказоустойчивости (т.н. engine). Поэтому обсуждать надёжность MySQL нет смысла без обсуждения того как была создана каждая таблица. In general - про надёжность сказать ничего невозможно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы