Як відновити один з моїх баз даних MySQL з .myd
, .myi
, .frm
файлів?
Як відновити один з моїх баз даних MySQL з .myd
, .myi
, .frm
файлів?
Відповіді:
Якщо це таблиці MyISAM, то розміщення файлів .FRM, .MYD і .MYI в каталозі баз даних (наприклад, /var/lib/mysql/dbname
) зробить цю таблицю доступною. Це не повинно бути тією ж базою даних, з якої вони прийшли, той же сервер, та сама версія MySQL або однакова архітектура. Вам також може знадобитися змінити право власності на папку (наприклад, chown -R mysql:mysql /var/lib/mysql/dbname
)
Зауважте, що дозволи ( GRANT
тощо) є частиною mysql
бази даних. Таким чином вони не будуть відновлені разом із таблицями; Вам може знадобитися запустити відповідні GRANT
оператори для створення користувачів, надання доступу тощо. (Відновлення mysql
бази даних можливо, але вам потрібно бути обережними з версіями MySQL та будь-якими необхідними запусками mysql_upgrade
утиліти.)
Насправді, напевно, вам просто потрібні .FRM (структура таблиці) та .MYD (дані таблиці), але вам доведеться відремонтувати таблицю, щоб відновити .MYI (індекси).
Єдине обмеження полягає в тому, що якщо ви знижуєте версію, вам краще перевірити примітки до випуску (і, ймовірно, запустити таблицю ремонту). Новіші версії MySQL, звичайно, додають функції.
[Хоча це має бути очевидним, якщо ви змішуєте та співпадаєте таблиці, цілісність зв’язків між цими таблицями є вашою проблемою; MySQL не хвилює, але ваша програма та ваші користувачі можуть. Також цей метод зовсім не працює для таблиць InnoDB. Тільки MyISAM, але враховуючи файли, які у вас є, у вас є MyISAM]
check table sometable;
а потім запустити ремонт (лише за потреби): repair table sometable;
Я щойно знайшов рішення для цього. Я використовую MySQL 5.1 або 5.6 в Windows 7.
Для цього відновлення не потрібно знаходити файли .MYI та .MYD.
innodb_force_recovery = 4
рівень (не впевнений, що це було потрібно в цьому випадку). Дякувати Богові!
ibdata1
це InnoDB, а не MyISAM.
Варто зазначити одне:
У файлі .FRM є структура таблиці та є специфічною для вашої версії MySQL.
Файл .MYD НЕ специфічний для версії, принаймні, не другорядних версій.
Файл .MYI є специфічним, але його можна залишити та відновити, REPAIR TABLE
як говорять інші відповіді.
Суть цієї відповіді полягає в тому, щоб ви могли знати, що якщо у вас є дамп схеми ваших таблиць, ви можете використовувати це для створення структури таблиці, а потім замінити ці файли .MYD своїми резервними копіями, видалити файли MYI та відремонтувати їх всі. Таким чином ви можете відновити резервні копії в іншій версії MySQL або взагалі перемістити свою базу даних без використання mysqldump
. Я вважаю це супер корисним під час переміщення великих баз даних.
Просто! Створити фіктивну базу даних (скажімо, abc)
Скопіюйте всі ці файли .myd, .myi, .frm в mysql \ data \ abc, де mysql \ data \ - це місце, де зберігаються .myd, .myi, .frm для всіх баз даних.
Потім перейдіть до phpMyadmin, перейдіть до db abc і знайдете свою базу даних.
Я думаю, що ви можете відремонтувати всередині mysql.
Якщо ви бачите такий тип повідомлень про помилки з MySQL: База даних не виконала запит (запит) 1016: Не вдається відкрити файл: 'sometable.MYI'. (помилка: 145) Помилка Повідомлення про помилку: 1034: Неправильний файл ключа для таблиці: 'sometable'. Спробуйте відремонтувати його, тоді у вас, ймовірно, є збій або пошкоджений стіл.
Ви можете перевірити та відремонтувати таблицю з підказки mysql, як це:
check table sometable;
+------------------+-------+----------+----------------------------+
| Table | Op | Msg_type | Msg_text |
+------------------+-------+----------+----------------------------+
| yourdb.sometable | check | warning | Table is marked as crashed |
| yourdb.sometable | check | status | OK |
+------------------+-------+----------+----------------------------+
repair table sometable;
+------------------+--------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------+--------+----------+----------+
| yourdb.sometable | repair | status | OK |
+------------------+--------+----------+----------+
і тепер ваш стіл повинен бути добре:
check table sometable;
+------------------+-------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------+-------+----------+----------+
| yourdb.sometable | check | status | OK |
+------------------+-------+----------+----------+
Я знайшов рішення для перетворення файлів у .sql
файл (потім можна імпортувати .sql
файл на сервер та відновити базу даних), не потребуючи доступу до /var
каталогу, тому для цього вам також не потрібно бути адміністратором сервера.
Тут потрібні XAMPP або MAMP, встановлені на вашому комп’ютері.
C:\XAMPP
) та підкаталога mysql\data
. Повний шлях повинен бутиC:\XAMPP\mysql\data
Всередині ви побачите папки будь-яких інших створених вами баз даних. Копіювати і Вставити папку повний .myd
, .myi
і .frm
файли в там. Шлях до цієї папки повинен бути
C:\XAMPP\mysql\data\foldername\.mydfiles
Потім завітайте localhost/phpmyadmin
в браузер. Виберіть базу даних, яку ви щойно вставили у mysql\data
папку, та натисніть кнопку Експорт на панелі навігації. Вибирає його експортувати як .sql
файл. Потім він з’явиться із запитанням, де зберегти файл
І це все! Тепер у вас (повинен) бути .sql
файл, який містить базу даних, яка була раніше .myd
, .myi
та .frm
файли. Потім ви можете імпортувати його на інший сервер через phpMyAdmin, створивши нову базу даних та натиснувши на імпорт панелі навігації клавішу "Імпортувати", виконуючи кроки, щоб імпортувати її
Ви можете скопіювати файли у відповідний каталог підкаталогу папки даних, якщо це ТОЧНА та сама версія mySQL, і ви зберегли всі пов’язані з цим файли у цьому каталозі. Якщо у вас немає всіх файлів, я впевнений, що у вас виникнуть проблеми.
http://forums.devshed.com/mysql-help-4/mysql-installation-problems-197509.html
Він говорить про перейменування файлів ib_ *. Я це зробив, і це повернуло мені тонус.
Вищеописаний опис виявився недостатнім для того, щоб працювати на мене (мабуть, щільно або ліниво), тому я створив цей сценарій, як тільки знайшов відповідь, щоб допомогти мені в майбутньому. Сподіваюся, це допомагає іншим
vim fixperms.sh
#!/bin/sh
for D in `find . -type d`
do
echo $D;
chown -R mysql:mysql $D;
chmod -R 660 $D;
chown mysql:mysql $D;
chmod 700 $D;
done
echo Dont forget to restart mysql: /etc/init.d/mysqld restart;
Для тих, хто має Windows XP та встановлений сервер MySQL 5.5 - місце для бази даних: C: \ Документи та налаштування \ Усі користувачі \ Дані програми \ MySQL \ MySQL Server 5.5 \ дані, якщо ви не змінили місцеположення в установці MySql Workbench. GUI.