Jump to content

Recommended Posts

Posted

Доброго времени суток, дамы и господа.

 

Нужно восстановить удаленную (DROP TABLE) InnoDB таблицу.

 

Есть файлы таблица.frm и таблица.ibd (опция file_per_table включена) с данными почти на момент удаления.

 

Попытался создать пустую базу, в ней создать именно эти таблицы, и затем подменить файлы (чтобы получить "нормальный" бэкап). С MyISAM такое проходит "на ура", но InnoDB отказывается видеть файлы таблиц (вплоть до краха Мускуля).

 

Если кто-то уже решал подобные задачи - поделитесь рецептом.

Posted

таблица.ibd содержит id таблицы, при несовпадении выдаётся ошибка. Метод достаточно прост:

- Создаётся новая БД;

- создаётся новая таблица того же формата;

- alter table test discard tablespace;

- заменяется .ibd;

- alter table test import tablespace;

- в логах текущий(1) и ожидаемый id(n)

- создать (n-2) пустых таблиц

- создать нужную таблицу, discard/.idb/import как выше

- дамп

Posted

скорее всего только из дампа если делали, движок InnoDB это гемморой.

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

 

Прийдется еще и дамп дополнительно настраивать, чтобы от собственных "кривых рук" защититься (удалял ненужную таблицу и "промахнулся") :(

Posted

скорее всего только из дампа если делали, движок InnoDB это гемморой.

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

 

Прийдется еще и дамп дополнительно настраивать, чтобы от собственных "кривых рук" защититься (удалял ненужную таблицу и "промахнулся") :(

"Промахнулся"

Получается что режим работы Мастер - Слейв обладает существенным недостатком. Поэтому делать дампы и хранить их подальше в нескольких местах

Posted

Получается что режим работы Мастер - Слейв обладает существенным недостатком.

Какой такой недостаток? Что резервирование не заменяет собой резервное копирование? Так это и так понятно.

Суть резервирования - держать макисмально актуальные данные на резервном хранилище при отказе основного. Версионирование и т.п. - вторично.

 

В теории - вроде как по бинлогу (если не чистился) можно воссоздать любое состояние БД, но на практике...

Posted

таблица.ibd содержит id таблицы, при несовпадении выдаётся ошибка. Метод достаточно прост:

- Создаётся новая БД;

- создаётся новая таблица того же формата;

- alter table test discard tablespace;

- заменяется .ibd;

- alter table test import tablespace;

- в логах текущий(1) и ожидаемый id(n)

- создать (n-2) пустых таблиц

- создать нужную таблицу, discard/.idb/import как выше

- дамп

 

А "поковыряться" в .ibd hex-редактором и "подправить" id возможно? Структура файлов .ibd где-нибудь расписана?

Posted

Получается что режим работы Мастер - Слейв обладает существенным недостатком.

Какой такой недостаток? Что резервирование не заменяет собой резервное копирование? Так это и так понятно.

Суть резервирования - держать макисмально актуальные данные на резервном хранилище при отказе основного. Версионирование и т.п. - вторично.

 

Таким образом привлекаю внимание 'IVB' к

 

"Дамп не делали, т.к. все базы с мастера реплицируются на слейв (т.е. для случая отказа оборудования - бэкап идеальный)."

 

Горячий резерв - конечно же это не бекап. Это защита от остановки/исчезновения узла/ноды, с минимальным временем простоя и потерей данных.

Posted

Да методы вернуть удаленную таблицу при сохранившихся файлах - есть. НО так бывает не всегда. Обычно файл уходит.

ну завтра ктото напишет delete from <table>; без where.. Или условие неверное. Или еще 100500 разных вариантов. Бакап нужен. Да, при наличии реплики вероятность дойти до необходимости поднятия с бакапа немного снижается. но не более того.

Posted (edited)

Да, при наличии реплики вероятность дойти до необходимости поднятия с бакапа немного снижается. но не более того.

Не снижается она: восстанавливается бакап + воспроизводится журнал запросов из бинлога до "фатального".

 

Да, кстати, бакап тоже надо делать правильно, чтобы потом не было мучительно больно при поиске места откуда же надо этот журнал воспроизводить.

Edited by vitalyb
Posted

ну таки умершая дисковая система запросто уносит и бинлоги. Ага.. А на реплике они уже есть.. Опять же свапнуть слейв в мастер и не торопясь восстанавливать сдохший сервер таки быстрее, чем просто восстанавливать сервер, потом восстанавливать базу, потом туда логи.. Сдохший мастер ставится слейвом к новому мастеру.. если машинки не равнозначные по мощности то опять свапается мастер-слейв. Простои минимальны. Это как 1 или 5 рейд. Сдохший диск заменяется.. но не помогает от удаления файлов, сдыхания более чем одного диска или пожара в ДЦ.

 

А делая бакап неплохо бы время от времени тренироваться оттуда восстанавливаться на тестовой машинке/площадке :) Чтобы убедиться, что данные таки бакапятся, что бакапятся все данные и что мы в курсе как этим потом воспользоваться :) А то инструкция по восстановлению с бакапа осталась только на бакапе :)

Posted

А делая бакап неплохо бы время от времени тренироваться оттуда восстанавливаться на тестовой машинке/площадке :) Чтобы убедиться, что данные таки бакапятся, что бакапятся все данные и что мы в курсе как этим потом воспользоваться :) А то инструкция по восстановлению с бакапа осталась только на бакапе :)

 

Тут скорее иное может приключиться, не хватает например места на fs :)Да и время разворота из tgz бакапа во много гиг - тоже не маленькое. Пользую mysqlhotcopy, пару раз не удалось оперативно подняться... Пришлось дневной бакап сразу перекидывать на резервный сервер.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.