SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 12.06.2009 15:04:57

Zafar
Участник
Зарегистрирован: 12.06.2009
Сообщений: 10

Восстановление таблиц Innodb

как восстановить таблицы в формате Innodb.

пробовали:

mysql> CHECK TABLE `discount_transactions_all`;
ERROR 2013: Lost connection to MySQL server during query

REPAIR TABLE `discount_transactions_all`;discount_transactions_all | repair | error    | The handler for the table doesn't support repair

Неактивен

 

#2 15.06.2009 20:58:24

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Восстановление таблиц Innodb

Боюсь, что только из бэкапа. Таблички InnoDB не бьются так, как бьются MyISAM.
Но и восстанавливаться сами по себе не умеют.

Если бэкапа нет — можно попробовать вытаскивать данные из побившейся таблички,
для этого есть ключик innodb_force_recovery.

Неактивен

 

#3 18.06.2009 08:37:08

Zafar
Участник
Зарегистрирован: 12.06.2009
Сообщений: 10

Re: Восстановление таблиц Innodb

Сделали дамп. получилось больше 100 таблиц в текстовом формате.
Теперь как дропнуть таблицы, просто удалить файл ibdata1 ? И как обратно из дампа восстановить в Innodb?

Заранее благодарю.

Неактивен

 

#4 18.06.2009 19:45:23

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Восстановление таблиц Innodb

Да, проще всего удалить все файлики ib* (предварительно остановив сервер), а потом запустить его.
Впрочем, файлики можно оставить (просто переименовать), может, если реально данных очень мало
вытащилось, можно будет каким-то innodb hot backup пробежаться...

Восстановить просто cat *.sql | mysql

Неактивен

 

#5 20.06.2009 17:44:01

Zafar
Участник
Зарегистрирован: 12.06.2009
Сообщений: 10

Re: Восстановление таблиц Innodb

cat UTM5.sql | mysql UTM5 не идет. пишет exist
откопал в логах время когда начались проблемы. может поможет в чем то....


090601 10:14:59  mysqld started
InnoDB: 2 transaction(s) which must be rolled back or cleaned up
InnoDB: in total 2 row operations to undo
InnoDB: Trx id counter is 0 411553792
InnoDB: Starting rollback of uncommitted transactions
InnoDB: Cleaning up trx with id 0 389372908
InnoDB: Cleaning up trx with id 0 384659687
InnoDB: Rollback of uncommitted transactions completed
090601 10:15:02  InnoDB: Started
/usr/local/libexec/mysqld: ready for connections.
Version: '4.0.24'  socket: '/tmp/mysql.sock'  port: 3306  FreeBSD port: mysql-server-4.0.24
090610 13:43:07  InnoDB: error clustered record for sec rec not found
InnoDB: index `first_dtr` of table `UTM5/discount_transactions_iptraffic_all`
InnoDB: sec index record PHYSICAL RECORD: n_fields 4; 1-byte offs TRUE; info bits 0
0: len 4; hex c9de6840; asc   h@;; 1: len 4; hex 80000000; asc     ;; 2: len 4; hex 80000000; asc     ;; 3: len 4; hex 82eea8
95; asc     ;;

InnoDB: clust index record PHYSICAL RECORD: n_fields 19; 1-byte offs TRUE; info bits 0
0: len 4; hex 82eea88c; asc     ;; 1: len 6; hex 0000173565a4; asc    5e ;; 2: len 7; hex 800000002d0084; asc     -  ;; 3: le
n 4; hex 80000fb9; asc     ;; 4: len 8; hex 0000000000000000; asc         ;; 5: len 8; hex 0000000000000000; asc         ;; 6:
len 4; hex 80000076; asc    v;; 7: len 4; hex 800021d6; asc   ! ;; 8: len 4; hex 800012c7; asc     ;; 9: len 4; hex c9de6840;
asc   h@;; 10: len 4; hex c9de61d0; asc   a ;; 11: len 4; hex c9de45b0; asc   E ;; 12: len 4; hex c9d26830; asc   h0;; 13: le
n 4; hex 80000028; asc    (;; 14: len 8; hex 0000000000000000; asc         ;; 15: len 4; hex 40a84b18; asc @ K ;; 16: len 8; h
ex 8000000000000b40; asc        @;; 17: len 4; hex 80000000; asc     ;; 18: len 4; hex 80000000; asc     ;;

TRANSACTION 0 415211737, ACTIVE 9 sec, OS thread id 176086528 fetching rows, thread declared inside InnoDB 234
mysql tables in use 1, locked 0
MySQL thread id 71, query id 2749985 localhost root Copying to tmp table
SELECT SUM(discount),SUM(bytes),t_class,base_cost,account_id,slink_id, SUM(discount_with_tax) FROM discount_transactions_iptra
ffic_all WHERE discount_date>='1238526000' AND discount_date <='1241080860' AND account_id='3974' GROUP BY t_class,base_cost,s
link_id,account_id

InnoDB: Submit a detailed bug report to http://bugs.mysql.com
090610 13:43:07  InnoDB: error clustered record for sec rec not found
InnoDB: index `first_dtr` of table `UTM5/discount_transactions_iptraffic_all`
InnoDB: sec index record PHYSICAL RECORD: n_fields 4; 1-byte offs TRUE; info bits 0
0: len 4; hex c9de6840; asc   h@;; 1: len 4; hex 80000000; asc     ;; 2: len 4; hex 80000000; asc     ;; 3: len 4; hex 82eea8
97; asc     ;;

InnoDB: clust index record PHYSICAL RECORD: n_fields 19; 1-byte offs TRUE; info bits 0
0: len 4; hex 82eea88c; asc     ;; 1: len 6; hex 0000173565a4; asc    5e ;; 2: len 7; hex 800000002d0084; asc     -  ;; 3: l

Неактивен

 

#6 22.06.2009 20:54:59

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Восстановление таблиц Innodb

Ну, разумеется, данные перед началом восстановления надо удалить (стереть ib*, *.frm, если делали дамп
с созданием БД, то и каталог БД).

Неактивен

 

#7 24.06.2009 14:31:35

Zafar
Участник
Зарегистрирован: 12.06.2009
Сообщений: 10

Re: Восстановление таблиц Innodb

paulus написал:

Ну, разумеется, данные перед началом восстановления надо удалить (стереть ib*, *.frm, если делали дамп
с созданием БД, то и каталог БД).

Так и сделал. Проблема решилась! Спасибо!

Неактивен

 

#8 24.06.2009 16:16:17

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Восстановление таблиц Innodb

Не забудьте настроить регулярные бэкапы, чтобы не приходилось так восстанавливать данные еще раз.

Неактивен

 

#9 18.07.2011 13:00:21

Zafar
Участник
Зарегистрирован: 12.06.2009
Сообщений: 10

Re: Восстановление таблиц Innodb

Здравствуйте, у меня такой вопрос:

Как конвертировать таблички на Innodb?

Неактивен

 

Board footer

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