@lonelymyp
Живу

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

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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы