Назад | Перейти на главную страницу

Данные в БД MySQL потеряны при откате после перезапуска системы

Несколько дней назад из-за отключения электроэнергии система клиента была перезапущена, что привело к откату БД.

Но из-за этого отката мы потеряли около 2к существующих записей из различных таблиц (которые уже были в БД).

Это похоже на то, что состояние БД перешло в состояние некоторых предыдущих дней (примерно на 2-3 дня назад).

Что может быть причиной ? В журналах ошибок не обнаружено:

2015-01-13 11:16:41 1664 [Примечание] InnoDB: куча памяти InnoDB отключена

2015-01-13 11:16:41 1664 [Примечание] InnoDB: мьютексы и rw_locks используют заблокированные функции Windows

2015-01-13 11:16:41 1664 [Примечание] InnoDB: сжатые таблицы используют zlib 1.2.3

2015-01-13 11:16:41 1664 [Примечание] InnoDB: не используются инструкции crc32 процессора

2015-01-13 11:16:42 1664 [Примечание] InnoDB: инициализация пула буферов, размер = 101,0M 2015-01-13 11:16:42 1664 [Примечание] InnoDB: завершена инициализация пула буферов

2015-01-13 11:16:42 1664 [Примечание] InnoDB: Самый высокий поддерживаемый формат файла - Barracuda.

2015-01-13 11:16:42 1664 [Примечание] InnoDB: порядковые номера журнала 145957754 и 145957754 в файлах ibdata не соответствуют порядковому номеру журнала 146939560 в ib_logfiles!

2015-01-13 11:16:42 1664 [Примечание] InnoDB: База данных не завершалась нормально!

2015-01-13 11:16:42 1664 [Примечание] InnoDB: Запуск восстановления после сбоя.

2015-01-13 11:16:42 1664 [Примечание] InnoDB: чтение информации о табличном пространстве из файлов .ibd ...

2015-01-13 11:17:10 1664 [Примечание] InnoDB: Восстановление возможных наполовину записанных страниц данных

2015-01-13 11:17:10 1664 [Примечание] InnoDB: из буфера двойной записи ... 2015-01-13 11:17:28 1664 [Примечание] InnoDB: 128 сегментов отката активны.

2015-01-13 11:17:29 1664 [Примечание] InnoDB: Ожидание начала очистки. 2015-01-13 11:17:29 1664 [Примечание] InnoDB: запущен 5.6.13; порядковый номер журнала 146939560

2015-01-13 11:17:30 1664 [Примечание] Имя хоста сервера (адрес привязки): '*'; порт: 3306 13.01.2015, 11:17:30 1664 [Примечание] IPv6 доступен. 2015-01-13 11:17:30 1664 [Примечание] - '::' преобразуется в '::'; 2015-01-13 11:17:30 1664 [Примечание] Серверный сокет создан на IP: '::'. 2015-01-13 11:17:35 1664 [Примечание] Планировщик событий: загружено 0 событий

2015-01-13 11:17:35 1664 [Примечание] C: / Program Files / MySQL / MySQL Server 5.6 / bin \ mysqld: готов к подключению.

Версия: '5.6.13' сокет: '' порт: 3306 Сервер сообщества MySQL (GPL)

2015-01-13 11:18:21 1664 [Примечание] C: / Program Files / MySQL / MySQL Server 5.6 / bin \ mysqld: нормальное завершение работы

Среда: Windows 7 + Apache Tomcat 7.0 + сервер Mysql 5.6 + Apache Active MQ

Я сомневаюсь, что какой-либо из механизмов SQL откатывает обновления в течение нескольких дней. Обычно это пара последних транзакций. Он может откатиться на пару дней только в одном случае - у вас примерно 0,5 транзакции в день, и вам повезло, что отключили электричество именно в тот момент, когда транзакция произошла.

Даже если я ошибаюсь, помимо добавления ИБП (очевидный выбор) вы также можете добавить подчиненный / резервный / реплику - как бы это ни называлось в вашем SQL-движке. Может быть добавлен даже автопусковой электрогенератор.

Вы также можете использовать снимки. Например, снимки файловой системы ZFS (не выбор Windows, но все, что вы упомянули, звучит действительно чуждо Windows, поэтому я не знаю, что на самом деле заставило вас использовать для этого Windows) или снимки, предоставленные вашей SAN. Если у вас их нет, вы обязательно должны получить то, что их делает. Или решите - может быть, ваши данные того не стоят (это не сарказм, есть много данных, которые просто не так важны).

Я бы посоветовал добавить ИБП, а затем полностью отключить ваши службы на основании сигнала «нет питания».