SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 14.05.2008 14:04:10

Neval
Гуру
Откуда: Киев
Зарегистрирован: 11.03.2008
Сообщений: 449

Обслуживание InnoDB

Бодрое время суток всем!

Интересуют способы обслуживания данного типа таблиц при сбоях.
В мануалах вычитал, что таблицы имеют автоматическое восстановление, но один хостер как-то настораживал, что я могу использовать InnoDB на свой страх и риск и он не сможет восстановить мои данные в случае какого-либо сбоя.

Как можно максимально ограничить простои системы при "поломках" данных таблиц? Или вся сила в mysqldump? smile


Человек без чувства юмора - не серьёзный человек wink

Неактивен

 

#2 15.05.2008 00:01:49

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Обслуживание InnoDB

В InnoDB данные после успешной транзакции не отправляются сразу на диск, а сначала идут в буфер специального лог-файла InnoDB, потом в сам лог-файл (буфер записи ОС) и только потом уже на диск (после выполнения flush).

Как можно потерять данные:

1. Если данные в буфере лог-файла, и падает сервер MySQL.
2. Если данные уже в самом лог-файле, но flush не выполнен, но падает не MySQL, а уже вся операционная система.

Соотвественно, если данные уже на диске, то они уже в полной безопасности (в терминах механизма работы InnoDB).

MySQL дает возможность регулировать и частоту обновления лог-файла, и интенсивность сбрасывания логов на диск - за это отвечает параметр innodb_flush_log_at_trx_commit, см.
http://www.mysql.com/news-and-events/ne … 00285.html

Неактивен

 

#3 15.05.2008 00:08:39

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Обслуживание InnoDB

mysqldump с InnoDB можно использовать с ключем single-transaction, тогда данные будут скопированы на один момент времени, но во время дампа блокировки таблиц нет.

Провайдер говорит так, потому что для MyISAM есть myisamchk, а для InnoDB ручной команды нет. Но myisamchk восстанавливает не все повреджения. Используйте mysqldump + binlog

Неактивен

 

#4 16.05.2008 12:54:02

Neval
Гуру
Откуда: Киев
Зарегистрирован: 11.03.2008
Сообщений: 449

Re: Обслуживание InnoDB

LazY написал:

1. Если данные в буфере лог-файла, и падает сервер MySQL.
2. Если данные уже в самом лог-файле, но flush не выполнен, но падает не MySQL, а уже вся операционная система.

Соотвественно, если данные уже на диске, то они уже в полной безопасности (в терминах механизма работы InnoDB).

Потеря данных из буфера - не смертельна, данных не так много будет.

Возьму в сравнение MyISAM. Примерно неделю назад, ни один запрос не мог быть выполнен к некоторой таблице, якобы ошибка была в файле данных. Таблица занимала 4Гб и её восстановление заняло в сумме 40 часов. Через пару дней была похожая ситуация, но ошибка уже была в файле индекса. Чтобы не тратить драгоценное время, было решено просто скопировать файлы таблицы из бекапа.

Таким образом, причина поломки таблицы - неизвестна. Вот и интересно, уместны ли такие поломки для InnoDB и если да, то какие возможны способы восстановления? Простое копирование файлов таблиц здесь не поможет, эт я уже вычитал smile Про mysqldump всё ясно, спасибо.


Человек без чувства юмора - не серьёзный человек wink

Неактивен

 

#5 15.06.2008 01:52:24

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Обслуживание InnoDB

Поломки могут быть в любой программе. Innodb не содержит внешних средств для восстановления. Как вариант иметь работающую реплику на MyISAM.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson