Восстановление данных InnoDB в MySQL

После очередного «небольшого конфуза» с моим мускулом, он перестал загружаться.
Решено было переустановить его и встала проблема, как сделать дампы баз данных?

Большинство моих таблиц имели тип InnoDB.
В наличии у меня было:

ibdata1 — 1Гб
ib_logfile0 — 5 Мб
ib_logfile1 — 5 Мб

Пришлось все это дело лить на локалку — дабы безопасно потестить и найти метод восстановления. Запаковал весь /var/db/mysql и слил себе.

Подкинули ссылку на статью, в которой точно такая же ситуация. Только я восстанавливал на ноутбуке, винде.

Итак, на локальном серверу MySQL мы подменяем папку Data, которую мы слили из /var/db/mysql.

Сервис MySQL естественно надо остановить (Панель управления / Администрирование / Службы / MySQL » Остановить).

1. заходим в папку с бинарниками мускла и запускаем mysql с параметрами восстановления InnoDB

1
2
3
4
C:\Users\epsyl>F:
F:\>cd F:\Web\MySQL\MySQL Server 5.0\bin\
F:\Web\MySQL\MySQL Server 5.0\bin>
mysqld --innodb_log_file_size=5242880 --innodb_force_recovery=6

2. в лог-файле должно появиться примерно следующее:

1
2
3
4
5
6
InnoDB: The user has set SRV_FORCE_NO_LOG_REDO on
InnoDB: Skipping log redo
100206  6:01:39  InnoDB: Started; log sequence number 0 0
InnoDB: !!! innodb_force_recovery is set to 6 !!!
100206  6:01:39 [Note] mysqld: ready for connections.
Version: '5.0.16'  socket: ''  port: 3306  Official MySQL binary

3. открываем еще одну коммандную строку и делаем дампы наших баз данных

1
2
F:\Web\MySQL\MySQL Server 5.0\bin>mysqldump -uroot -pPASSWORD DATABASE > db.s
ql

* не забываем, что логин и пароль – не от локального мускула, а от того, что мы восстанавливаем.

Вот и все, таким образом были восстановлены дампы всех баз данных.
Также хочу предостеречь от использования знака «-» в именах таблиц и баз данных, при этом инциденте — они у меня преобразовались в @002d.

p.s.
боже храни Дуда за ссылку на статью
и отдельное мега-спасибо Эдворду, практически персональному админу :)


06.02.2010

Тэги: , , , , ,

Комментарии3 Есть что сказать?

Проблемы с установкой iMagick на FreeBSD

Устанавливал расширения к php.
Установил GD, установил imagick из портов.

Оказалось, что iMagick использует старую версию библиотеки JPEG.

Fatal error: Uncaught exception ‘ImagickException’ with message ‘Wrong JPEG library version: library is 70, caller expects 62

Сначала рыл инет на эту тему, поставил portmaster, обновил JPEG и все зависимые либы

1
portmaster -dRrf jpeg-7

Не помогло Оо.

Решил обновить само pecl’овское расширение imagick.

Скачал imagick 2.3.0, установил по инструкции.

1
2
3
4
5
6
7
8
wget http://pecl.php.net/get/imagick-2.3.0.tgz
tar -xzf imagick-2.3.0.tgz
cd imagick-2.3.0
phpize
./configure
make
make install
echo "extension=imagick.so" >> /usr/local/etc/php/extensions.ini

Теперь у нас выскакивает проблема:

Fatal error: Uncaught exception ‘ImagickException’ with message ‘Wand contains no images `MagickWand-1′ @ magick-image.c/MagickSetImageFilename/9326′ in …

Хорошо, переустанавливаем ImageMagick!

Заходим сюда: http://www.imagemagick.org/script/install-source.php#unix, тащим последнюю сборку и устанавливаем себе.

1
2
3
4
5
6
wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz
tar -xzf ImageMagick.tar.gz
cd ImageMagick-6.5.6-2
./configure
make
make install

Рестартим апач и ура!

FreeBSD 7.2 64 bit.


21.09.2009

Тэги: , , ,

Комментарии4 Есть что сказать?