Ремонт БД

Перенос на другой сервер.

 • Просмотры: 990
t4
t4p2
Откуда: Okayma
Благодарил (а): 9 раз
Сообщения: 134
Зарегистрирован: 31 июл 2015, 20:34
Сообщение

Ремонт БД

24 май 2016, 14:33

Случилась беда. На моем локальном сервере перестал загружаться Windows. Файлы были сохранены методом копирования.
После переустановки сервера перестала работать БД.

Код: Выделить всё

[b]Общая ошибка[/b]
SQL ERROR [ mysqli ]
Table 'forum.phpbb_dm_linkx' doesn't exist [1146]
Решила сравнить, как состоит база данных, и обратила внимание, что таблица состоит из 3 типов файлов:
.frm
.MYD
.MYI
Так вот, в таблице phpbb_dm_linkx всего один файл .frm

Никак уже БД не починить? Файлы копировала на флешку без ошибок, ничего не пропускала.
Аватара пользователя
PPK
Администратор
Благодарил (а): 82 раза
Поблагодарили: 1621 раз
Сообщения: 10284
Зарегистрирован: 21 мар 2009, 17:13
Сообщение

Ремонт БД

24 май 2016, 15:35

Скорее всего эта таблица у вас была в формате InnoDB, а остальные MyIsam, Google: восстановление innodb из файлов
t4
t4p2
Откуда: Okayma
Благодарил (а): 9 раз
Сообщения: 134
Зарегистрирован: 31 июл 2015, 20:34
Сообщение

Ремонт БД

24 май 2016, 16:01

PPK писал(а):Скорее всего эта таблица у вас была в формате InnoDB
При просмотре фарматов .frm часто встречаются надписи InnoDB
По Вашей ссылке нашла решение проблемы (
 Скрытый текст. Для просмотра нужно зарегистрироваться
):
вот пришлось воспользоватся innodb-tools.
и всё вышло... как раз востанавливал из *.frm + *.ibd

выглядит это так:
1. Cкачать и скомпилировать innodb-tools в рабочую папку.
2. остановить базу, и скопировать файлы : *.ibd, скажем в папку ./db/
3. создать ( можно пустую ) структуру таблиц ( очень рекомендуется 100% порядок полей )
4. далее шаги применять к каждому *.ibd файлу по отдельности:
4.1. ./create_defs.pl --host=172.16.205.132 --user=dbuser --password=password --db=dbname --table=dbtable > include/table_defs.h
4.2. пересобрать скрипты: make
4.3. запустить парсер: ./page_parser -5 -f ./db/dbtable.ibd
4.4. протестировать: ./constraints_parser -5 -f ./pages-1306247264/0-93/4-00000004.page
4.5.1. еслти проблемы, поправить файл: include/table_defs.h, и перейти к п. 4.2.
4.5.2. еслти нет проблем, склеить страницы: find ./pages-1306244252/0-121/ -type f -name '*.page' | sort -n | xargs cat > ./pages-1306244252/dbtable_allpages
4.6. перегнать файл страниц в простой дамп: ./constraints_parser -5 -f ./pages-1306244252/dbtable_allpages > ./pages-1306244252/dbtables.tsv
4.7. убрать если надо - пустые и дубль записи, любым редактором, не портящим структуру.
4.8. ну и импортировать данные в базу данных:
LOAD DATA INFILE '/tmp/customer_data.tsv'
REPLACE INTO TABLE customer
FIELDS TERMINATED BY '\t'
OPTIONALLY ENCLOSED BY '"'
LINES STARTING BY 'customer\t'
(customer_id, store_id, first_name, last_name, email,
address_id, active, create_date, @last_update)
SET last_update = FROM_UNIXTIME(@last_update);



вот собственно и всё.

Только у меня все останавливается на шаге 4.1

А Вы раньше сталкивались с подобными проблемами? Я могла бы просто упаковать в архив, а Вы бы починили бы :oops: , Я уверена, что у Вас получится намного быстрее, чем у меня :?
Аватара пользователя
zip
Благодарил (а): 372 раза
Поблагодарили: 80 раз
Сообщения: 865
Зарегистрирован: 04 янв 2010, 09:11
Сообщение

Ремонт БД

14 июл 2016, 22:08

Национальный Татарский BitТоррент-Трекер

Вернуться в «Ошибки, проблемы, недочёты»