Задавайте вопросы, мы ответим
Вы не зашли.
Бодрое время суток всем!
Интересуют способы обслуживания данного типа таблиц при сбоях.
В мануалах вычитал, что таблицы имеют автоматическое восстановление, но один хостер как-то настораживал, что я могу использовать InnoDB на свой страх и риск и он не сможет восстановить мои данные в случае какого-либо сбоя.
Как можно максимально ограничить простои системы при "поломках" данных таблиц? Или вся сила в mysqldump?
Неактивен
В 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
Неактивен
mysqldump с InnoDB можно использовать с ключем single-transaction, тогда данные будут скопированы на один момент времени, но во время дампа блокировки таблиц нет.
Провайдер говорит так, потому что для MyISAM есть myisamchk, а для InnoDB ручной команды нет. Но myisamchk восстанавливает не все повреджения. Используйте mysqldump + binlog
Неактивен
LazY написал:
1. Если данные в буфере лог-файла, и падает сервер MySQL.
2. Если данные уже в самом лог-файле, но flush не выполнен, но падает не MySQL, а уже вся операционная система.
Соотвественно, если данные уже на диске, то они уже в полной безопасности (в терминах механизма работы InnoDB).
Потеря данных из буфера - не смертельна, данных не так много будет.
Возьму в сравнение MyISAM. Примерно неделю назад, ни один запрос не мог быть выполнен к некоторой таблице, якобы ошибка была в файле данных. Таблица занимала 4Гб и её восстановление заняло в сумме 40 часов. Через пару дней была похожая ситуация, но ошибка уже была в файле индекса. Чтобы не тратить драгоценное время, было решено просто скопировать файлы таблицы из бекапа.
Таким образом, причина поломки таблицы - неизвестна. Вот и интересно, уместны ли такие поломки для InnoDB и если да, то какие возможны способы восстановления? Простое копирование файлов таблиц здесь не поможет, эт я уже вычитал Про mysqldump всё ясно, спасибо.
Неактивен
Поломки могут быть в любой программе. Innodb не содержит внешних средств для восстановления. Как вариант иметь работающую реплику на MyISAM.
Неактивен